Skip to content

Настройка журналирования RabbitMQ в Syslog и подсистему ЖУРНАЛЛИСТ

RabbitMQ поддерживает вывод журналов в файл, stdout и (в новых версиях) напрямую в syslog. Для интеграции с подсистемой ЖУРНАЛЛИСТ рекомендуется использовать syslog или файловое логирование с последующей пересылкой через системный syslog.

Общая схема

RabbitMQ:

  • генерирует логи (узел, подключения, очереди, ошибки)
  • отправляет их в syslog или файл
  • syslog (rsyslog / syslog-ng) пересылает данные в ЖУРНАЛЛИСТ

Где настраивается логирование

Файл конфигурации:

bash
/etc/rabbitmq/rabbitmq.conf

Вариант 1. Прямая отправка в syslog

(поддерживается в современных версиях RabbitMQ)

Базовая настройка

ini
log.console = true
log.console.level = info

log.syslog = true
log.syslog.facility = local0
log.syslog.level = info

Дополнительно

ini
log.syslog.identity = rabbitmq

Перезапуск

bash
systemctl restart rabbitmq-server

Вариант 2. Через файл (рекомендуется для production)

Настройка RabbitMQ

ini
log.file = /var/log/rabbitmq/rabbit.log
log.file.level = info

Настройка rsyslog (imfile)

bash
# /etc/rsyslog.d/rabbitmq.conf

input(type="imfile"
      File="/var/log/rabbitmq/*.log"
      Tag="rabbitmq"
      Facility="local0")

Пересылка в ЖУРНАЛЛИСТ

bash
local0.* @@journalist-server:514

Перезапуск

bash
systemctl restart rsyslog

syslog-ng (альтернатива)

bash
source s_rabbitmq {
    file("/var/log/rabbitmq/*.log");
};

destination d_journalist {
    tcp("journalist-server" port(514));
};

log {
    source(s_rabbitmq);
    destination(d_journalist);
};

Вариант 3. Через stdout (systemd)

Если RabbitMQ настроен на вывод в stdout:

ini
log.console = true

Тогда:

bash
journalctl -u rabbitmq-server

и далее через rsyslog:

bash
module(load="imjournal")

if $programname == 'rabbitmq-server' then @@journalist-server:514
& stop

Проверка

  1. Проверить локальные логи:
bash
tail -f /var/log/rabbitmq/rabbit.log

или:

bash
journalctl -u rabbitmq-server
  1. Выполнить операции:
  • создать очередь
  • отправить сообщение
  • остановить/запустить узел
  1. Убедиться, что события появились в ЖУРНАЛЛИСТ

Какие события попадают

  • запуск и остановка узла
  • подключения клиентов
  • ошибки очередей
  • проблемы маршрутизации
  • события кластеризации
  • ошибки аутентификации

Рекомендации

  • использовать отдельный facility (local0–local7)
  • использовать TCP для передачи
  • ограничивать уровень логирования (info/warn)
  • для production — использовать файловый вариант + rsyslog

Особенности RabbitMQ

  • высокая событийность при нагрузке
  • важны события подключения и очередей
  • возможны burst-нагрузки

Когда использовать syslog

Рекомендуется:

  • при централизованном мониторинге
  • при анализе очередей и сообщений
  • для корреляции с Kafka, приложениями и API

Краткий вывод

RabbitMQ может быть интегрирован с подсистемой ЖУРНАЛЛИСТ через syslog или системные средства Linux. Это позволяет включить события очередей и брокера сообщений в единую систему анализа, повышая прозрачность и управляемость распределенных систем.