RabbitMQ
Брокер сообщений: тревоги по памяти и диску, остановленные узлы и разделения сети, очереди, которые заполняются без читателей, очереди, которые больше не работают, и поток сообщений.
DumbMonit читает API управления с пользователем, помеченным monitoring, с
пустыми правами: он видит состояние узлов, тревоги и очереди, и не может
публиковать, потреблять, читать сообщение или что-либо менять. Один узел
отчитывается за весь кластер.
Отказ, за которым стоит следить, — тот, о котором клиенты не сообщают. Когда
узел пересекает верхнюю границу памяти или лимит свободного диска, RabbitMQ
поднимает тревогу и блокирует каждого издателя в кластере: приложения просто
зависают на publish, без ошибки. Второй — очередь, которая продолжает
заполняться, потому что сервис, читавший из неё, остановился.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики с префиксом dumbmonit_rabbitmq_. Суммарные значения — это
счётчики: графики и правила превращают их в скорости.
| Метрика | Что | Метки |
|---|---|---|
version_info | значение 1 | version, erlang, cluster |
connections, channels, consumers, queues | итоги по кластеру | |
messages_ready, messages_unacked | сообщения, ожидающие во всех очередях, и доставленные, но ещё не подтверждённые | |
messages_published_total, messages_delivered_total, messages_redelivered_total, messages_unroutable_total | поток сообщений; unroutable — сообщения, для которых не было связанной очереди | |
alarm | 1, пока тревога поднята; память и диск присутствуют всегда, 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_drained | node | |
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. Она сообщает, что не так, в одном предложении (тревоги, узлы и разделения, очереди с сообщениями без потребителя, не работающие очереди), затем — готовые и неподтверждённые сообщения, опубликованные и доставленные сообщения в секунду, подключения, потребители и очереди, затем — десять самых заполненных очередей с их потребителями и память и свободный диск каждого узла.
Создание пользователя RabbitMQ с тегом monitoring
Заголовок раздела «Создание пользователя RabbitMQ с тегом monitoring»-
Включите плагин управления, если он ещё не включён (образы Docker с management уже его содержат). Его API слушает на порту 15672.
rabbitmq-plugins enable rabbitmq_management -
Создайте пользователя только с тегом monitoring: он может читать состояние узлов, тревог и очередей, и не может ничего менять.
rabbitmqctl add_user dumbmonit 'a-long-password'rabbitmqctl set_user_tags dumbmonit monitoring -
Дайте ему пустые права на каждом виртуальном хосте, чьи очереди вы хотите видеть. Тогда он сможет перечислять эти очереди, и всё равно не сможет публиковать, потреблять или читать сообщение. Повторите с -p для каждого другого виртуального хоста.
rabbitmqctl set_permissions -p / dumbmonit '^$' '^$' '^$' -
В DumbMonit введите адрес одного узла, например «rabbit.lan», или «https://rabbit.lan:15671», когда API обслуживается по TLS. Один узел отчитывается за весь кластер: тревоги и разделения каждого узла, и каждую очередь.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Имя пользователя / пароль | Пользователь monitoring, созданный выше, отправляется как базовая аутентификация HTTP. |
Без прав на виртуальном хосте его очереди не перечисляются по отдельности; итоги по кластеру всё равно их учитывают.
Адрес: имя хоста или IP (rabbit.lan), host:port, или полный URL с
префиксом пути за обратным прокси. Опции: протокол (по умолчанию HTTP), порт
(15672), проверка сертификата, таймаут запроса (10 с), и число отдельно
наблюдаемых очередей (100, от 0 до 500).