使用 rsyslog 将日志发送到远程服务器

使用 rsyslog 将日志发送到远程服务器

我正在尝试使用 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

相关内容