RabbitMQ消息追踪之rabbitmq_tracing

rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的流入流出情况。rabbitmq_tracing插件同样会对流入流出的消息做封装,然后将封装后的消息日志存入相应的trace文件之中。


欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
在这里插入图片描述
欢迎跳转到本文的原文链接:https://honeypps.com/mq/rabbitmq-message-tracing-of-rabbitmq_tracing/

可以使用rabbitmq-plugins enable rabbitmq_tracing命令来启动rabbitmq_tracing插件。

[root@node3 opt]# rabbitmq-plugins enable rabbitmq_tracing
The following plugins have been enabled:
  rabbitmq_tracing

Applying plugin configuration to rabbit@node3... started 1 plugin.

对应的关闭插件的命令是:rabbitmq-plugins disable rabbitmq_tracing。

在Web管理界面 “Admin”右侧原本只有"Users"、"Virtual Hosts"以及”Policies“这个三Tab项,在添加rabbitmq_tracing插件之后,会多出”Tracing"这一项内容:
这里写图片描述

可以在此Tab项中添加相应的trace:
这里写图片描述

在添加完trace之后,会根据匹配的规则将相应的消息日志输出到对应的trace文件之中,文件的默认路径为/var/tmp/rabbitmq-tracing。可以在页面中直接点击“Trace log files”下面的列表直接查看对应的日志文件。

如下图,我们添加了两个trace任务。
这里写图片描述
与其相对应的trace文件如下:
这里写图片描述
再添加完相应的trace任务之后,会发现多了两个队列:
这里写图片描述
就以第一个队列amq.gen-MoyvSKQau9udetl4lUdQZw而言,其所绑定的交换器就是amq.rabbitmq.log。
这里写图片描述

由此可以看出整个rabbitmq_tracing和Firehose在实现上如出一辙,只不过rabbitmq_tracing的方式比Firehose多了一层GUI的包装,更容易使用和管理。

再来补充说明上图中“Name”,“Format”,“Max payload bytes”,"Pattern"的具体含义。“Name”,顾名思义,就是为你所要即将创建的trace任务取个名称。

“Format”表示输出的消息日志格式,有Text和JSON两种,Text格式的日志方便人类阅读,JSON的方便程序解析。
Text格式的消息日志参考如下:

================================================================================
2017-10-24 9:37:04:412: Message published

Node:         rabbit@node1
Connection:   <rabbit@node1.3.3552.0>
Virtual host: /
User:         root
Channel:      1
Exchange:     exchange
Routing keys: [<<"rk">>]
Routed queues: [<<"queue">>]
Properties:   [{<<"delivery_mode">>,signedint,1},{<<"headers">>,table,[]}]
Payload: 
trace test payload.

JSON格式的消息日志参考如下:

{
    "timestamp": "2017-10-24 9:37:04:412",
    "type": "published",
    "node": "rabbit@node1",
    "connection": "<rabbit@node1.3.3552.0>",
    "vhost": "/",
    "user": "root",
    "channel": 1,
    "exchange": "exchange",
    "queue": "none",
    "routed_queues": [
        "queue"
    ],
    "routing_keys": [
        "rk"
    ],
    "properties": {
        "delivery_mode": 1,
        "headers": {}
    },
    "payload": "dHJhY2UgdGVzdCBwYXlsb2FkLg=="
}

JSON格式的payload(消息体)默认会采用Base64进行编码,如上面的“trace test payload.”会被编码成“dHJhY2UgdGVzdCBwYXlsb2FkLg==”。

“Max payload bytes”表示每条消息的最大限制,单位为B。比如设置了了此值为10,那么当有超过10B的消息经过RabbitMQ流转时,在记录到trace文件的时候会被截断。如上text日志格式中“trace test payload.”会被截断成“trace test”。

"Pattern"用来设置匹配的模式,和Firehose的类似。如“#”匹配所有消息流入流出的情况,即当有客户端生产消息或者消费消息的时候,会把相应的消息日志都记录下来;“publish.#”匹配所有消息流入的情况;“deliver.#”匹配所有消息流出的情况。

欢迎跳转到本文的原文链接:https://honeypps.com/mq/rabbitmq-message-tracing-of-rabbitmq_tracing/


欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值