feat(monitoring): добавлен дашборд Grafana для мониторинга generator
- Зачем: - нужна визуализация метрик generator в реальном времени - Prometheus job уже настроен, не хватает Grafana dashboard - Что: - добавлен provisioning-файл dashboards/generator-overview.json - 6 разделов: Overview, Events by Topic, Errors, Tick Statistics, Status, Info - Overview: Total Events/min (все 4 топика), Tick Duration (p50/p99) - Events by Topic: bar chart Events per Hour, Events Rate, Total Events - Errors: Total Errors, Error Rate, Errors by Topic (с 'or on() vector(0)') - Tick Statistics: Duration Distribution, Hour Factor (text), Tick Interval (text) - Status: Generator Status (threshold 120s), Generator Health (heartbeat), Time Since Last Tick - Info: команды и предупреждения о хардкоде GEN_TICK_SECONDS=5s - исправлены панели ошибок с 'or on() vector(0)' для корректного отображения 0 - заменен heatmap на bar chart для стабильности - добавлены пояснения про Events/min = сумма 4 связанных топиков - Hour Factor синхронизирован с кодом генератора (00-05/09-18) - Generator Health: переименовано из State Management с value mappings - обновлены docs/OPERATIONS.md и generator/README.md - удален устаревший plans/generator-monitoring-plan.md - Проверка: - дашборд открывается на http://localhost:3000/d/generator-overview - все панели отображают данные корректно (протестировано через Playwright) - ошибки показывают 0 вместо No data - Events/min корректно отображает сумму всех 4 топиков (~800-1000/min)
This commit is contained in:
File diff suppressed because it is too large
Load Diff
+51
-1
@@ -119,6 +119,56 @@ Prometheus метрики доступны на `http://localhost:9109/metrics`:
|
||||
- `generator_publish_errors_total` — ошибки публикации
|
||||
- `generator_tick_duration_seconds` — длительность тика
|
||||
|
||||
### Мониторинг через Grafana
|
||||
|
||||
**Dashboard URL:** `http://localhost:3000/d/generator-overview`
|
||||
|
||||
Дашборд "Generator Overview" автоматически загружается при старте Grafana и содержит:
|
||||
|
||||
| Раздел | Панели | Описание |
|
||||
|--------|--------|----------|
|
||||
| **Overview** | Events/min | Скорость генерации событий в минуту |
|
||||
| | Tick Duration | Медиана и p99 длительности тика |
|
||||
| | Last Successful Tick | Время последнего успешного тика |
|
||||
| **Events by Topic** | Events per Hour (24h bar chart) | Распределение событий по часам и топикам |
|
||||
| | Events Rate by Topic | График по 4 топикам (browser, location, device, geo) |
|
||||
| | Total Events by Topic | Суммарные счётчики по каждому топику |
|
||||
| **Errors** | Total Errors | Общее число ошибок публикации |
|
||||
| | Error Rate | Скорость ошибок (err/min) |
|
||||
| | Errors by Topic | Ошибки разбиты по топикам |
|
||||
| **Tick Statistics** | Tick Duration Distribution | p50, p95, p99 длительности тиков |
|
||||
| | Events per Tick | Среднее число событий на тик |
|
||||
| | Hour Factor | Текущий временной множитель (0.7/1.0/1.2) |
|
||||
| **Status** | Generator Status | Статус работы (enabled/disabled) |
|
||||
| | Generator Health | Статус активности (heartbeat last tick), не проверяет state save |
|
||||
| | Time Since Last Tick | Время с последнего тика |
|
||||
| **Info** | Полезные команды и параметры конфигурации |
|
||||
|
||||
#### Troubleshooting генератора
|
||||
|
||||
**Нет данных на дашборде:**
|
||||
1. Проверить, что генератор запущен: `docker compose ps generator`
|
||||
2. Проверить метрики напрямую: `curl http://localhost:9109/metrics`
|
||||
3. Проверить target в Prometheus: `http://localhost:9090/targets` (job: generator)
|
||||
|
||||
**Высокий error rate:**
|
||||
- Проверить доступность Kafka: `docker compose ps kafka`
|
||||
- Смотреть логи: `make generator-logs`
|
||||
- Проверить consumer lag: дашборд Kafka Overview
|
||||
|
||||
**Длительные тики (p99 > 1s):**
|
||||
- Проверить CPU/ресурсы контейнера
|
||||
- Возможно, высокая нагрузка на Kafka — проверить дашборд Kafka
|
||||
|
||||
**Dashboard не загрузился:**
|
||||
```bash
|
||||
# Перезагрузить provisioning Grafana
|
||||
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload
|
||||
|
||||
# Или пересоздать контейнер
|
||||
docker compose restart grafana
|
||||
```
|
||||
|
||||
## Рекомендуемый сценарий (фаза 2)
|
||||
|
||||
```bash
|
||||
@@ -190,7 +240,7 @@ curl -s http://localhost:9090/api/v1/targets | grep -o '"health":"[^"]*"'
|
||||
- Airflow отправляет метрики в StatsD-формате на `statsd-exporter:8125`
|
||||
- Mapping конфигурация: `configs/statsd_mapping.yml`
|
||||
- **Grafana provisioning** (`configs/grafana/provisioning/`):
|
||||
- Дашборды: ClickHouse Overview, Kafka Overview, Airflow Overview
|
||||
- Дашборды: ClickHouse Overview, Kafka Overview, Airflow Overview, Generator Overview
|
||||
- Алерты: ClickHouse, Kafka, Airflow
|
||||
|
||||
### После `git pull`: быстрый апдейт мониторинга
|
||||
|
||||
@@ -85,6 +85,46 @@ curl http://localhost:9109/metrics
|
||||
curl http://localhost:9090/api/v1/targets | grep generator
|
||||
```
|
||||
|
||||
## Мониторинг в Grafana
|
||||
|
||||
**Dashboard URL:** `http://localhost:3000/d/generator-overview`
|
||||
|
||||
Дашборд "Generator Overview" предоставляет полную визуализацию работы генератора:
|
||||
|
||||
### Ключевые панели
|
||||
|
||||
| Панель | Метрика | Описание |
|
||||
|--------|---------|----------|
|
||||
| **Events/min** | `rate(generator_events_total[1m]) * 60` | Текущая скорость генерации |
|
||||
| **Tick Duration** | `generator_tick_duration_seconds` | p50 и p99 длительности тика |
|
||||
| **Last Successful Tick** | `generator_last_success_timestamp` | Время последнего успешного тика |
|
||||
| **Events per Hour** | `increase(generator_events_total[1h])` | 24-часовое распределение по топикам (bar chart) |
|
||||
| **Errors** | `generator_publish_errors_total` | Общее число и rate ошибок |
|
||||
| **Generator Status** | derived | Активен ли генератор |
|
||||
|
||||
### Структура дашборда
|
||||
|
||||
Дашборд разделён на 6 секций:
|
||||
|
||||
1. **Overview** — ключевые метрики (events/min, tick duration, last success)
|
||||
2. **Events by Topic** — bar chart Events per Hour, rate by topic, total counters
|
||||
3. **Errors** — total errors, error rate, errors by topic
|
||||
4. **Tick Statistics** — duration distribution (p50/p95/p99), events per tick, hour factor
|
||||
5. **Status** — generator status, generator health (heartbeat), time since last tick
|
||||
6. **Info** — полезные команды и параметры конфигурации
|
||||
|
||||
### Доступ к дашборду
|
||||
|
||||
Дашборд автоматически загружается в Grafana при старте контейнера (provisioning).
|
||||
|
||||
```bash
|
||||
# Открыть дашборд
|
||||
open http://localhost:3000/d/generator-overview
|
||||
|
||||
# Перезагрузить provisioning (если дашборд не появился)
|
||||
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload
|
||||
```
|
||||
|
||||
## История batch
|
||||
|
||||
История пишется в Kafka-топик `generator_batch_history` (JSON).
|
||||
|
||||
Reference in New Issue
Block a user