阅读量:2
CentOS 上 RabbitMQ 日志管理策略
一 日志体系与默认路径
- 日志默认写入目录:/var/log/rabbitmq/。常见文件包括:
- rabbit@
.log :节点运行日志 - rabbit@
-sasl.log :Erlang SASL 日志(启动失败、崩溃等更细节信息) - rabbitmq.log / rabbitmq-startup.log:通用与启动过程日志
- rabbit@
- 快速确认当前生效路径与文件:
- 命令:
rabbitmq-diagnostics -q log_location - 管理界面:Admin → Logs 页面可查看与下载各节点日志
- 命令:
- 说明:SASL 日志用于记录 Erlang/OTP 层面的事件,有助于定位节点无法启动等问题。
二 日志级别与输出目标
- 调整日志级别(示例仅调整连接类日志为 warning):
- 编辑配置文件(新版 key=value 格式):/etc/rabbitmq/rabbitmq.conf
[ {rabbit, [ {log_levels, [ {connection, warning} ]} ]} ]. - 旧版 Erlang 格式:/etc/rabbitmq/rabbitmq.config
[ {rabbit, [ {log_levels, [ {connection, warning} ]} ]} ]. - 可用类别:channel、connection、federation、mirroring;级别:none、error、warning、info、debug。
- 编辑配置文件(新版 key=value 格式):/etc/rabbitmq/rabbitmq.conf
- 输出目标与路径自定义:
- 环境变量方式(可在 systemd 环境或 rabbitmq-env.conf 中设置):
RABBITMQ_LOGS=/data/logs/rabbitmq.log RABBITMQ_SASL_LOGS=/data/logs/rabbitmq-sasl.log - 目录方式(在 rabbitmq-env.conf 中设置):
LOG_BASE=/data/logs/rabbitmq - 修改后需重启节点生效:
systemctl restart rabbitmq-server。
- 环境变量方式(可在 systemd 环境或 rabbitmq-env.conf 中设置):
三 日志轮转与保留实践(rsyslog 方案)
- 建议采用系统级 rsyslog 做按大小/时间的日志轮转,避免日志无限增长。示例(/etc/rsyslog.d/rabbitmq.conf):
# 以节点名区分文件(如 rabbit@node1) template(name="RabbitMQFile" type="string" string="/var/log/rabbitmq/%programname%.log") if $programname startswith "rabbit" then { action(type="omfile" dynaFile="RabbitMQFile" fileCreateMode="0644" dirCreateMode="0755" flushInterval="1" asyncWriting="off") # 按大小轮转:100MB,保留 7 份 action(type="rotate" file="/var/log/rabbitmq/rabbit.log" size="100M" rotate="7" compress="on" missingok="on" copytruncate="on") stop } - 若系统使用 journald,可通过
ForwardToSyslog=yes将服务日志送入 rsyslog 再按上述策略轮转。 - 注意:避免同时使用外部日志代理(如 Filebeat)与 copytruncate,以免产生重复或锁竞争;选择其一即可。
四 审计与追踪日志
- Firehose(内置追踪):将消息的 publish/deliver 事件以 amq.rabbitmq.trace(topic) 发出,routing key 形如 publish.
、deliver. 。适合临时深度排查。 - rabbitmq_tracing 插件:在管理界面或命令行启用后,可创建 trace,将匹配事件写入磁盘/队列,便于持久化审计。
- 风险提示:开启追踪会显著影响性能,排查完成后务必关闭;生产环境建议优先用外部集中式日志采集而非长期开启 Firehose。
五 变更路径与容量规划
- 将日志与数据迁移到独立磁盘(示例挂载到 /data):
- 创建目录并授权:
mkdir -p /data/rabbitmq/{data,log} chown -R rabbitmq:rabbitmq /data/rabbitmq - 配置路径(rabbitmq-env.conf):
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data RABBITMQ_LOG_BASE=/data/rabbitmq/log - 重启节点:
systemctl restart rabbitmq-server - 验证:
rabbitmq-diagnostics -q log_location应指向新目录。
- 创建目录并授权:
- 容量与告警:
- 磁盘告警阈值默认至少 50MB,可按业务调整(如
disk_free_limit);当可用空间低于阈值会触发流控。 - 内存水位默认 0.4(占用超过 40% 阻塞发布),可结合
vm_memory_high_watermark_paging_ratio调整内存向磁盘换页的触发点。
- 磁盘告警阈值默认至少 50MB,可按业务调整(如
以上就是关于“CentOS上RabbitMQ日志管理策略”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm