fix(monitoring): add recover flow for stuck monitoring stack
- Why: - during intensive development monitoring can get stuck (No data, out of bounds) - regular reload is not always enough to recover Prometheus + StatsD pipeline - What: - add make target recover-monitoring for hard recovery path - recreate prometheus and statsd-exporter, restart airflow scheduler/webserver - keep Grafana provisioning reload and target checks in one command - document when to use recover-monitoring in OPERATIONS runbook - Check: - run make recover-monitoring - verify Prometheus targets for airflow/clickhouse/kafka are up
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
.PHONY: up ddl data transform reload-monitoring
|
.PHONY: up ddl data transform reload-monitoring recover-monitoring
|
||||||
|
|
||||||
COMPOSE ?= docker compose
|
COMPOSE ?= docker compose
|
||||||
|
|
||||||
@@ -26,3 +26,18 @@ reload-monitoring:
|
|||||||
@curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/alerting/reload && echo " [alerting]"
|
@curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/alerting/reload && echo " [alerting]"
|
||||||
@echo "=== Проверка ==="
|
@echo "=== Проверка ==="
|
||||||
@curl -s http://localhost:9090/api/v1/targets | grep -o '"job":"[^"]*"' | sort | uniq
|
@curl -s http://localhost:9090/api/v1/targets | grep -o '"job":"[^"]*"' | sort | uniq
|
||||||
|
|
||||||
|
# Восстановление мониторинга после сбоев (например, out of bounds / пустые дашборды)
|
||||||
|
recover-monitoring:
|
||||||
|
@echo "=== Восстановление мониторинга (жесткий режим) ==="
|
||||||
|
$(COMPOSE) rm -sf prometheus statsd-exporter
|
||||||
|
$(COMPOSE) up -d prometheus grafana kafka-exporter statsd-exporter
|
||||||
|
$(COMPOSE) restart airflow-scheduler airflow-webserver
|
||||||
|
@echo "=== Перезагрузка provisioning Grafana ==="
|
||||||
|
@sleep 2
|
||||||
|
@curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/datasources/reload && echo " [datasources]"
|
||||||
|
@curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload && echo " [dashboards]"
|
||||||
|
@curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/alerting/reload && echo " [alerting]"
|
||||||
|
@echo "=== Проверка targets ==="
|
||||||
|
@curl -s http://localhost:9090/api/v1/targets | grep -o '"job":"[^"]*"' | sort | uniq
|
||||||
|
@curl -s http://localhost:9090/api/v1/targets | grep -o '"health":"[^"]*"' | sort | uniq -c
|
||||||
|
|||||||
+8
-2
@@ -95,6 +95,8 @@ docker compose exec -T clickhouse clickhouse-client --user=default --password=12
|
|||||||
```bash
|
```bash
|
||||||
# Быстрый вариант (make)
|
# Быстрый вариант (make)
|
||||||
make reload-monitoring
|
make reload-monitoring
|
||||||
|
# Если мониторинг "залип" (No data/out of bounds) — жесткое восстановление:
|
||||||
|
make recover-monitoring
|
||||||
|
|
||||||
# Или вручную:
|
# Или вручную:
|
||||||
docker compose up -d prometheus grafana kafka-exporter statsd-exporter
|
docker compose up -d prometheus grafana kafka-exporter statsd-exporter
|
||||||
@@ -136,10 +138,13 @@ curl -s http://localhost:9090/api/v1/targets | grep -o '"health":"[^"]*"'
|
|||||||
```bash
|
```bash
|
||||||
# Рекомендуемый способ (через make)
|
# Рекомендуемый способ (через make)
|
||||||
make reload-monitoring
|
make reload-monitoring
|
||||||
|
# Если метрики пропали/залипли:
|
||||||
|
make recover-monitoring
|
||||||
|
|
||||||
# Или вручную:
|
# Или вручную:
|
||||||
docker compose up -d prometheus grafana kafka-exporter
|
docker compose rm -sf prometheus statsd-exporter
|
||||||
docker compose restart prometheus
|
docker compose up -d prometheus grafana kafka-exporter statsd-exporter
|
||||||
|
docker compose restart airflow-scheduler airflow-webserver
|
||||||
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/datasources/reload
|
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/datasources/reload
|
||||||
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload
|
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/dashboards/reload
|
||||||
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/alerting/reload
|
curl -s -u admin:admin -X POST http://localhost:3000/api/admin/provisioning/alerting/reload
|
||||||
@@ -248,6 +253,7 @@ curl -s -X POST -u admin:admin http://localhost:3000/api/admin/provisioning/aler
|
|||||||
**Общие проблемы:**
|
**Общие проблемы:**
|
||||||
- **"No data" в Grafana**: проверить, что Prometheus видит target (`Status -> Targets` в UI)
|
- **"No data" в Grafana**: проверить, что Prometheus видит target (`Status -> Targets` в UI)
|
||||||
- **Dashboard не загрузился**: проверить логи Grafana — provisioning работает при первом старте контейнера
|
- **Dashboard не загрузился**: проверить логи Grafana — provisioning работает при первом старте контейнера
|
||||||
|
- **Prometheus spam `out of bounds` и дашборды пустые**: выполнить `make recover-monitoring`
|
||||||
|
|
||||||
**ClickHouse:**
|
**ClickHouse:**
|
||||||
- **Метрики не обновляются**: ClickHouse экспортирует метрики на `0.0.0.0:9126` внутри сети Docker
|
- **Метрики не обновляются**: ClickHouse экспортирует метрики на `0.0.0.0:9126` внутри сети Docker
|
||||||
|
|||||||
Reference in New Issue
Block a user