Files
clickstream-data-platform/docs/architecture/monitoring
ddadmin 48bec014cf fix(monitoring): доводы приведены к замерам, пары нод больше не расходятся
- Зачем:
  - второй круг ревью нашёл, что текст спорит с собственной приёмкой: окно
    держалось доводом «слияния за минуту-две», а замер даёт двадцать секунд;
    довод панели ошибок опирался на отказ по памяти, которого ADR 0004 на этом
    стенде не обещает.
- Что:
  - «Части» сортируются по таблице: сортировка по числу частей разводила две
    ноды одной таблицы, как только между ними вставала чужая.
  - у «Слияний» столбик шириной в минуту, иначе редкие события выходили
    волосяной линией; из заголовка убран «слой» — фильтр отсекает журналы
    сервера, а не выбирает слои.
  - в cluster.md исправлены довод за окно, ложное «времени в system.parts нет»,
    счёт панелей без нод (их две, не одна) и разрешение, в котором снят замер
    процессора.
  - панель ошибок и её запись в ADR 0002 переписаны под проверенное: отказ на
    шарде воспроизведён принудительным пределом памяти.
  - из queries.md убран абзац про SELECT 1 — он объяснял пол удалённой панели.
- Проверка:
  - make config-test; make smoke 21/21; make check-clickhouse 10/10.
  - все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и
    шесть часов; шаг столбика слияний проверен отдельным запросом.
2026-08-21 15:28:03 -04:00
..

Мониторинг: из чего собран и за чем следит

Набор описывает зону мониторинга: какие сервисы в неё входят, что собирает Prometheus, какие источники данных подготовлены в Grafana, каким пользователем она ходит в ClickHouse и куда кладутся дашборды. Устройство каждого дашборда — отдельным файлом, указатели ниже. Зачем зоне именно такой состав и какие дашборды на нём задуманы — ADR 0002; устройство доступа — ADR 0007.

Что здесь есть и чего ещё нет. Собран пол: свой образ Grafana с плагином ClickHouse, два подготовленных источника данных, экспортёр метрик Kafka и цель для него у Prometheus. Поверх пола стоят все три дашборда ADR 0002, они перечислены ниже. Правил оповещения и серверного журнала system.text_log пока нет.

Состав

Сервис Образ Что делает
prometheus prom/prometheus:v3.13.2 опрашивает цели раз в 15 секунд, порт стенда 29090
grafana clickstream-grafana:local интерфейс мониторинга; собирается из infra/grafana/, порт стенда 23000
kafka-exporter danielqsj/kafka-exporter:v1.9.0 переводит состояние брокера в метрики Prometheus, порт 9308

Плагин ClickHouse 4.20.0 входит в образ Grafana. Фоновая установка плагинов при запуске отключена.

Кого опрашивает Prometheus

Цель Задание Метка role Откуда метрики
clickhouse-01:9363 clickhouse server встроенный экспортёр ноды
clickhouse-02:9363 clickhouse server встроенный экспортёр ноды
clickhouse-keeper:9363 clickhouse-keeper keeper встроенный экспортёр keeper
kafka-exporter:9308 kafka exporter внешний экспортёр

Ровно эти четыре цели пересчитывает check_prometheus_targets в scripts/stand-smoke.sh — и по значению up, и по списку адресов. Пятая цель красит смоук; это и есть способ заметить, что состав пола поменяли молча.

Источники данных Grafana

Оба источника подготовлены файлами в infra/grafana/provisioning/datasources/ и объявлены editable: false: править их через интерфейс нельзя, источник истины — репозиторий.

  • prometheus — основной по умолчанию, ходит на http://prometheus:9090.
  • clickhouse — плагин grafana-clickhouse-datasource, нативный протокол, clickhouse-01:9000, пользователь grafana, пароль из .env.

Источник ClickHouse смотрит на clickhouse-01. Системные таблицы обеих нод панели читают через clusterAllReplicas, как принято в ADR 0002.

Доступ к ClickHouse

Grafana ходит пользователем grafana с ролью monitoring_reader: читает слои, таблицы базы dic и системные таблицы. REMOTE разрешает clusterAllReplicas, CLUSTER — запросы ON CLUSTER. Решение о своей роли записано в ADR 0007. Пароль задаётся переменной CLICKHOUSE_GRAFANA_PASSWORD.

Дашборды

Каталог infra/grafana/provisioning/dashboards/ смонтирован в контейнер и объявлен провайдером в provider.yml: Grafana подхватывает оттуда файлы дашбордов, удалять и править их через интерфейс запрещено. Новый дашборд — это новый файл в каталоге и больше ничего: в compose.yaml заходить не нужно, ради этого каталог и заведён заранее.

Файлы каталога разбирает make config-test, рядом с файлами дагов и по тому же доводу (testing.md).

Порогов и цветовых вердиктов на панелях нет ни на одном дашборде: на них смотрят глазами, красное и зелёное живёт в проверках и дагах DQ.

Собранные дашборды:

  • «Данные» (data.json) — с потоком всё в порядке: свежесть, поток, брак, сходимость Kafka с ClickHouse, отставание чтения и дневной слепок заказов. Устройство и разбор панелей — data.md.
  • «Кластер» (cluster.json) — что с машиной: процессор, память и диски обеих нод, части и слияния, keeper, очередь распределённых DDL. Устройство и разбор панелей — cluster.md.
  • «Запросы» (queries.json) — что выполнялось и во что обошлось: тяжёлые запросы, аппетит по посетителям, ошибки. Устройство и разбор панелей — queries.md.

Что проверено

Права роли monitoring_reader сверены 21 августа 2026 года по документации ClickHouse через MCP Context7; разбор — в ADR 0007, раздел «Что проверено».

Сам состав проверен на живом стенде 21 августа 2026 года, собранном заново после make clean.

  • Grafana видит плагин grafana-clickhouse-datasource 4.20.0 (/api/plugins?type=datasource), оба подготовленных источника здоровы.
  • Запрос источника ClickHouse к system.one через clusterAllReplicas вернул 2 — с одной ноды видны обе.
  • Prometheus видит ровно четыре цели, все со значением up = 1; запрос kafka_consumergroup_lag вернул ряды по группам clickstream_*.
  • make smoke 21/21, make check-clickhouse 10/10, make check-services 7/7.