我有两个本地VM运行CentOS 7来模拟我们的生产环境。1个代理服务器和1个集中式(ELK)服务器。在ELK服务器上,运行logstash来从正在运行的实例中收集al。代理服务器通过Ansible提供Rsyslog (和log转速)。安装syslog并进行日志旋转。复制配置。重新启动服务。非常基本的配置,只有一个位于*.* @@IP.ADD.RE.SS:12345中的10-logstash.conf中的/etc/rsyslog.d/,其余的都是标准配置。但是,它似乎没有将日志发送到logstash。当我跟踪/var/log/messages时,我会看到代理容器在实例上运行的输出。但是没有一个被转发到日志服务器。
所以我搜索并找到了DebuggingOnDemand选项。当我停止rsyAdd.1-d服务并手动运行sudo rsyslog -n时,它将开始转发日志。当我运行rsyslog -d (没有sudo)时,我被通知它不能写入.pid文件。因此,我猜想,当它作为一个服务运行时,它没有足够的权利来正常工作?没有sudo,我无法手动启动rsyslog。但是我可以启动rsyslog作为一个服务(sudo service rsyslog start),并确认它正在运行。
那么问题到底在哪里呢?这是过程本身吗?它不能读取日志文件吗?我无法想象我的配置是错误的,因为rsyslog在手动运行时转发是正确的。我不知道什么日志或输出提供,所以如果有任何需要,请询问,我将尽力提供。
rsyslogd -N 10输出(与另一个在生产中工作的配置文件,相同的转发器,但定义了更多的选项)
rsyslogd: version 7.4.7, config validation run (level 10), master config /etc/rsyslog.conf
rsyslogd: module 'imuxsock' already in this config, cannot be added [try http://www.rsyslog.com/e/2221 ]
rsyslogd: $WorkDirectory: /rsyslog/work can not be accessed, probably does not exist - directive ignored [try http://www.rsyslog.com/e/2181 ]
rsyslogd: End of config validation run. Bye.提前感谢!
发布于 2020-07-25 13:06:20
当然,这与SELinux有关,但是由于禁用SELinux不是最好的选择,所以我纠正了这个问题:
sudo semanage port -d -t unreserved_port_t -p tcp 9092
sudo semanage port -a -t http_port_t -p tcp 9092然后重新启动syslogd。您可以通过以下命令看到SELinux警报:
tail -f /var/log/audit/audit.log发布于 2018-07-31 14:52:58
我知道这个问题很老,但我也有过同样的问题。基于发布的内容,我很难弄清楚该做什么。
对我来说,通过运行以下命令解决了这个问题:
semanage port -m -t syslogd_port_t -p tcp 443在那之后,我只需要弹出rsyslog服务:
systemctl restart rsyslog我还找到了一篇文章,它很好地处理了selinux可能阻塞syslog/rsyslog服务的其他情况。
https://support.logz.io/hc/en-us/articles/209486429-Troubleshooting-Rsyslog-SELinux-configuration
希望这能节省一些时间!
发布于 2018-01-26 23:35:42
在rsyslog (转发器)主机上找到了此禁用SELinux的解决方案。理想情况下,更细粒度的配置也能工作。
https://serverfault.com/questions/861446
复制相似问题