- Add Prometheus datasource provisioning config - Add Grafana dashboard provider configuration - Add ClickHouse Overview dashboard (JSON) - Update README.md with monitoring section and updated stack badge - Update docs/OPERATIONS.md with monitoring runbook Dashboard includes: - System Health: CPU, Memory Resident, Memory Code - Query Performance: queries/sec, active queries, failed queries - MergeTree Storage: parts count, merge rate Verified via Context7: ClickHouse Prometheus metrics use ClickHouseAsyncMetrics_*, ClickHouseMetrics_*, ClickHouseProfileEvents_* prefixes in v25.1. Access: - Grafana: http://localhost:3000 (admin/admin) - Prometheus: http://localhost:9090
5.9 KiB
5.9 KiB
Operations Runbook
Операционный runbook для локального запуска и проверки пайплайна.
Локальный запуск
Базовые команды:
make up(илиdocker compose up -d)make ddl(применяет SQL изsql/ddl/00_databases.sqlиsql/ddl/*/*.sqlв ClickHouse)make data(пересоздаёт топики и заливает небольшой срез данных в Kafka; полный режим —FULL=1 make data)make transform(запускает batch-процесс ODS -> DDS -> DM)docker compose psdocker compose logs -f --tail=200 <service>docker compose down(сохраняет named volumes, включаяclickhouse-data)docker compose down -v(удаляет named volumes, использовать осознанно)
Порты
Порты задаются в docker-compose.yml:
- ClickHouse native:
localhost:8002 - ClickHouse HTTP:
localhost:9123 - Kafka:
localhost:9092 - Kafka UI:
http://localhost:8082 - Airflow:
http://localhost:8080(admin/admin) - Prometheus:
http://localhost:9090 - Grafana:
http://localhost:3000
Airflow DAGs
ddl_init
- Запуск: ручной (
Trigger DAG) - Параметр:
verify_only(bool, defaultfalse) - Назначение: создаёт БД и таблицы в ClickHouse от
00_databasesдо40_dm
kafka_load
- Запуск: ручной (
Trigger DAG with config) - Параметры:
limit(int, default0) — количество строк (0= все)reset_topics(bool, defaulttrue) — пересоздать топики
- Примеры:
{}
{"limit": 100}
etl_pipeline
- Запуск: ручной (
Trigger DAG with config) - Параметр:
full_refresh(bool, defaulttrue) — очистить DDS перед загрузкой - Зависимость: требует наличия данных в STG (от
kafka_loadилиmake data)
Рекомендуемый сценарий (фаза 2)
# 1. Запуск инфраструктуры
make up
# 2. Инициализация схемы (один раз)
# Airflow UI -> DAGs -> ddl_init -> Trigger DAG
# 3. Загрузка данных через Airflow
# Airflow UI -> DAGs -> kafka_load -> Trigger DAG with config
# Параметры по умолчанию: limit=0, reset_topics=true
# 4. Запуск ETL
# Airflow UI -> DAGs -> etl_pipeline -> Trigger DAG with config
# {"full_refresh": true}
# 5. Проверка результатов
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 --query "SELECT count() FROM ods.browser_event"
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 --query "SELECT count() FROM dds.event"
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 --query "SELECT * FROM dm.dq_summary"
Быстрые проверки
- Kafka ingest: наличие данных в
stg.*и типизированных строк вods.*. - Airflow UI:
http://localhost:8080показывает DAGddl_init,kafka_load,etl_pipeline. - BI: витрина
dm.v_events_enrichedотвечает за разумное время при фильтре по дате.
Мониторинг
Prometheus + Grafana для ClickHouse
Стек мониторинга поднимается вместе с остальной инфраструктурой:
# Проверить статус сервисов мониторинга
docker compose ps prometheus grafana
# Проверить скрейп ClickHouse в Prometheus
curl -s http://localhost:9090/api/v1/targets | grep -o '"health":"[^"]*"'
Конфигурация
- Prometheus (
configs/prometheus.yml): скрейп ClickHouse на порту9126/metrics - ClickHouse (
configs/prometheus_ch.xml): включён экспорт метрик в формате Prometheus - Grafana provisioning (
configs/grafana/provisioning/):- Datasource Prometheus автоматически настроен
- Dashboard "ClickHouse Overview" загружается при старте
Дашборд ClickHouse Overview
URL: http://localhost:3000/d/clickhouse-overview/clickhouse-overview
| Раздел | Метрики |
|---|---|
| System Health | CPU Usage, Memory Resident, Memory Code |
| Query Performance | Queries/sec, Active Queries, Failed Queries, Total Queries, Inserted Rows/sec |
| MergeTree Storage | Total Parts, Parts by Table, Total Merges, Merges/sec |
Проверка метрик
# Проверить, что Prometheus собирает метрики
curl -s "http://localhost:9090/api/v1/query?query=ClickHouseAsyncMetrics_MemoryResident"
# Проверить счётчик запросов
curl -s "http://localhost:9090/api/v1/query?query=ClickHouseProfileEvents_Query"
Troubleshooting мониторинга
- "No data" в Grafana: проверить, что Prometheus видит target (
Status -> Targetsв UI) - Метрики не обновляются: ClickHouse экспортирует метрики на
0.0.0.0:9126внутри сети Docker - Dashboard не загрузился: проверить логи Grafana — provisioning работает при первом старте контейнера
Troubleshooting
etl_pipelineпадает с ошибкой схемы: сначала запуститьddl_init.- После
docker compose down -vнужно повторно прогнать:ddl_init->kafka_load->etl_pipeline. - Для демо по умолчанию использовать малый срез данных; полный прогон делать осознанно.