我正在使用 Centos 8 和 Elasticsearch、Logstash 和 Kibana 7.4 版设置 ELK 集群。我的问题是 Logstash 无法接收通过 syslog 发送的事件。将 Logstash 配置为从文件中读取并将其发送到 elasticsearch 可以正常工作。
基础概述,该服务器安装了 3 个系统。
我已禁用 SELinux 以确保它不会对其产生影响。Logstash 配置正在使用端口 5144,我可以看到它运行良好:
[root@elk-1 conf.d]# netstat -tulpn | grep 5144
udp 0 0 0.0.0.0:5144 0.0.0.0:* 15838/java
对于防火墙规则我使用以下内容(firewalld):
firewall-cmd --set-default-zone=internal
firewall-cmd --permanent --zone=internal --add-port=514/tcp #syslog port
firewall-cmd --permanent --zone=internal --add-port=514/udp #syslog port
firewall-cmd --permanent --zone=internal --add-port=5514/tcp #syslog forwarded port
firewall-cmd --permanent --zone=internal --add-port=5514/udp #syslog forwarded port
firewall-cmd --permanent --zone=internal --add-port=5600/tcp #kibana
firewall-cmd --permanent --zone=internal --add-port=5601/tcp #kibana
firewall-cmd --permanent --zone=internal --add-port=9600/tcp #logstash
firewall-cmd --permanent --zone=internal --add-port=9200/tcp #elasticsearch
firewall-cmd --permanent --zone=internal --add-port=9300/tcp #elasticsearch
firewall-cmd --permanent --zone=internal --add-port=80/tcp #http
firewall-cmd --permanent --zone=internal --add-port=443/tcp #https
firewall-cmd --zone=internal --add-forward-port=port=514:proto=udp:toaddr=127.0.0.1:toport=5514 --permanent
firewall-cmd --zone=internal --add-forward-port=port=514:proto=tcp:toaddr=127.0.0.1:toport=5514 --permanent
firewall-cmd --zone=internal --add-masquerade --permanent
因此我将流量从 514 重定向到 5144。我可以使用 tcpdump 查看通过端口 514 的流量。但是我没有看到端口 5144 上有任何流量。即使在调试模式下,检查 Logstash 日志也没有任何帮助。
我的logstash的输入部分是:
input {
udp {
port => 5144
type => syslog
}
}
并输出:
output {
elasticsearch {
hosts => [ "10.248.1.31:9200" ]
manage_template => false
index => "fgt-%{+YYYY.MM.dd}"
}
}
* 更新 *
将 Logstash 设置为使用 root 而不是 logstash 用户,并将配置文件设置为监听 514,这样就成功了。但是我知道这不是最好的主意,希望能有更好的解决方案。
关于为什么 Logstash 没有从 syslog 中获取流量,您有什么想法吗?
谢谢