使用rabbitmq_tracing插件
rabbitmq_tracing插件提供消息追踪功能,它能追踪流入流出RabbitMQ的消息,并对其进行封装,将封装后的消息日志存入相应的trace文件中。
未开启SSL的RabbitMQ单机实例,支持开启rabbitmq_shovel插件。RabbitMQ集群实例和开启SSL的RabbitMQ单机实例,不支持开启rabbitmq_shovel插件。
操作影响
- trace日志文件存在打满磁盘空间的风险,在高负载状态下建议不要开启rabbitmq_tracing插件。
- trace日志文件占用的磁盘空间在插件关闭后才会被释放,建议不要长期开启该插件,定位完成后关闭trace任务和插件。
前提条件
已购买实例。
使用rabbitmq_tracing插件
- 开启rabbitmq_tracing插件,具体步骤请参考开启RabbitMQ实例插件。
- 登录RabbitMQ WebUI页面。
- 在顶部导航栏选择“Admin”,进入Admin页面。
- 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。
图1 Virtual Hosts页面
- 单击待创建trace的Vhost名称,进入Vhost详情页面。
图2 待创建trace的Vhost名称
- 在“Permissions”区域,为Vhost添加guest权限。
使用trace功能的Vhost必须配置guest权限,否则创建trace时会报错。图3 为Vhost添加guest权限
- 在右侧导航栏选择“Tracing”,进入Tracing页面。
图4 Admin页面
- 在“Add a new trace”区域,输入以下参数,单击“Add trace”,新增一个trace。
表1 trace参数说明 参数
说明
Virtual host
选择待创建trace的Vhost名称。
Name
自定义trace的名称,用于区分不同的trace。
Format
输出消息日志的格式。支持“Text”和“JSON”两种格式,“Text”格式方便阅读,“JSON”格式方便解析。
Tracer connection username
指定创建trace的用户名。
Tracer connection password
指定创建trace的密码。
Max payload bytes
每条消息的最大限制,单位为B。
假设“Max payload bytes”设置为“10”,当有超过10B的消息经过RabbitMQ流转时就会被载断,例如“trace test payload”会被载断成“trace test”。
Pattern
设置匹配的模式。取值示例如下:
- #:追踪所有进入和离开RabbitMQ的消息
- publish.#:追踪所有进入RabbitMQ的消息
- deliver.#:追踪所有离开RabbitMQ的消息
- publish.delay_exchange:追踪进入指定交换机的信息,delay_exchange为交换机名称,请根据实际情况修改。
- deliver.delay_queue:追踪离开指定队列的消息,delay_queue为队列名称,请根据实际情况修改。
图5 新增一个trace
trace创建成功后,在“All traces”区域,显示已创建的trace列表。
图6 trace列表
- (可选)如果RabbitMQ实例为集群,在“Node”中切换到其他节点,重复8,为其他所有节点创建trace。
图7 切换节点
- 当trace日志文件中存入消息日志后,单击trace日志文件名称,查看日志内容。
图8 trace日志文件
“delay_exchange_trace.log”的日志内容如图9所示。
“delay_queue_trace.log”的日志内容如图10所示。
关闭trace任务和插件
- 在Tracing页面的“All traces”区域,单击“Stop”,关闭trace任务。
图11 关闭trace任务
- 在RabbitMQ实例控制台的“插件管理”页面,单击rabbitmq_tracing后的“关闭”,弹出“关闭插件”对话框。
- 单击“是”,跳转到“后台任务管理”页面,任务状态变为“成功”时,表示成功关闭rabbitmq_tracing插件。