RabbitMQ消息追踪之rabbitmq_tracing
rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的流入流出情况。rabbitmq_tracing插件同样会对流入流出的消息做封装,然后将封装后的消息日志存入相应的trace文件之中。
可以使用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格式的消息日志参考如下:
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.#”匹配所有消息流出的情况。
springcloud:springboot整合RabbitMQ|RabbitMQ保证消息可靠性(三) 上一章我们讲解了rabbitmq的四种交换机类型、七种通讯方式。本章我们将整合springboot来向大家完整演示rabbitmq的使用,并说明如何保证消息的可靠性。
相关文章
- RabbitMQ消息队列+安装+工具介绍
- Wireshark抓包:详解Http协议--请求消息
- RabbitMQ 消息的可靠投递
- 【Vue】通过【消息定阅pubsub】实现【任意组件】之间的参数传递(图文+代码示例)
- RabbitMQ消息队列(2):工作队列之消息分发机制
- 快速理解Kafka分布式消息队列框架
- 异步消息的传递-回调机制
- Qt自定义事件实现及子线程向主线程传送事件消息
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
- RabbitMQ消息可靠性分析
- Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能-转自阿里中间件
- 《日志管理与分析权威指南》一1.2.3 什么是日志消息
- Java使用RabbitMQ之消息确认(confirm模板)
- ignite中的消息使用实例
- Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示-状态重置(九)
- 【RocketMQ】消息积压判断及解决
- Windows进程通信——WM_COPYDATA消息