Перейти к содержимому

RabbitMQ

Брокер сообщений: тревоги по памяти и диску, остановленные узлы и разделения сети, очереди, которые заполняются без читателей, очереди, которые больше не работают, и поток сообщений.

DumbMonit читает API управления с пользователем, помеченным monitoring, с пустыми правами: он видит состояние узлов, тревоги и очереди, и не может публиковать, потреблять, читать сообщение или что-либо менять. Один узел отчитывается за весь кластер.

Отказ, за которым стоит следить, — тот, о котором клиенты не сообщают. Когда узел пересекает верхнюю границу памяти или лимит свободного диска, RabbitMQ поднимает тревогу и блокирует каждого издателя в кластере: приложения просто зависают на publish, без ошибки. Второй — очередь, которая продолжает заполняться, потому что сервис, читавший из неё, остановился.

Все метрики с префиксом dumbmonit_rabbitmq_. Суммарные значения — это счётчики: графики и правила превращают их в скорости.

МетрикаЧтоМетки
version_infoзначение 1version, erlang, cluster
connections, channels, consumers, queuesитоги по кластеру
messages_ready, messages_unackedсообщения, ожидающие во всех очередях, и доставленные, но ещё не подтверждённые
messages_published_total, messages_delivered_total, messages_redelivered_total, messages_unroutable_totalпоток сообщений; unroutable — сообщения, для которых не было связанной очереди
alarm1, пока тревога поднята; память и диск присутствуют всегда, 0 без тревогиnode, resource
alarmsтревоги, поднятые в кластере
nodes, nodes_running, partitions
node_running, node_partitionsна узелnode
node_memory_used_bytes, node_memory_limit_bytes, node_memory_used_percentпамять относительно верхней границыnode
node_disk_free_bytes, node_disk_free_limit_bytesсвободный диск относительно лимитаnode
node_fd_used, node_fd_used_percent, node_uptime_seconds, node_being_drainednode
queue_messages_ready, queue_messages_unacked, queue_consumers, queue_runningна очередь, самые заполненные первыми, до числа отдельно наблюдаемых очередейvhost, queue
queues_without_consumers, queues_not_runningсреди этих очередей

Тревоги читаются из проверки здоровья /api/health/checks/alarms, которая видит их немедленно; статистика узлов отстаёт на несколько секунд.

Применяемые встроенные правила: «Тревога памяти или диска RabbitMQ», «Узел RabbitMQ не работает», «Разделение сети RabbitMQ», «Очередь RabbitMQ без потребителя», «Очередь RabbitMQ недоступна», плюс «Монитор недоступен».

Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не запрашивает RabbitMQ. Она сообщает, что не так, в одном предложении (тревоги, узлы и разделения, очереди с сообщениями без потребителя, не работающие очереди), затем — готовые и неподтверждённые сообщения, опубликованные и доставленные сообщения в секунду, подключения, потребители и очереди, затем — десять самых заполненных очередей с их потребителями и память и свободный диск каждого узла.

  1. Включите плагин управления, если он ещё не включён (образы Docker с management уже его содержат). Его API слушает на порту 15672.

    rabbitmq-plugins enable rabbitmq_management
  2. Создайте пользователя только с тегом monitoring: он может читать состояние узлов, тревог и очередей, и не может ничего менять.

    rabbitmqctl add_user dumbmonit 'a-long-password'
    rabbitmqctl set_user_tags dumbmonit monitoring
  3. Дайте ему пустые права на каждом виртуальном хосте, чьи очереди вы хотите видеть. Тогда он сможет перечислять эти очереди, и всё равно не сможет публиковать, потреблять или читать сообщение. Повторите с -p для каждого другого виртуального хоста.

    rabbitmqctl set_permissions -p / dumbmonit '^$' '^$' '^$'
  4. В DumbMonit введите адрес одного узла, например «rabbit.lan», или «https://rabbit.lan:15671», когда API обслуживается по TLS. Один узел отчитывается за весь кластер: тревоги и разделения каждого узла, и каждую очередь.

Учётные данныеПоля
Имя пользователя / парольПользователь monitoring, созданный выше, отправляется как базовая аутентификация HTTP.

Без прав на виртуальном хосте его очереди не перечисляются по отдельности; итоги по кластеру всё равно их учитывают.

Адрес: имя хоста или IP (rabbit.lan), host:port, или полный URL с префиксом пути за обратным прокси. Опции: протокол (по умолчанию HTTP), порт (15672), проверка сертификата, таймаут запроса (10 с), и число отдельно наблюдаемых очередей (100, от 0 до 500).