我正在尝试使用 Logstash、Elasticsearch 和 Kibana 设置集中式日志记录,但在将日志发送到我的日志服务器时遇到了问题。
Logstash 正在监听 TCP 5000,并成功从我的一台服务器接收日志,但无法接收其他服务器的日志。我可以通过 telnet 连接到 5000 上的日志服务器,Logstash 正在接收消息,因此我认为问题出在 rsyslog 发送日志上。
我在 CentOS 6.5 上,并已将以下内容添加到 /etc/rsyslog.conf:
$WorkDirectory /var/lib/rsyslog # where to place spool files
*.* @@logs.<domain_removed>.com:5000
更改后,rsyslog 重新启动,没有任何错误,但 Logstash 没有收到任何内容。假脱机目录是空的,所以我不认为发送失败。
May 16 20:46:10 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x- pid="5097" x-info="http://www.rsyslog.com"] exiting on signal 15.
May 16 20:46:10 kernel: imklog 5.8.10, log source = /proc/kmsg started.
May 16 20:46:10 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3556" x-info="http://www.rsyslog.com"] start
关于如何追踪错误有什么想法吗?
编辑:此问题是由 SELinux 引起的
答案1
SELinux 阻止 rsyslog 在端口 5000 上发送。默认情况下,SELinux 仅允许 rsyslog 在 UDP 514 上发送流量。
我向 SELinux 添加了一条例外:
$sudo semanage port -a -t syslogd_port_t -p tcp 5000