Ubuntu 上 RabbitMQ 日志管理实操指南
一 日志位置与实时查看
- 默认日志目录为:/var/log/rabbitmq/,常见文件包括:rabbit@.log(主日志)、rabbit@_sasl.log(SASL 认证日志)。
- 常用查看方式:
- 实时查看:sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
- 分页查看:less /var/log/rabbitmq/rabbit@$(hostname).log
- 查看服务启动与运行日志:sudo journalctl -u rabbitmq-server.service -f
- 提示:主机名可通过命令 hostname 获取,文件名中的 与之对应。
二 日志级别与输出路径配置
- 方式一 使用新版配置文件 rabbitmq.conf(推荐)
- 配置文件路径:/etc/rabbitmq/rabbitmq.conf。若文件不存在可新建,参考示例:
- 设置全局文件日志级别:log.file.level = warning
- 按模块设置日志级别:log_levels.rabbit = [{connection, error}, {channel, error}]
- 使配置生效:sudo systemctl restart rabbitmq-server
- 方式二 使用经典 Erlang 配置文件 rabbitmq.config(仅当需要高级项时使用)
- 配置文件路径:/etc/rabbitmq/rabbitmq.config,示例:
- [{rabbit, [{log_levels, [{connection, error}, {channel, error}]}]}].
- 使配置生效:sudo systemctl restart rabbitmq-server
- 方式三 仅调整日志目录(通过环境变量)
- 编辑:/etc/rabbitmq/rabbitmq-env.conf,设置例如:RABBITMQ_LOG_BASE=/data/log/rabbitmq
- 使配置生效:sudo systemctl restart rabbitmq-server
- 说明:新版(3.7+)优先使用 rabbitmq.conf;经典配置使用 rabbitmq.config。二者可共存,但同一项以新版配置优先。
三 日志轮转与清理
- 使用新版配置启用按时间轮转(推荐)
- 在 /etc/rabbitmq/rabbitmq.conf 增加:
- log.file.rotation.date = $D0 # 每天轮转
- log.file.rotation.count = 5 # 保留最近 5 个归档
- 使配置生效:sudo systemctl restart rabbitmq-server
- 使用传统服务脚本轮转
- 执行:sudo service rabbitmq-server rotate-logs(会滚动重命名现有日志文件)
- 建议配合 logrotate 做按日/按大小清理(创建 /etc/logrotate.d/rabbitmq):
- /var/log/rabbitmq/*.log {
daily
rotate 7
missingok
compress
delaycompress
postrotate
systemctl reload rabbitmq-server >/dev/null 2>&1 || true
endscript
}
- 提示:避免日志无限增长,生产环境建议“按天轮转 + 保留有限份数”。
四 消息内容级别的追踪
- Firehose(内置,低开销追踪投递/投递事件)
- 开启:rabbitmqctl trace_on
- 关闭:rabbitmqctl trace_off
- 说明:开启后,消息会被复制到名为 amq.rabbitmq.trace 的 topic 交换机,routing key 形如 publish. 与 deliver.;对性能有影响,排查完及时关闭。
- rabbitmq_tracing 插件(Web 界面管理追踪)
- 启用插件:rabbitmq-plugins enable rabbitmq_tracing
- 访问管理界面:http://<服务器IP>:15672,在 Admin → Tracing 中新建 Trace,按需记录指定 vhost、exchange/queue 的 publish/consume 事件,便于问题定位。