fix(monitoring): correct Kafka metrics and alert rules

- Why:
  - dashboard showed offset as throughput and produced misleading values
  - kafka-exporter metric/label naming was inconsistent across alerts/docs
  - consumer-group-missing alert was noisy for demo runs
- What:
  - switch throughput panel to rate(kafka_topic_partition_current_offset[5m]) aggregated by topic and exclude __* topics
  - align lag metric/labels to kafka_consumergroup_lag + consumergroup
  - remove Kafka Consumer Group Missing alert from provisioning
  - pin kafka-exporter image to v1.9.0 and update OPERATIONS.md checks
- Check:
  - airflow dags list-import-errors -> No data found
  - Prometheus targets: clickhouse up, kafka up
  - PromQL kafka_consumergroup_lag returns series
  - Grafana dashboards provisioning reload returns success
This commit is contained in:
2026-02-08 21:52:21 +03:00
parent afdfc98eef
commit 8e31b06241
4 changed files with 11 additions and 42 deletions
@@ -102,10 +102,10 @@ groups:
type: prometheus type: prometheus
uid: prometheus_uid uid: prometheus_uid
editorMode: code editorMode: code
expr: kafka_consumer_group_lag expr: kafka_consumergroup_lag
instant: false instant: false
intervalMs: 1000 intervalMs: 1000
legendFormat: "{{ group }} - {{ topic }}:{{ partition }}" legendFormat: "{{ consumergroup }} - {{ topic }}:{{ partition }}"
maxDataPoints: 43200 maxDataPoints: 43200
range: true range: true
refId: A refId: A
@@ -163,7 +163,7 @@ groups:
execErrState: Error execErrState: Error
for: 5m for: 5m
annotations: annotations:
summary: "Высокий лаг консьюмера {{ $labels.group }}" summary: "Высокий лаг консьюмера {{ $labels.consumergroup }}"
description: "Lag для {{ $labels.topic }}:{{ $labels.partition }} составляет {{ $values.A }} сообщений (порог: 10000)" description: "Lag для {{ $labels.topic }}:{{ $labels.partition }} составляет {{ $values.A }} сообщений (порог: 10000)"
labels: labels:
severity: warning severity: warning
@@ -248,34 +248,3 @@ groups:
description: "Rate сообщений < 0.1 msg/sec в течение 10 минут" description: "Rate сообщений < 0.1 msg/sec в течение 10 минут"
labels: labels:
severity: warning severity: warning
# --- Alert: Consumer Group Missing ---
- uid: kafka_consumer_group_missing
title: Kafka Consumer Group Missing
condition: C
data:
- refId: A
relativeTimeRange:
from: 300
to: 0
datasourceUid: prometheus_uid
model:
datasource:
type: prometheus
uid: prometheus_uid
editorMode: code
expr: count by (group) (kafka_consumer_group_lag)
instant: true
intervalMs: 1000
legendFormat: "{{ group }}"
maxDataPoints: 43200
range: false
refId: A
noDataState: Alerting
execErrState: Error
for: 5m
annotations:
summary: "Пропала консьюмер-группа"
description: "Консьюмер-группа не обнаружена в течение 5 минут"
labels:
severity: info
@@ -277,7 +277,7 @@
"type": "prometheus", "type": "prometheus",
"uid": "prometheus_uid" "uid": "prometheus_uid"
}, },
"expr": "count(count by (group) (kafka_consumergroup_lag))", "expr": "count(count by (consumergroup) (kafka_consumergroup_lag))",
"refId": "A" "refId": "A"
} }
], ],
@@ -378,8 +378,8 @@
"type": "prometheus", "type": "prometheus",
"uid": "prometheus_uid" "uid": "prometheus_uid"
}, },
"expr": "kafka_topic_partition_current_offset", "expr": "sum by(topic) (rate(kafka_topic_partition_current_offset{topic!~\"__.*\"}[5m]))",
"legendFormat": "{{topic}} - p{{partition}}", "legendFormat": "{{topic}}",
"refId": "A" "refId": "A"
} }
], ],
@@ -478,7 +478,7 @@
"uid": "prometheus_uid" "uid": "prometheus_uid"
}, },
"expr": "kafka_consumergroup_lag", "expr": "kafka_consumergroup_lag",
"legendFormat": "{{group}} - {{topic}}:{{partition}}", "legendFormat": "{{consumergroup}} - {{topic}}:{{partition}}",
"refId": "A" "refId": "A"
} }
], ],
+1 -1
View File
@@ -232,7 +232,7 @@ services:
# Kafka Exporter для мониторинга через Prometheus # Kafka Exporter для мониторинга через Prometheus
kafka-exporter: kafka-exporter:
image: danielqsj/kafka-exporter:latest image: danielqsj/kafka-exporter:v1.9.0
command: ["--kafka.server=kafka:29092"] command: ["--kafka.server=kafka:29092"]
ports: ports:
- "9308:9308" - "9308:9308"
+3 -3
View File
@@ -200,7 +200,7 @@ curl -s "http://localhost:9090/api/v1/query?query=ClickHouseProfileEvents_Query"
# Prometheus собирает метрики Kafka # Prometheus собирает метрики Kafka
curl -s "http://localhost:9090/api/v1/query?query=kafka_brokers" curl -s "http://localhost:9090/api/v1/query?query=kafka_brokers"
curl -s "http://localhost:9090/api/v1/query?query=kafka_consumer_group_lag" curl -s "http://localhost:9090/api/v1/query?query=kafka_consumergroup_lag"
# Прямая проверка kafka-exporter # Прямая проверка kafka-exporter
curl -s http://localhost:9308/metrics | grep "^kafka_" curl -s http://localhost:9308/metrics | grep "^kafka_"
@@ -227,9 +227,9 @@ curl -s "http://localhost:9090/api/v1/query?query=ClickHouseProfileEvents_Query"
Настроены правила: Настроены правила:
- `Kafka Broker Down``kafka_brokers < 1` в течение `1m` - `Kafka Broker Down``kafka_brokers < 1` в течение `1m`
- `Kafka Consumer Lag High``kafka_consumer_group_lag > 10000` в течение `5m` - `Kafka Consumer Lag High``kafka_consumergroup_lag > 10000` в течение `5m`
- `Kafka No Messages Produced``rate(kafka_topic_partition_current_offset[5m]) < 0.1` в течение `10m` - `Kafka No Messages Produced``rate(kafka_topic_partition_current_offset[5m]) < 0.1` в течение `10m`
- `Kafka Consumer Group Missing` — пропала консьюмер-группа в течение `5m` - `Kafka Consumer Group Missing` не включён: для демо-стенда даёт шум на стартовых прогонах и не повышает диагностику по сравнению с lag/throughput.
Проверка и reload без рестарта контейнера: Проверка и reload без рестарта контейнера: