rabbitmq trace 日志的使用以及其疑惑之处
RabbitMQ 默认日志里只有类似客户端“accpet/close”等信息,对于有异常或者跟踪消息内部结构就比较麻烦了。
不过MQ有个rabbitmq_tracing插件,安装该插件后在控制台的管理tab页,就可以看到多了一个trace的菜单。
trace文件位于/var/tmp/rabbitmq-tracing/all.log。
其中,最重要的是理解pattern的格式。一般来跟踪消息时会涉及到两个部分:有没有发布到MQ,有没有发出去。其抓包记录的格式如下:
publish是到exhange的时间;recevied是到queue的时候,并不是推送到消费者的时间,如果消费慢,那么积压是必然的,可能会很久后才被处理,这个只能在消费端跟踪。
但是要抓某个队列的发布或者消费测试了很多遍,总觉得这个pattern很模糊。晚上又仔细查看了插件的官网,找到如下:
The firehose publishes messages to the topic exchange amq.rabbitmq.trace with
routing key either "publish.exchangename", for messages entering the broker, or "deliver.queuename", for messages leaving the broker;
也就是抓publish跟着exchangename走,抓消费跟着queuename走。
https://www.rabbitmq.com/firehose.html