RabbitMQ在Ubuntu上如何进行日志分析
导读:Ubuntu上RabbitMQ日志分析实操指南 一 日志位置与快速查看 默认日志目录为:/var/log/rabbitmq/,常见文件为:rabbit@.log(主日志)和 rabbit@-sasl.log(Erlang SASL 错误...
Ubuntu上RabbitMQ日志分析实操指南
一 日志位置与快速查看
-
默认日志目录为:/var/log/rabbitmq/,常见文件为:rabbit@.log(主日志)和 rabbit@-sasl.log(Erlang SASL 错误)。在 RabbitMQ 3.7+ 中通常仅使用一个日志文件。通过管理插件(默认端口 15672)的 Admin → Logs 页面也可在线查看节点日志。若以服务方式运行,可直接用命令行检索与跟踪。
-
常用查看命令(按需选择):
- 实时跟踪:sudo tail -f /var/log/rabbitmq/rabbit@*.log
- 分页查看:sudo less /var/log/rabbitmq/rabbit@*.log
- 关键字检索:sudo grep -i “error|warning|critical” /var/log/rabbitmq/rabbit@*.log
- 统计连接数变化:sudo grep “accepting AMQP connection” /var/log/rabbitmq/rabbit@*.log | sort | uniq -c
二 日志格式与关键线索
- 日志为 Erlang Lager 格式,典型行以时间戳与等级开头,例如:
- =INFO REPORT==== 28-Apr-2015::14:11:16 ===
- 常见等级:debug / info / warning / error / critical / none(默认级别为 info)。
- 启动阶段可快速定位节点与环境信息:版本号、Erlang 版本、节点名、配置文件路径、内存限制、磁盘限制、默认账户 guest 创建与权限等,有助于判断初始化是否成功与资源阈值是否合理。
三 按场景分析的高频命令
- 连接与通道异常
- 统计“accepting AMQP connection”次数,观察连接风暴:
sudo grep “accepting AMQP connection” /var/log/rabbitmq/rabbit@*.log | sort | uniq -c - 查看当前连接与通道概况:
rabbitmqctl list_connections name channels state peer_host peer_port
- 统计“accepting AMQP connection”次数,观察连接风暴:
- 队列与消息堆积
- 查看各队列的就绪与未确认消息数:
rabbitmqctl list_queues name messages_ready messages_unacknowledged - 定位大内存队列:
rabbitmqctl list_queues name memory | sort -nr | head
- 查看各队列的就绪与未确认消息数:
- 节点与资源告警
- 检查节点环境变量与阈值(含内存/磁盘):
rabbitmqctl environment - 动态查看内存水位(示例将阈值设为 0.5):
rabbitmqctl set_vm_memory_high_watermark 0.5
rabbitmqctl status | grep vm_memory_high_watermark
- 检查节点环境变量与阈值(含内存/磁盘):
- 管理界面辅助
- 启用管理插件后,访问 http://:15672,在 Admin → Logs 查看日志,在 Overview 观察节点资源与队列概况。
四 进阶 消息级追踪与问题复现
- Firehose(内置追踪)
- 开启:rabbitmqctl trace_on;关闭:rabbitmqctl trace_off
- 原理:将发布与投递的消息以 amq.rabbitmq.trace(topic)形式复制,routing key 形如 publish. 与 deliver.。用于定位消息是否到达/被消费,但会带来性能开销,务必短时使用并及时关闭。
- rabbitmq_tracing 插件(可视化追踪)
- 启用:rabbitmq-plugins enable rabbitmq_tracing
- 在管理界面 Admin → Tracing 创建跟踪,按需记录指定 vhost/exchange/queue 的发布与投递事件,便于回放与审计。
五 日志轮转与输出配置
- 轮转与保留
- 发行版包通常自带 logrotate 配置(/etc/logrotate.d/rabbitmq-server),默认按周轮转并压缩,可按需调整保留份数与周期。
- 输出目的地与级别
- 文件输出:设置 log.file、log.file.level(默认 info),支持按大小/日期滚动(如 log.file.rotation.size、log.file.rotation.date、log.file.rotation.count)。
- 控制台输出:设置 log.console = true 与 log.console.level。
- Syslog:设置 log.syslog = true,可指定 transport(tcp/tls)、protocol(rfc5424)、ip/port、identity/facility 等。
- 环境变量:通过 RABBITMQ_LOGS 指定日志文件路径或设为 - 输出到标准输出(优先级高于配置文件)。
- 日志分类与细粒度控制
- 可按分类设置级别与文件,例如仅将连接日志降为 warning:
log.file.level = debug
log.connection.level = warning - 也可将特定分类日志重定向到独立文件,如:
log.federation.file = rabbit_federation.log - 禁用某类日志:log.upgrade.level = none。
- 可按分类设置级别与文件,例如仅将连接日志降为 warning:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: RabbitMQ在Ubuntu上如何进行日志分析
本文地址: https://pptw.com/jishu/769472.html
