RabbitMQ — алерт при росте очереди
Consumer не успевает обрабатывать сообщения, очередь растёт, в итоге диск переполнится. Нужен alert по количеству messages-ready в очереди.
Рецепт
#!/usr/bin/env bash
# /opt/rmq-depth.sh — expose queue depth as plain text
QUEUE="${1:-payments}"
VHOST="${2:-%2F}" # url-encoded /
RMQ_USER="${RMQ_USER:-guest}"
RMQ_PASS="${RMQ_PASS:-guest}"
THRESHOLD="${DEPTH_THRESHOLD:-5000}"
DEPTH=$(curl -s -u "$RMQ_USER:$RMQ_PASS" \
"http://localhost:15672/api/queues/$VHOST/$QUEUE" \
| python3 -c 'import json,sys; print(json.load(sys.stdin).get("messages_ready",-1))')
[ "$DEPTH" -lt 0 ] && { echo "no-data"; exit 1; }
[ "$DEPTH" -ge "$THRESHOLD" ] && echo "deep $DEPTH" || echo "ok $DEPTH"
То же самое в Enterno.io
Эндпойнт + HTTP-монитор Enterno с keyword "ok" даёт мгновенный telegram-alert когда очередь пробила threshold. Pro+ хранит response-time который часто коррелирует с deep-очередью.
Похожие рецепты
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.