RabbitMQ消息追踪之rabbitmq_tracing
rabbitmq_tracing插件相當(dāng)于Firehose的GUI版本,它同樣能跟蹤RabbitMQ中消息的流入流出情況。rabbitmq_tracing插件同樣會對流入流出的消息做封裝,然后將封裝后的消息日志存入相應(yīng)的trace文件之中。
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
歡迎跳轉(zhuǎn)到本文的原文鏈接: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_tracingApplying plugin configuration to rabbit@node3... started 1 plugin.對應(yīng)的關(guān)閉插件的命令是:rabbitmq-plugins disable rabbitmq_tracing。
在Web管理界面 “Admin”右側(cè)原本只有"Users"、"Virtual Hosts"以及”Policies“這個三Tab項(xiàng),在添加rabbitmq_tracing插件之后,會多出”Tracing"這一項(xiàng)內(nèi)容:
可以在此Tab項(xiàng)中添加相應(yīng)的trace:
在添加完trace之后,會根據(jù)匹配的規(guī)則將相應(yīng)的消息日志輸出到對應(yīng)的trace文件之中,文件的默認(rèn)路徑為/var/tmp/rabbitmq-tracing。可以在頁面中直接點(diǎn)擊“Trace log files”下面的列表直接查看對應(yīng)的日志文件。
如下圖,我們添加了兩個trace任務(wù)。
與其相對應(yīng)的trace文件如下:
再添加完相應(yīng)的trace任務(wù)之后,會發(fā)現(xiàn)多了兩個隊(duì)列:
就以第一個隊(duì)列amq.gen-MoyvSKQau9udetl4lUdQZw而言,其所綁定的交換器就是amq.rabbitmq.log。
由此可以看出整個rabbitmq_tracing和Firehose在實(shí)現(xiàn)上如出一轍,只不過rabbitmq_tracing的方式比Firehose多了一層GUI的包裝,更容易使用和管理。
再來補(bǔ)充說明上圖中“Name”,“Format”,“Max payload bytes”,"Pattern"的具體含義?!癗ame”,顧名思義,就是為你所要即將創(chuàng)建的trace任務(wù)取個名稱。
“Format”表示輸出的消息日志格式,有Text和JSON兩種,Text格式的日志方便人類閱讀,JSON的方便程序解析。
Text格式的消息日志參考如下:
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(消息體)默認(rèn)會采用Base64進(jìn)行編碼,如上面的“trace test payload.”會被編碼成“dHJhY2UgdGVzdCBwYXlsb2FkLg==”。
“Max payload bytes”表示每條消息的最大限制,單位為B。比如設(shè)置了了此值為10,那么當(dāng)有超過10B的消息經(jīng)過RabbitMQ流轉(zhuǎn)時,在記錄到trace文件的時候會被截斷。如上text日志格式中“trace test payload.”會被截斷成“trace test”。
"Pattern"用來設(shè)置匹配的模式,和Firehose的類似。如“#”匹配所有消息流入流出的情況,即當(dāng)有客戶端生產(chǎn)消息或者消費(fèi)消息的時候,會把相應(yīng)的消息日志都記錄下來;“publish.#”匹配所有消息流入的情況;“deliver.#”匹配所有消息流出的情況。
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-message-tracing-of-rabbitmq_tracing/
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ消息追踪之rabbitmq_tracing的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ消息追踪之Firehos
- 下一篇: RabbitMQ负载均衡(1)