我正在尝试将 CheckPoint 防火墙日志发送到 Elasticsearch 8.0。我有一台运行 Rsyslog 的机器 A 192.168.1.123,它在端口 514 上接收日志,这些日志会记录到文件中;还有一台运行 Elasticsearch 和 Kibana 的机器 B 192.168.1.234。它们都是 Rocky Linux 8.5。出于测试目的,firewalld 已关闭,机器 B 上的 SELinux 设置为 Permissive
我可以配置/etc/filebeat/modules.d/checkpoint.yml
从机器 A 上的文件读取并发送到机器 B 上的 Elasticsearch
- module: checkpoint
firewall:
enabled: true
var.input: file
var.paths: ["/rsyslog/Checkpoint.log"]
/etc/filebeat/filebeat.yml
这是机器 A 上的相关部分:
output.elasticsearch:
hosts: ["machineB.mydomain.dom:9200"]
protocol: "https"
username: "elastic"
password: "mypassword"
ssl.verification_mode: none
如果我在机器 AI 上检查,/var/lib/filebeat/registry/filebeat/log.json
会看到很多行(包括字段)"source":"/rsyslog/Checkpoint.log"
;如果我在机器 BI 上浏览 Kibana,会看到日志。
问题:
我希望将 Elastic Stack 全部托管在机器 B 上,因此我配置了 Rsyslog 将日志从机器 A 通过端口 9001 转发到机器 B,并在机器 B 上安装了 Filebeat。
tcpdump
在机器B上显示正在接收日志
16:49:32.478830 IP 192.168.1.123.46757 > 192.168.1.234.9001: UDP, length 833
16:49:32.478853 IP 192.168.1.123.46757 > 192.168.1.234.9001: UDP, length 960
16:49:32.478966 IP 192.168.1.123.46757 > 192.168.1.234.9001: UDP, length 960
/etc/filebeat/modules.d/checkpoint.yml
这是机器B上的配置:
- module: checkpoint
firewall:
enabled: true
var.input: syslog
var.syslog_host: 0.0.0.0
var.syslog_port: 9001
/etc/filebeat/filebeat.yml
这是机器 B 上的相关部分:
output.elasticsearch:
hosts: ["localhost:9200"]
protocol: "https"
username: "elastic"
password: "mypassword"
ssl.verification_mode: none
filebeat test output
返回 OK
使用此配置,/var/lib/filebeat/registry/filebeat/log.json
机器 B 上是空的,如果我浏览 Kibana,我可以filebeat-8.0.1-checkpoint-firewall-pipeline
在“堆栈管理”>“提取管道”下看到,但如果我转到“主页”>“分析”>“发现”,则不会收到任何日志
我还尝试通过启用以下功能来增加 filebeat 的日志详细程度:
logging.level: debug
logging.selectors: [ beat, publisher, service ]
但/etc/filebeat/filebeat.yml
我在里面的文件中没有看到任何有用的东西/var/log/filebeat/
我不知道还能去哪里找
答案1
显然var.syslog_host: 0.0.0.0
不起作用。
要么var.syslog_host: 192.168.1.234
或者var.syslog_host: machineB.mydomain.dom