Ubuntu RabbitMQ监控与日志管理指南
systemctl或service命令查看RabbitMQ服务运行状态,确保服务正常启动。sudo systemctl status rabbitmq-server # Ubuntu 16.04及以上版本
sudo service rabbitmq-server status # 旧版本
rabbitmqctl命令获取节点的详细信息(如内存使用、磁盘空间、队列数量、连接数等),是运维人员常用的诊断工具。sudo rabbitmqctl status
list_queues查看队列名称、消息数量、消费者数量;list_connections查看当前连接信息;list_channels查看通道状态,快速定位队列积压或异常连接。sudo rabbitmqctl list_queues name messages consumers
sudo rabbitmqctl list_connections
sudo rabbitmq-plugins enable rabbitmq_management
sudo systemctl restart rabbitmq-server
http://服务器IP:15672,使用默认账号guest/guest(仅本地访问,生产环境需创建新用户并修改权限)登录。界面可查看队列状态、消息速率、连接数、交换机配置等,支持实时刷新和简单告警配置。sudo rabbitmq-plugins enable rabbitmq_prometheus
vm_memory_high_watermark阈值导致阻塞)、磁盘空间(避免因磁盘满导致服务崩溃)、CPU使用率(反映节点负载)。/var/log/rabbitmq/目录下,主要包括:
rabbit@<hostname>.log:主进程运行日志(记录启动、运行中的关键事件和错误);rabbit@<hostname>_upgrade.log:升级日志(记录版本升级过程);rabbitmq-startup.log:启动过程日志(记录服务启动时的配置加载和初始化信息)。rabbitmq-diagnostics命令快速确认日志位置,避免路径错误。rabbitmq-diagnostics -q log_location
tail -f命令实时跟踪日志输出,快速发现异常(如错误或警告信息)。sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
grep命令过滤日志内容(如查找“error”关键字),定位问题根源。grep "error" /var/log/rabbitmq/rabbit@$(hostname).log
/etc/rabbitmq/rabbitmq-env.conf(若文件不存在则创建),添加或修改以下参数,指定日志存储目录(需提前创建目录并赋予权限)。LOG_BASE=/data/logs/rabbitmq # 日志根目录
RABBITMQ_LOGS=rabbit@$(hostname).log # 主日志文件名(可选)
sudo systemctl restart rabbitmq-server
logrotate工具,可通过配置实现日志自动轮转(按大小或时间分割)、压缩和删除旧日志。
/etc/logrotate.d/rabbitmq,内容如下:/var/log/rabbitmq/*.log {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志
missingok # 文件不存在不报错
notifempty # 日志为空不轮转
copytruncate # 复制日志后清空原文件(避免重启服务)
}
sudo logrotate -d /etc/logrotate.d/rabbitmq # 干运行测试
sudo logrotate -f /etc/logrotate.d/rabbitmq # 强制立即轮转