Доступ к журналам RabbitMQ в режиме реального времени

Я наткнулся на интересную тему, когда читал книгу «RabbitMQ в действии» Мэннинга. По-видимому, можно настроить потребителей так, чтобы они могли получать все журналы RabbitMQ в режиме реального времени в потребителе.

Я читал, что RabbitMQ публикует журналы для обмена типа topic под названием amq.rabbitmq.log. Потребители могут прослушивать определенные уровни серьезности, например, их можно отфильтровать, установив ключ маршрутизации на error, warning или info.

Мой вопрос; Я установил сервер RabbitMQ по умолчанию на свой компьютер, но не смог найти обмен с именем amq.rabbitmq.log. Только одно, которое может быть связано, это amq.rabbitmq.trace, но оно используется для событий (таких как queue.deleted, queue.created, ...), другими словами, это не то, что я ищу.

Кто-нибудь может внести ясность в мои вопросы? Почему обмен amq.rabbitmq.log недоступен при чистой установке сервера RabbitMQ?

цитата:

Возможно, когда вы перечисляли биржи с помощью rabbitmqctl, вы заметили биржу с именем amq.rabbitmq.log, тип которой — тема. RabbitMQ опубликует свои журналы на этом обмене, используя уровень серьезности в качестве ключа маршрутизации — вы получите сообщение об ошибке, предупреждение и информацию. Основываясь на том, что вы узнали из предыдущих глав, вы можете создать потребителя для прослушивания этих журналов и соответствующей реакции.


person Ozkan    schedule 16.09.2019    source источник


Ответы (2)


Вы должны включить его. Создайте файл /etc/rabbitmq/rabbitmq.conf и убедитесь, что в нем присутствует эта строка:

log.exchange = true

Я только что нашел исходный код для веб-сайта rabbitmq.com и нигде не вижу, чтобы этот параметр был задокументирован. Если вы хотите, зарегистрируйте новую проблему в этом репозитории, и я ее исправлю, или откройте для этого свой собственный PR.


ПРИМЕЧАНИЕ. команда RabbitMQ отслеживает rabbitmq-users список рассылки и лишь иногда отвечает на вопросы в StackOverflow.

person Luke Bakken    schedule 17.09.2019
comment
В чем разница между плагином обмена событиями и вышеупомянутой конфигурацией? - person bumblebee; 17.09.2019
comment
@ Люк, настройка выполнена, но обмен все еще не создан. Я также не могу создать его вручную, я получаю access refused, когда пытаюсь создать обмен с именем amq.rabbitmq.log. Я что-нибудь забыл? - person Ozkan; 17.09.2019
comment
Обновление: я нашел дополнительную информацию здесь: github.com/rabbitmq/rabbitmq-server/issues/ 1973. Я думаю, мне нужно обновиться до последней версии RabbitMQ. У меня сейчас 3.7.14. - person Ozkan; 17.09.2019
comment
@Ozkan Озкан, я думаю, ты не понял моего вопроса. RabbitMQ предоставляет подключаемый модуль под названием evet_exchange, который можно использовать для использования событий RabbitMQ, связанных с очередями, обменами, подключениями, пользователями и многим другим. В чем разница между потребителем журналов и потребителем событий? Насколько я знаю, эти журналы совпадают с генерируемыми событиями. - person bumblebee; 17.09.2019
comment
@bumblebee Вы все еще не совсем правильно прочитали мой вопрос :), amq.rabbitmq.log для чистого ведения журнала. event_exchange, как вы сказали. Ищите amq.rabbitmq.trace в моем вопросе - person Ozkan; 17.09.2019
comment
@Ozkan - да, вам понадобится более свежая версия. Извините за путаницу. Я забыл, что мы должны были исправить это недавно. - person Luke Bakken; 17.09.2019

Это немного поздно, но надеюсь, что это поможет кому-то. Пока это работает для меня. Обмен «amq.rabbitmq.log» будет создан автоматически самим брокером rabbitmq. Версия брокера RabbitMQ, которую я использую: 3.8.1.

добавлять

лог.обмен = истина

в файл rabbitmq.conf и перезапустите службу rabbitmq.

Вам нужно будет перезапускать службу rabbitmq каждый раз, когда вы обновляете файл rabbitmq.conf.

откройте cmd и введите в окнах следующее:

  1. остановка службы rabbitmq
  2. установка RabbitMQ-сервиса
  3. запуск службы rabbitmq
  4. rabbitmqctl start_app
person xXSnowBunny    schedule 11.02.2020