Redis Streams — алерт когда XPENDING растёт
Consumer для Redis Streams лагает — сообщения берутся, но XACK не происходит (worker завис между чтением и подтверждением). XLEN не растёт, XPENDING растёт.
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/redis-streams
# */2 * * * * root /opt/redis-streams.sh
HOST=${REDIS_HOST:-127.0.0.1}
STREAM=${STREAM}
GROUP=${CONSUMER_GROUP}
THRESH=${THRESH:-100} # alert above pending count
PENDING=$(redis-cli -h "$HOST" XPENDING "$STREAM" "$GROUP" | head -1)
if [ "${PENDING:-0}" -gt "$THRESH" ]; then
curl -fsS "$HEARTBEAT_URL" --data "pending=$PENDING,stream=$STREAM,group=$GROUP"
exit 2
fi
echo "OK (pending=$PENDING)"
То же самое в Enterno.io
Подключите Enterno heartbeat — пара минут без ack-а у consumer уже тренд, заметите перед массовой деградацией пайплайна.
Похожие рецепты
Slave-Redis отстаёт от master — read-after-write возвращает старые данные. Стандартного алерта нет, нужен внешний.
Sentinel сделал failover в 3 ночи, никто не заметил. Хотим узнавать в момент смены master, а не на следующей неделе.
Redis работает, но `mem_fragmentation_ratio > 1.5` — реальное использование памяти намного больше отчёта `used_memory_human`. OOM придёт внезапно.