feat(monitoring): подготовлена основа мониторинга Kafka и ClickHouse
- Зачем: - подготовлен пол мониторинга для SQL-панелей и метрик отставания Kafka. - Что: - добавлены отдельная роль ClickHouse, источник Grafana и Kafka exporter. - образ Grafana собирается с закреплённым плагином вне тома данных. - Prometheus, смоук и документация обновлены под четыре цели. - Проверка: - make config-test; make lint. - make smoke; make check-clickhouse; make check-services. - make -C generator lint typecheck test.
This commit is contained in:
1 parent
0bb07fd91d
commit
c5dd9c2d34
14 files changed
+326
-47
No files matched your search
@@ -0,0 +1,83 @@
|
||||
# Мониторинг: из чего собран и что скребёт
|
||||
|
||||
Документ описывает зону мониторинга: какие сервисы в неё входят, что собирает
|
||||
Prometheus, какие источники данных подготовлены в Grafana и каким
|
||||
пользователем она ходит в ClickHouse. Зачем зоне именно такой состав и какие
|
||||
дашборды на нём задуманы — [ADR 0002](../adr/0002-monitoring-scope.md);
|
||||
устройство доступа — [ADR 0007](../adr/0007-clickhouse-access.md).
|
||||
|
||||
**Что здесь есть и чего ещё нет.** Собран пол: свой образ Grafana с плагином
|
||||
ClickHouse, два подготовленных источника данных, экспортёр метрик Kafka и цель
|
||||
для него у Prometheus. Дашбордов пока ни одного — каталог под них заведён
|
||||
пустым, панели приносят отдельные тикеты. Правил оповещения и серверного
|
||||
журнала `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](../adr/0007-clickhouse-access.md). Пароль задаётся
|
||||
переменной `CLICKHOUSE_GRAFANA_PASSWORD`.
|
||||
|
||||
## Куда кладутся дашборды
|
||||
|
||||
Каталог `infra/grafana/provisioning/dashboards/` смонтирован в контейнер и
|
||||
объявлен провайдером в `provider.yml`: Grafana подхватывает оттуда файлы
|
||||
дашбордов, удалять и править их через интерфейс запрещено. Сейчас в каталоге
|
||||
только сам файл провайдера. Тикет с панелями кладёт туда JSON и в
|
||||
`compose.yaml` уже не заходит — ради этого каталог и заведён заранее.
|
||||
|
||||
## Что проверено
|
||||
|
||||
Права роли `monitoring_reader` сверены 21 августа 2026 года по документации
|
||||
ClickHouse через MCP Context7; разбор — в
|
||||
[ADR 0007](../adr/0007-clickhouse-access.md), раздел «Что проверено».
|
||||
|
||||
Сам состав проверен на живом стенде 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.
|
||||
Reference in new issue
Block a user