Мониторинг Ceph с помощью Proto Observability
На этой странице:
- Сбор метрик Ceph
- Сбор логов Ceph
Сбор метрик Ceph
Интеграция ceph — CLI-ориентированная: на каждом цикле проверки агент
запускает бинарь ceph и парсит JSON-вывод. Под капотом выполняются команды
(все с флагом -fjson):
ceph --cluster ceph mon_status
ceph --cluster ceph status
ceph --cluster ceph df detail
ceph --cluster ceph osd pool stats
ceph --cluster ceph osd perf
ceph --cluster ceph osd metadata
ceph --cluster ceph health detail
Из этого складываются метрики уровня кластера (мониторы, OSD, PG, ёмкость, пулы), уровня OSD (латентности), уровня пула (клиентский ввод-вывод, объекты, утилизация) и service-check’и по health-проверкам Ceph.
Что нужно агенту
Хост (или контейнер), на котором работает агент, должен иметь:
- бинарь
ceph(пакетceph-common) — путь по умолчанию/usr/bin/ceph, переопределяется параметромceph_cmd; - конфиг кластера и keyring —
ceph.conf+ceph.client.admin.keyring(или другой keyring с правами на чтение состояния кластера) в/etc/ceph. Достаточно правmon 'allow r', но обычно используют admin keyring.
JMX тут ни при чём — образ агента подойдёт обычный, без суффикса -jmx.
При запуске агента в контейнере к нему дополнительно нужно добавить пакет
ceph-common (см. ниже).
Альтернатива: Ceph Mgr `prometheus` module
Метрики Ceph можно отдавать и через модуль prometheus менеджера:
ceph mgr module enable prometheus
# метрики становятся доступны на http://<mgr>:9283/metrics
Этот эндпоинт скрейпится openmetrics/prometheus-проверкой. Это другой набор
метрик (имена ceph_* в стиле Prometheus exporter) и другой способ доступа.
Здесь описывается CLI-интеграция ceph — она не требует доступа к
mgr-эндпоинту, работает с теми же командами, что вы запускаете руками, и
является основным путём для этой страницы.
Конфигурация Ceph
Со стороны самого Ceph дополнительной настройки не требуется — нужен лишь доступ к кластеру с хоста агента. Проверьте, что команды отрабатывают из-под пользователя, от которого работает агент:
ceph --cluster ceph status
ceph --cluster ceph health detail
Если они работают, интеграция соберёт метрики. Если у вашего кластера имя
отличное от ceph — задайте его в конфиге проверки параметром ceph_cluster.
Если бинарь ceph доступен только через sudo — добавьте в sudoers строку
pobp-agent ALL=(ALL) NOPASSWD:/usr/bin/ceph
и включите use_sudo: true в конфиге проверки.
Конфигурация ProtoOBP агента
Если агент запускается в виде службы на хосте
Установите пакет
ceph-common, если его ещё нет (он даёт бинарьceph):# Debian/Ubuntu apt-get install -y ceph-common # RHEL/CentOS yum install -y ceph-commonУбедитесь, что
/etc/ceph/ceph.confи/etc/ceph/ceph.client.admin.keyringприсутствуют и доступны пользователю агента на чтение.Создайте файл
/etc/protoobp-agent/conf.d/ceph.d/conf.yaml:init_config: instances: - ## Бинарь ceph (по умолчанию /usr/bin/ceph) и имя кластера (по ## умолчанию `ceph`) определяются автоматически — задавайте только ## при отклонении от дефолтов: # ceph_cmd: /usr/bin/ceph # ceph_cluster: ceph # use_sudo: false # true, если ceph доступен только через sudo ## проверка ceph — cluster-level: метрики кластера/OSD/пулов не привязаны ## к хосту, на котором работает агент. empty_default_hostname: true ## Дополнительные теги на всех метриках, событиях и service-check'ах. tags: - ceph_cluster:cephПерезапустите агента:
systemctl restart protoobp-agent.
Если агент запускается в виде Docker контейнера
В отличие от большинства интеграций, у ceph нет смысла навешивать
autodiscovery-лейблы на контейнер с Ceph — проверка работает не «по сети к
сервису», а через локальный бинарь ceph и файлы в /etc/ceph. Поэтому
схема такая:
Соберите образ агента с
ceph-common. Стоковый образ его не содержит.# agent/Dockerfile FROM registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3 USER root RUN DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold \ ceph-common \ && rm -rf /var/lib/apt/lists/*(Базовый образ агента — Ubuntu 22.04; опции
--force-conf*нужны, чтобы установкаceph-commonне споткнулась на интерактивном вопросе проopenssl.cnf.)Прокиньте в агента бинарь (через образ выше),
conf.yamlи/etc/ceph. Конфиг кластера + keyring проще всего отдать из контейнера с Ceph через общий named volume:services: ceph: image: quay.io/ceph/demo:latest-reef # … (mon/mgr/osd; пишет ceph.conf + keyring'и в /etc/ceph) … volumes: - ceph-etc:/etc/ceph # общий с агентом том protoobp-agent: build: context: ./agent # Dockerfile из шага 1 image: my-protoobp-agent-ceph:7.40.3 pid: host volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro - ./agent-conf/ceph.d/conf.yaml:/etc/protoobp-agent/conf.d/ceph.d/conf.yaml:ro - ceph-etc:/etc/ceph:ro # ceph.conf + ceph.client.admin.keyring environment: - POBP_API_KEY=<ваш ключ> - POBP_POBP_URL=<backend> # … остальное по обычной схеме … volumes: ceph-etc:Содержимое
./agent-conf/ceph.d/conf.yaml— тот жеconf.yaml, что в варианте «служба на хосте» (см. выше).
Контейнер агента
Контейнеру агента нужен бинарьceph (соберите образ с ceph-common)
и доступ к /etc/ceph (ceph.conf + keyring). Если кластер тоже в
контейнере, отдайте /etc/ceph через общий named volume (или используйте
volumes_from). is_jmx/-jmx-образ для этой проверки не нужен.Если агент запускается в Kubernetes
В отличие от большинства интеграций, у ceph нельзя использовать
annotation-based autodiscovery (ad.proto.group/<container>.checks): проверка
работает не «по сети к сервису», а через локальный бинарь ceph и файлы в
/etc/ceph. Поэтому агент с интеграцией ceph ставится отдельным
sidecar-контейнером в том же Pod’е, что и Ceph, чтобы:
- видеть мониторы на общем сетевом namespace Pod’а (
localhost/ pod IP); - читать
ceph.conf+ admin keyring, которые Ceph пишет в общий том/etc/ceph.
Образ агента — с ceph-common (тот же Dockerfile, что для Docker выше).
Контейнер агента работает под root: admin keyring имеет права 0600
(ceph:ceph), читать его может только root. Конфиг проверки отдаётся через
ConfigMap. Логи демонов Ceph при этом собирает кластерный агент (DaemonSet
с POBP_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true) — на Pod навешивается аннотация
ad.protoobp.com/ceph.logs с правилом multi_line (см. раздел «Сбор логов»).
apiVersion: apps/v1
kind: Deployment
metadata:
name: ceph
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: ceph
template:
metadata:
labels:
app.kubernetes.io/name: ceph
annotations:
# логи демонов Ceph собирает кластерный агент (container_collect_all)
ad.protoobp.com/ceph.logs: |-
[{"source":"ceph","service":"ceph","log_processing_rules":[{"type":"multi_line","name":"log_start_with_date","pattern":"\\d{4}-\\d{2}-\\d{2}"}]}]
spec:
containers:
# --- сам кластер Ceph; пишет ceph.conf + keyring в общий /etc/ceph ---
- name: ceph
image: quay.io/ceph/demo:latest-reef
securityContext:
privileged: true
env:
- name: MON_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: CEPH_PUBLIC_NETWORK
value: "10.0.0.0/8" # ОБЯЗАН содержать pod IP (MON_IP)
# ... DEMO_DAEMONS, OSD_TYPE, RGW_NAME=ceph и т.д.
volumeMounts:
- name: ceph-etc
mountPath: /etc/ceph
# --- sidecar: агент с ceph-common, гоняет CLI-интеграцию `ceph` -------
- name: protoobp-agent
image: <ваш-образ-агента-с-ceph-common>
securityContext:
runAsUser: 0 # чтобы прочитать admin keyring (0600)
env:
- name: POBP_API_KEY
valueFrom:
secretKeyRef:
name: protoobp
key: api-key
- name: POBP_POBP_URL
value: http://<backend>
- name: POBP_LOGS_ENABLED
value: "false" # логи собирает кластерный агент
volumeMounts:
- name: ceph-etc
mountPath: /etc/ceph
readOnly: true # root читает keyring и из ro-тома
- name: ceph-config
mountPath: /etc/protoobp-agent/conf.d/ceph.d/conf.yaml
subPath: conf.yaml
volumes:
- name: ceph-etc
emptyDir: {} # ceph.conf + keyring; общий для Pod'а
- name: ceph-config
configMap:
name: ceph-config # тот же conf.yaml, что и выше
Готовый чарт
Полностью рабочий Helm-чарт (Ceph + sidecar-агент + генератор RADOS-трафика, с автоматической чисткой/etc/ceph при рестарте, чтобы каждый старт был
чистым bootstrap’ом) лежит в демо-репозитории: ceph-demo/K8s/helm/. Там же —
scripts/build-images.sh для сборки образа агента с ceph-common.Проверка
Убедитесь, что проверка запустилась и собирает метрики:
docker exec protoobp-agent agent status | grep -A 12 "^ ceph"
Ожидаемый вывод — Instance ID … [OK] и ненулевой Metric Samples
(на одно-OSD кластере Reef с CephFS, RGW и клиентским трафиком — порядка
124 сэмплов за прогон):
ceph (2.7.0)
------------
Instance ID: ceph:56ca34131c0cb58a [OK]
Configuration Source: file:/etc/protoobp-agent/conf.d/ceph.d/conf.yaml
Total Runs: 6
Metric Samples: Last Run: 124, Total: 662
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 19, Total: 114
Average Execution Time : 3.2s
Last Successful Execution Date : <дата>
Список найденных метрик за один прогон:
docker exec protoobp-agent agent check ceph --check-rate | grep -oE '"ceph\.[a-z_.]+"' | sort -u
Что отдаёт проверка прямо сейчас, можно посмотреть и напрямую:
docker exec ceph ceph -s # общее состояние кластера
docker exec ceph ceph df detail # ёмкость и пулы
docker exec ceph ceph osd perf # латентности OSD
HEALTH_WARN — это нормально для одно-OSD кластера
У свежего кластера с одним OSDceph -s обычно показывает HEALTH_WARN
(OSD count 1 < osd_pool_default_size 2, у части пулов «too few PGs»). Это
не мешает сбору метрик — ceph_overall_status уходит как WARNING-service
check, а сами метрики собираются полностью.Собираемые метрики
Все метрики — типа gauge (мгновенное значение), кроме per-pool
ceph_read_bytes / ceph_write_bytes, которые интеграция считает как
rate в секунду из накопительных rd_bytes / wr_bytes пула.
Лейблы
Общие (на всех метриках)
Добавляются агентом и ProtoOBP backend’ом. Поскольку в конфиге обычно стоит
empty_default_hostname: true, лейбл host у метрик кластера может быть пустым.
| Лейбл | Значение |
|---|---|
host | Хост агента (пустой при empty_default_hostname: true) |
ceph_cluster | Имя кластера — из tags: [ceph_cluster:…] в конфиге проверки |
service | Тег service (из service: проверки или POBP_TAGS) |
env | Тег env |
docker_image / image_name / image_tag / short_image | Атрибуты образа, если применимо |
Дополнительно проверка пытается добавить лейблы ceph_fsid (UUID кластера) и
ceph_mon_state (leader / peon / …) — но обе берутся из вывода команды
ceph mon_status, которой в современных Ceph (Quincy, Reef и новее) нет как
cluster-команды (она доступна только через admin-socket). Поэтому на этих
версиях эти лейблы не появляются — ceph_fsid см. в ceph fsid.
Специфичные для Ceph
| Лейбл | Где появляется | Пример |
|---|---|---|
ceph_osd | метрики уровня OSD (apply_latency_ms, commit_latency_ms, osd_pct_used) | osd0 |
ceph_pool | метрики уровня пула (read_bytes, write_bytes, read_op_per_sec, num_objects, pct_used, …) | cephfs_data |
ceph_osd_objectstore | метрики уровня OSD — тип хранилища OSD (из ceph osd metadata) | bluestore |
ceph_osd_device | метрики уровня OSD — устройство(а) OSD | sda |
ceph_osd_device_id | метрики уровня OSD — идентификатор устройства | Crucial_CT500..._1 |
ceph_osd_device_class | метрики уровня OSD — класс устройства | ssd / hdd |
ceph_version | метрики уровня OSD — короткая версия Ceph на OSD | 18.2.4 |
ceph_release | метрики уровня OSD — кодовое имя релиза Ceph | reef |
Метрики уровня кластера
Мониторы
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_num_mons | item | Количество мониторов в monmap |
ceph_num_mons_active | item | Количество мониторов в кворуме |
`ceph_num_mons` на современных Ceph
Check-версия2.7.0 получает количество мониторов из вывода ceph mon_status,
который в Quincy/Reef и новее как cluster-команда отсутствует — поэтому на этих
версиях метрики ceph_num_mons / ceph_num_mons_active могут не отправляться.
Здоровье и кворум мониторов в этом случае контролируйте по service check
ceph_overall_status (MON_DOWN поднимет его в WARNING/CRITICAL).OSD (сводно по кластеру)
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_num_osds | item | Всего известных OSD |
ceph_num_up_osds | item | OSD в состоянии up |
ceph_num_in_osds | item | OSD в состоянии in (участвуют в размещении) |
ceph_num_near_full_osds | item | Количество OSD, близких к заполнению (nearfull) |
ceph_num_full_osds | item | Количество заполненных OSD (full) |
Placement groups
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_num_pgs | item | Всего placement groups |
ceph_pgstate_<state> | item | Количество PG в каждом состоянии. Имя состояния берётся из pgs_by_state с заменой + на _: например ceph_pgstate_active_clean, ceph_pgstate_active_clean_remapped, ceph_pgstate_undersized_peered и т.п. |
Ёмкость и объекты
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_aggregate_pct_used | percent | Использование общей сырой ёмкости кластера (total_used_bytes / total_bytes × 100) |
ceph_total_objects | item | Суммарное число объектов по данным хранилища. Берётся из ceph df detail (stats.total_objects) — на современных Ceph (Quincy/Reef) этого поля в выводе нет, и метрика не отправляется; используйте сумму per-pool ceph_num_objects. |
Пулы (количество)
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_num_pools | item | Количество пулов в кластере |
Метрики уровня OSD
Несут лейбл ceph_osd:osd<N>. Источник — ceph osd perf и (для osd_pct_used)
ceph health detail.
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_apply_latency_ms | millisecond | Время применения обновления на диск (perf_stats.apply_latency_ms) |
ceph_commit_latency_ms | millisecond | Время фиксации операции в журнал (perf_stats.commit_latency_ms) |
ceph_osd_pct_used | percent | Процент заполнения конкретного OSD — отправляется только для OSD, помеченных full / nearfull (значение парсится из строки health-проверки) |
Метрики уровня пула
Несут лейбл ceph_pool:<имя пула>.
Поток клиентского ввода-вывода
Источник — ceph osd pool stats (поле client_io_rate по каждому пулу).
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_read_op_per_sec | operation/second | Чтений в секунду по пулу |
ceph_write_op_per_sec | operation/second | Записей в секунду по пулу |
ceph_op_per_sec | operation/second | Всего операций в секунду по пулу (read + write) |
ceph_read_bytes_sec | byte/second | Скорость чтения по пулу |
ceph_write_bytes_sec | byte/second | Скорость записи по пулу |
Восстановление (recovery)
Источник — ceph osd pool stats (поля recovery / recovery_rate по пулу).
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_misplaced_objects | item | Объектов «не на своём месте» (misplaced) в пуле |
ceph_misplaced_total | item | Всего объектов, относительно которых считается misplaced |
ceph_recovering_objects_per_sec | item/second | Скорость восстановления объектов |
ceph_recovering_bytes_per_sec | byte/second | Скорость восстановления байт |
ceph_recovering_keys_per_sec | item/second | Скорость восстановления ключей (OMAP) |
(Эти метрики обычно нулевые — становятся значимы при ребалансе/деградации.)
Ёмкость и объекты пула
Источник — ceph df detail (секция pools).
| Имя метрики | Единица | Описание |
|---|---|---|
ceph_pct_used | percent | Использование пула: bytes_used / (bytes_used + max_avail) × 100 |
ceph_num_objects | item | Количество объектов в пуле |
ceph_read_bytes | byte/second | Прочитано из пула — rate из накопительного rd_bytes |
ceph_write_bytes | byte/second | Записано в пул — rate из накопительного wr_bytes |
Service checks
Помимо метрик проверка отправляет service check ceph_overall_status (OK /
WARNING / CRITICAL по HEALTH_OK / HEALTH_WARN / HEALTH_ERR) и по
одному service check на каждую из health-проверок Ceph. Полный набор, который
отдаёт check-версия 2.7.0:
ceph_osd_down, ceph_osd_orphan, ceph_osd_full, ceph_osd_nearfull,
ceph_pool_full, ceph_pool_near_full, ceph_cache_pool_near_full,
ceph_pg_availability, ceph_pg_degraded, ceph_pg_degraded_full,
ceph_pg_damaged, ceph_pg_not_scrubbed, ceph_pg_not_deep_scrubbed,
ceph_object_unfound, ceph_too_few_pgs, ceph_too_many_pgs,
ceph_request_slow, ceph_request_stuck.
Набор настраивается параметром collect_service_check_for. Значение каждого —
OK / WARNING / CRITICAL: проверка маппит активные health-checks Ceph
(HEALTH_WARN/HEALTH_ERR) на соответствующий service check, неактивные
уходят как OK.
Ключевые метрики для дашбордов и алертов
Здоровье и доступность кластера
- Service check
ceph_overall_status— основной индикатор.CRITICAL(HEALTH_ERR) — авария;WARNINGна одно-OSD/малом кластере — норма. - Отсутствие свежих серий по
ceph_num_mons/ceph_fsid— агент не получает данные кластера (упалceph-CLI, недоступен/etc/ceph, кластер не отвечает). ceph_num_mons_active < ceph_num_mons— мониторы потеряли кворум (или часть мониторов недоступна).
OSD
ceph_num_up_osds < ceph_num_osdsилиceph_num_in_osds < ceph_num_osds— есть выпавшие/выведенные OSD; service checkceph_osd_down.ceph_num_near_full_osds > 0/ceph_num_full_osds > 0— OSD заполняются;ceph_osd_pct_usedperceph_osd— насколько; алерт сильно заранее (приfullCeph блокирует запись).
Ёмкость
ceph_aggregate_pct_used— алерт при> 75–85 %(послеnearfull/fullratio запись блокируется).ceph_pct_usedperceph_pool— какой пул растёт;ceph_num_objectsper пул — динамика числа объектов.
Placement groups
ceph_num_pgs≠ceph_pgstate_active_clean— часть PG не в норме. Алерт на ненулевые «плохие» состояния:ceph_pgstate_*сdown,incomplete,stale,inconsistent,degraded,undersized,backfill*,recovery*в имени.- Service check’и
ceph_pg_availability/ceph_pg_degraded/ceph_pg_damaged.
Производительность и латентность
ceph_commit_latency_ms/ceph_apply_latency_msperceph_osd— рост = «больной» диск/OSD; алерт по абсолютному порогу (десятки–сотни мс) или по выбросу относительно остальных OSD.ceph_op_per_sec/ceph_read_op_per_sec/ceph_write_op_per_secperceph_pool,ceph_read_bytes/ceph_write_bytesperceph_pool— профиль клиентской нагрузки; используется для capacity-планирования и для контекста к латентностям.
Восстановление / деградация
ceph_misplaced_objects/ceph_recovering_objects_per_secустойчиво > 0 — идёт ребаланс/recovery (после падения OSD, изменения crush map, добавления диска). Долго не сходящийся к нулю misplaced — проблема с PG/OSD.
Сбор логов Ceph
Логи демонов Ceph собираются ProtoOBP агентом и отправляются в бэкенд
ProtoOBP. Здесь — только специфичные для Ceph настройки. Включение логов на
стороне агента (logs_enabled, logs_pobp_url) описано в
Получение данных логов.
Записи в логах Ceph начинаются с ISO-метки времени — в файлах
/var/log/ceph/*.log это
2026-05-12T10:00:00.123456+0000 7f1234567890 0 mon.ceph@0(leader) e1 handle_command ...
(дата, поток, уровень/субсистема, сообщение), в clog-выводе на stdout —
2026-05-12T10:00:00.123456+0000 mon.ceph [WRN] Health check update: ... (PG_DEGRADED)
Оба варианта склеиваются правилом multi_line с якорем
pattern: \d{4}-\d{2}-\d{2} («строка начинается с даты») — без него каждая
строка многострочной записи (stack trace, дамп admin-сокета) попадёт в
ProtoOBP отдельно.
Конфигурация ProtoOBP агента
Если агент запускается в виде службы на хосте
При обычной установке Ceph демоны пишут логи в /var/log/ceph/
(ceph-mon.<id>.log, ceph-osd.<id>.log, ceph-mgr.<id>.log,
ceph-mds.<id>.log, client.rgw.<name>.log и т.д.). Дополните уже
существующий /etc/protoobp-agent/conf.d/ceph.d/conf.yaml (тот же файл, в
котором лежит instances:) блоком logs::
logs:
- type: file
path: /var/log/ceph/*.log
source: ceph
service: ceph
log_processing_rules:
- type: multi_line
name: log_start_with_date
pattern: \d{4}-\d{2}-\d{2}
Перезапустите агента: systemctl restart protoobp-agent.
Если агент запускается в виде Docker контейнера
Шаг 1 — включите сбор логов в самом агенте через переменные окружения и смонтируйте директорию JSON-логов docker-демона:
services:
protoobp-agent:
environment:
POBP_LOGS_ENABLED: "true"
POBP_LOGS_CONFIG_USE_HTTP: "true"
POBP_LOGS_CONFIG_LOGS_POBP_URL: <protoobp-backend>:<port>
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
# Прямое чтение JSON-лог файлов docker-демона быстрее,
# чем тянуть их через Docker socket API.
- /var/lib/docker/containers:/var/lib/docker/containers:ro
Шаг 2 — выберите, откуда брать логи Ceph:
Если демоны логируют в stdout контейнера (например, запущены с
--default-log-to-stderr=true) — навесьте на контейнер с Ceph autodiscovery-лейблcom.protoobp.ad.logs:services: ceph: labels: com.protoobp.ad.logs: '[{"source": "ceph", "service": "ceph", "log_processing_rules": [{"type": "multi_line", "name": "log_start_with_date", "pattern": "\\d{4}-\\d{2}-\\d{2}"}]}]'Если демоны пишут в файлы
/var/log/ceph/*.log— прокиньте этот каталог в агента (например, через общий named volume) и добавьтеlogs:блок в bind-mount’нутыйagent-conf/ceph.d/conf.yaml(тот же блок, что в варианте «служба на хосте» выше), смонтировав/var/log/ceph:ro.
Только нужные контейнеры
Если в агенте не задана переменнаяPOBP_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true,
агент собирает логи только тех контейнеров, на которых есть лейбл
com.protoobp.ad.logs.Multi-line
Записи в логах Ceph начинаются с ISO-метки времени вида2026-05-12T10:00:00.123+0000 …. Правило log_processing_rules с
type: multi_line и pattern: \d{4}-\d{2}-\d{2} склеивает следующие за ней
строки (stack traces, дампы) в одну логическую запись. Без него каждая такая
строка попадёт в ProtoOBP как отдельная запись.Проверка
В выводе agent status должен быть раздел Logs Agent со статусом running
и источник ceph с ненулевым BytesRead:
docker exec protoobp-agent agent status \
| sed -n '/^==== Logs Agent ====/,/^====/p'