查看rabbitmq日志,Rabbitmq Trace日志
作者:mmseoamin日期:2024-02-04

在使用rabbitmq时,我们有时需要查看消息队列生产/消费了那些消息,便于我们排错。rabbitmq中提供一个插件rabbitmq_tracing用于记录消息的日志,默认是未打开的,需要自己用命令打开

docker exec -it rabbitmq1 bash
# 查看打开的插件 
rabbitmq-plugins list
# 启动日志插件
rabbitmq-plugins enable rabbitmq_tracing
# 开启rabbitmq的tracing插件
rabbitmqctl trace_on
# 如果添加到其他虚拟主机 
# -p 参数前缀 加上你的虚拟主机名字
rabbitmqctl trace_on -p myhost
  • 关闭trace功能
    # 关闭trace功能
    rabbitmqctl trace_off
    # 关闭其他虚拟主机
    rabbitmqctl trace_off -p myhost
    
    • 停止tracing
      rabbitmq-plugins disable rabbitmq_tracing
      

      安装该插件后在控制台的管理tab页,在Admin中会发现右侧有多了一个Tracing选项

      查看rabbitmq日志,Rabbitmq Trace日志,在这里插入图片描述,第1张

      查看rabbitmq日志,Rabbitmq Trace日志,在这里插入图片描述,第2张

      • name:用于区分不同的track

      • Format:表示输出的消息日志格式,有Text和JSON两种,Text格式的日志方便人类阅读,JSON的方便程序解析

      • Pattern:用来设置匹配的模式,和Firehose的类似。如“#”匹配所有消息流入流出的记录;“publish.#”匹配所有消息流入的情况;“deliver.#”匹配所有消息流出的情况。

        其中,最重要的是理解pattern的格式。一般来跟踪消息时会涉及到两个部分:有没有发布到MQ,有没有发出去。其抓包记录的格式如下:

        查看rabbitmq日志,Rabbitmq Trace日志,在这里插入图片描述,第3张

        publish是到exhange的时间;recevied是到queue的时候,并不是推送到消费者的时间,如果消费慢,那么积压是必然的,可能会很久后才被处理,这个只能在消费端跟踪。

        官网

        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走。