首先,感谢您花时间研究这个问题,我们非常感激。
我已经运行附加的 rsyslog.conf 配置一段时间了,直到今天,由于磁盘已满,我不得不重新启动 rsyslog。结果是 rsyslog 现在使用所有以前的权限(当前为 root|root rw 以确保测试安全)记录到新位置(在 .conf 文件中更新)。
我面临的问题是,无论我怎么尝试,rsyslog 都不会输出文件。我运行了 tcpdump,但仍然在接收数据。匹配条件(主机 IP 地址)不应该有变化,配置也没有变化。
任何帮助,尤其是我可以运行的调试命令,都将不胜感激。我宁愿学习一些新东西(比如 rsyslog),也不愿卸载它,而只使用 syslog-ng... 以下是配置:
### Modules
$ModLoad imtcp
$ModLoad imudp
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
### Set log file permissions
$FileOwner root
$FileGroup root
$FileCreateMode 0777
$DirCreateMode 0777
$Umask 0022
$PrivDropToUser root
$PrivDropToGroup root
### Listeners
# bind ruleset to tcp listener
$InputTCPServerBindRuleset remote
# and activate it:
$InputTCPServerRun 514
$InputUDPServerBindRuleset remote
$UDPServerRun 514
### Templates
#Format the message correctly
$template MsgFormat,"%msg%\n"
# log every host in its own directory
##$template TESTLOG,"/opt/rsyslog/var/log/test.log"
### Rulesets
# Local Logging
# N/A None required at this point in time
#
# Remote Logging
$RuleSet remote
#---MY MATCHING RULE---#
if ($fromhost-ip == "192.168.1.1") then ?TESTLOG
先谢谢了 :)
答案1
您正在为日志文件使用自定义路径,因此 selinux 阻止了您。尝试发出setenforce 0
并重新启动 rsyslog。如果现在可以正常工作,则确认您的问题出在 selinux 上。
要永久纠正继续使用 selinux 的问题,您需要发出
semanage fcontext -a -t var_log_t '/opt/rsyslog(/.*)?'; restorecon -RF /opt/rsyslog
之后,重新启动 rsyslog。