解决rsyslogd在容器中无法正常使用的问题

尝试在容器中运行rsyslog解决没有/var/log/secure日志的问题

1
2
3
4
# docker run -it --rm centos /bin/bash
# yum -y install rsyslog
# /usr/sbin/rsyslogd
# logger “this is a test”

会发现/var/log/message 中没有任何信息

因为在centos7中日志是被systemd托管的,所以默认配置都是systemd相关的

1
2
3
4
5
# The imjournal module bellow is nowused as a message source instead of imuxsock.
$ModLoad imuxsock # provides supportfor local system logging (e.g. via logger command)
$ModLoad imjournal # provides accessto the systemd journal
#$ModLoad imklog # reads kernelmessages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability

默认启用的是imjournal这行,而我们用不上,所以把imjournal这行注释掉,同时保持imuxsock留着

与此同时配置中下面还有几个相关的配置需要修改

1
2
$OmitLocalLogging 改成off
$IMJournalStateFile imjournal.state #这行需要注释掉

启动rsyslogd 再看下还是不行,netstat -anlp 看并没有/dev/log的sock链接接出来
找了半天发现/etc/rsyslog.conf/下还有个listen配置一看还是和journal相关的,注释掉,再启动,ok了