← Назад к вопросам

С помощью чего можно следить за RabbitMQ?

1.0 Junior🔥 111 комментариев
#Soft Skills#Брокеры сообщений

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Мониторинг 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.

С помощью чего можно следить за RabbitMQ? | PrepBro