使用 Docker 部署 RabbitMQ 没有日志?添加这两条配置,轻松搞定

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 使用 Docker 部署 RabbitMQ 没有日志?添加这两条配置,轻松搞定

使用 Docker 部署完 RabbitMQ 服务,到 /var/log/rabbitmq 目录下一看,空空如也,并没有日志文件生成。


是没有日志吗?并非如此,日志都打在了标准输出上。使用如下命令可以查看:


# docker logs -f container_name
复制代码


但平时运维的时候不可能这样来看,太麻烦了。


这里就有一个疑问了,为什么打在了标准输出上,而不是输出到文件呢?


RabbitMQ 有两个配置来定义日志输出:


  • RABBITMQ_LOG_BASE:日志文件输出路径
  • RABBITMQ_LOGS:具体的日志文件


而在 Docker 中又有些不同,在 Github 上查看源码可以看到下面一段代码:


# If $RABBITMQ_LOGS is '-', send all log messages to stdout. This is
# particularly useful for Docker images.
if [ "$RABBITMQ_LOGS" = '-' ]; then
    SASL_ERROR_LOGGER=tty
    RABBIT_LAGER_HANDLER=tty
    RABBITMQ_LAGER_HANDLER_UPGRADE=tty
else
    SASL_ERROR_LOGGER=false
    RABBIT_LAGER_HANDLER='"'${RABBITMQ_LOGS}'"'
    RABBITMQ_LAGER_HANDLER_UPGRADE='"'${RABBITMQ_UPGRADE_LOG}'"'
fi
复制代码


意思是 RABBITMQ_LOGS 如果配置成了 -,日志就会输出到标准输出。

到我的容器中打印一看,也的确如此。


# docker exec -it rabbitmq /bin/bash
bash-5.0# echo $RABBITMQ_LOGS
-
bash-5.0#
复制代码


原因搞清楚之后,解决起来就简单了,只要在 docker-compose 文件中添加两项配置即可。


version: '2'
services:
  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3.7-management-alpine
    restart: always
    environment:
      - RABBITMQ_DEFAULT_USER=username
      - RABBITMQ_DEFAULT_PASS=password
      - RABBITMQ_LOGS=
      - RABBITMQ_LOG_BASE=/var/log/rabbitmq
    volumes:
      - /var/log/rabbitmq:/var/log/rabbitmq
    ports:
      - "5672:5672"
      - "15672:15672"
复制代码


RABBITMQ_LOGS 参数可以直接留空,重启服务之后,就有日志文件了。


源码链接:

github.com/rabbitmq/ra…

参考文档:

blog.csdn.net/fvdfsdafdsa…



相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
6月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
4750 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
5月前
|
物联网 Linux 开发者
快速部署自己私有MQTT-Broker-下载安装到运行不到一分钟,快速简单且易于集成到自己项目中
本文给物联网开发的朋友推荐的是GMQT,让物联网开发者快速拥有合适自己的MQTT-Broker,本文从下载程序到安装部署手把手教大家安装用上私有化MQTT服务器。
1443 5
|
6月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
386 18
|
10月前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
1364 91
|
8月前
|
消息中间件 Java 中间件
RocketMQ实战—2.RocketMQ集群生产部署
本文主要介绍了大纲什么是消息中间件、消息中间件的技术选型、RocketMQ的架构原理和使用方式、消息中间件路由中心的架构原理、Broker的主从架构原理、高可用的消息中间件生产部署架构、部署一个小规模的RocketMQ集群进行压测、如何对RocketMQ集群进行可视化的监控和管理、进行OS内核参数和JVM参数的调整、如何对小规模RocketMQ集群进行压测、消息中间件集群生产部署规划梳理。
RocketMQ实战—2.RocketMQ集群生产部署
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
298 6
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
473 5
|
存储 JSON 网络协议
Docker面试整理-如何查看和管理Docker容器的日志?
通过本文的介绍,我们了解了如何查看和管理Docker容器的日志,包括使用 `docker logs`命令、配置日志驱动、设置日志选项和集中日志管理。掌握这些技能,不仅可以在面试中展示专业水平,也能在实际工作中高效
2176 3
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
945 2