CentOS7容器内日志输出至本地syslog问题求助
解决CentOS7容器中日志无法写入/var/log/messages的问题
我之前也踩过这个坑,咱们一步步来排查和修复:
1. 确认rsyslog服务是否正常运行
首先进入容器后,先检查rsyslog服务的状态:
systemctl status rsyslog
如果显示inactive (dead),那就手动启动它,并设置开机自启:
systemctl start rsyslog systemctl enable rsyslog
很多时候容器启动后rsyslog并不会自动拉起,这是最常见的原因。
2. 检查rsyslog配置是否包含messages写入规则
打开rsyslog的主配置文件/etc/rsyslog.conf,确认是否存在以下规则:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
这条规则的意思是:所有info级别及以上的日志(排除邮件、认证、定时任务日志)都写入/var/log/messages。如果没有这条,就手动添加,然后重启rsyslog服务:
systemctl restart rsyslog
3. 测试日志写入时指定明确的日志级别
有时候直接用logger "lior"可能因为默认的日志facility/级别不在messages的匹配规则里,试试指定级别再测试:
logger -p user.info "test message for messages log"
然后再查看日志:
cat /var/log/messages
4. 优化容器启动参数(可选)
如果上面的步骤都试过还是不行,可以调整容器启动命令,确保systemd和rsyslog能正常初始化:
docker run -dit --name rsyslog_base_centos7 \ --privileged \ --tmpfs /run \ --tmpfs /tmp \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ rsyslog/rsyslog_base_centos7:latest /usr/sbin/init
添加--tmpfs /run、--tmpfs /tmp和挂载cgroup,能让容器内的systemd运行更稳定,间接保证rsyslog服务正常启动。
按照这些步骤操作后,应该就能看到logger的消息出现在/var/log/messages里了。
内容的提问来源于stack exchange,提问作者loshri
相关产品推荐
相关产品推荐

