С помощью чего можно следить за RabbitMQ?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Мониторинг RabbitMQ
РабитМК предоставляет несколько инструментов и подходов для отслеживания состояния и производительности системы обработки сообщений.
Management UI
Первый и самый доступный способ — это встроенный Management Plugin, который включен по умолчанию. Веб-интерфейс доступен на порту 15672 (http://localhost:15672) с дефолтными учёт данными guest:guest. Здесь вы можете:
- Просматривать состояние очередей, биржи и соединений
- Отслеживать количество сообщений в очередях
- Контролировать потребителей и память
- Управлять пользователями и правами доступа
import pika
import time
# Пример: мониторинг через Management API
import requests
def get_queue_stats(queue_name, host="localhost", user="guest", password="guest"):
url = f"http://{host}:15672/api/queues/%2F/{queue_name}"
response = requests.get(url, auth=(user, password))
if response.status_code == 200:
data = response.json()
return {
"messages": data.get("messages", 0),
"consumers": data.get("consumers", 0),
"idle_since": data.get("idle_since")
}
return None
stats = get_queue_stats("my_queue")
print(f"Сообщений в очереди: {stats[messages]}")
Метрики и Prometheus
Для интеграции с системами мониторинга используется RabbitMQ Prometheus Plugin. Он экспортирует метрики в формате Prometheus на endpoint /metrics:
# Пример запроса метрик Prometheus
import requests
response = requests.get("http://localhost:15692/metrics")
metrics = response.text
# Парсим метрики и отправляем в Prometheus
Основные метрики:
rabbitmq_queue_messages_total— общее количество сообщенийrabbitmq_queue_messages_ready— готовые к обработке сообщенияrabbitmq_queue_consumers— активные потребителиrabbitmq_process_resident_memory_bytes— использованная память
Логирование
RabbitMQ генерирует подробные логи в /var/log/rabbitmq/. Вы можете настроить уровень логирования:
# Активировать детальное логирование
rabbitmqctl set_log_level debug
Инструменты стороннего сторонних
Grafana часто используется вместе с Prometheus для визуализации метрик RabbitMQ. Есть готовые дашборды, которые показывают:
- Количество подключений
- Пропускную способность (messages/sec)
- Использование памяти и дискового пространства
- Статус очередей и узлов кластера
ELK Stack (Elasticsearch, Logstash, Kibana) позволяет централизованно собирать и анализировать логи RabbitMQ.
Программный мониторинг
import pika
from pika import BasicProperties
connection = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
channel = connection.channel()
# Получить информацию о канале
print(f"Канал открыт: {channel.is_open}")
print(f"Номер канала: {channel.channel_number}")
# Назначить callback для мониторинга
def on_channel_error(channel, exception):
print(f"Ошибка канала: {exception}")
channel.add_on_close_callback(on_channel_error)
Команды RabbitMQ CLI
# Статистика очередей
rabbitmqctl list_queues name messages consumers
# Статистика соединений
rabbitmqctl list_connections
# Статистика каналов
rabbitmqctl list_channels
# Проверить здоровье узла
rabbitmqctl status
Выбор инструмента зависит от масштаба системы: для pequeных систем достаточно Management UI, для production обычно используют комбо Prometheus + Grafana, а для больших распределённых систем добавляют ELK Stack.