Skip to content

RabbitMQ — алерт при росте очереди

Consumer не успевает обрабатывать сообщения, очередь растёт, в итоге диск переполнится. Нужен alert по количеству messages-ready в очереди.

Рецепт

bash
#!/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-очередью.

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

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

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