Ubuntu 上 RabbitMQ 日志管理实操指南
一 日志位置与快速查看
- 默认日志目录为:/var/log/rabbitmq/。常见文件:
- rabbit@.log:RabbitMQ 应用日志
- rabbit@_upgrade.log:升级过程日志
- 若启用 SASL,还可能出现 -sasl.log(Erlang 运行时日志)
- 快速查看与跟踪:
- 查看主日志:sudo less /var/log/rabbitmq/rabbit@$(hostname).log
- 实时跟踪:sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
- 列出目录:ls -l /var/log/rabbitmq/
- 通过管理插件查看:启用 rabbitmq_management 后,访问 http://:15672,在 Admin → Logs 可在线查看节点日志片段(适合无法直连服务器时)。
二 配置日志路径与输出方式
- 配置文件位置:
- 新版(3.7+)使用 /etc/rabbitmq/rabbitmq.conf(经典配置可用 advanced.config)
- 环境变量文件:/etc/rabbitmq/rabbitmq-env.conf
- 常用配置项(rabbitmq.conf):
- 修改日志目录:log.dir = /data/logs/rabbitmq
- 修改日志文件名:log.file = rabbit.log
- 日志级别:log.file.level = debug|info|warning|error|critical|none
- 按分类设置级别(示例仅对连接降噪):
- log.connection.level = warning
- 环境变量方式(优先级高于配置文件):
- 在 rabbitmq-env.conf 中设置:RABBITMQ_LOG_BASE=/vol/pic/log/rabbitmq
- 输出到控制台(便于容器或前台调试):
- log.console = true
- log.console.level = debug
- 特殊值:RABBITMQ_LOGS=- 将所有日志输出到标准输出(通常与 systemd 日志配合)
- 说明:
- 自 3.7.0 起使用 Lager 日志库;可同时启用多种输出(文件、控制台、Syslog),并为不同输出设置不同级别。
三 日志轮转与保留策略
- 内置基于文件大小/时间的轮转(rabbitmq.conf):
- 按大小:log.file.rotation.size = 10485760(10 MB)
- 按日期:log.file.rotation.date = $D0(每日 0 点)、$H00(每小时)
- 保留个数:log.file.rotation.count = 5
- 系统级 Logrotate(Debian/RPM 包默认已配置):
- 配置文件:/etc/logrotate.d/rabbitmq-server
- 典型策略为按周轮转并压缩,可按需调整频率与保留份数,以配合磁盘容量规划。
四 按类别与输出定制日志
- 日志分类(示例):connection、channel、queue、mirroring、federation、upgrade、default。
- 为特定分类指定日志文件与级别(示例):
- 将联合日志单独写入文件:log.federation.file = rabbit_federation.log
- 降低连接日志级别:log.connection.level = warning
- 关闭升级日志:log.upgrade.level = none
- 不同输出可设置不同级别(示例):
- 控制台输出更详细(debug),文件输出保持 info:
- log.console.level = debug
- log.file.level = info。
五 消息内容级别的追踪与审计
- 启用 rabbitmq_tracing 插件后,可在管理界面 Admin → Tracing 创建跟踪,或将 amq.rabbitmq.trace / amq.rabbitmq.log 交换器绑定到队列,以记录指定 vhost 的消息收发细节。
- 命令行控制:
- 启用/关闭全局追踪:rabbitmqctl trace_on / trace_off
- 指定 vhost:rabbitmqctl trace_on -p
- 注意:开启 trace 会显著影响性能与磁盘写入,排查完成后请及时关闭。