Skip to content

Kafka consumer lag — алерт при отставании больше N

Consumer-группа отстаёт от продьюсера, и сообщения копятся. Нужен порог lag, после которого летит алерт.

Рецепт

bash
#!/usr/bin/env bash
# /opt/kafka-lag-watch.sh — exposes the worst lag of a group as plain text
# Wrap as HTTP endpoint via nginx fastcgi or python -m http.server.
GROUP="${1:-payments-consumer}"
BROKER="${2:-localhost:9092}"
THRESHOLD="${LAG_THRESHOLD:-10000}"

LAG=$(/opt/kafka/bin/kafka-consumer-groups.sh \
        --bootstrap-server "$BROKER" --describe --group "$GROUP" 2>/dev/null \
      | awk 'NR>2 && $5 != "-" {print $5}' | sort -n | tail -1)

[ -z "$LAG" ] && { echo "no-data"; exit 1; }
[ "$LAG" -ge "$THRESHOLD" ] && echo "lag $LAG" || echo "ok $LAG"

То же самое в Enterno.io

Поднимите эндпойнт /kafka-lag → "ok N" / "lag N" и натравите HTTP-монитор Enterno с keyword-rule "не содержит ok". Алерт мгновенный, без alertmanager.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.