我在使用Logstash (v7.11)和Elasticsearch时遇到一个奇怪的问题。
我现在有两个配置文件:
-
01-beats-syslog.conf(使用winlogbeat发送的日志)
input { beats { port => 5044 ssl => false } } filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
-
02-network-syslog.conf(包含无代理设备(如交换机、防火墙等)的日志)
input { tcp { port => 514 type => syslog } udp { port => 514 type => syslog } } filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => ["localhost:9200"] index => "syslog-%{+YYYY.MM}" } stdout { codec => rubydebug } }
由于某些原因,一个"winlogbeat"日志最终存放在"network-syslog"文件中。索引(除真实syslog流量外)…每个配置文件都监听不同的端口,配置有什么问题?
我还检查了我没有防火墙规则将流量转发到514,事实上,使用tcpdump,我没有看到该端口上来自winlogbeat的流量。
如果您指向路径。配置到一个目录,那么logstash将连接目录中的所有文件,从所有输入读取事件,通过所有过滤器运行它们,并将它们发送到所有输出。要么配置管道。Yml在单独的管道中运行每个配置文件,或者在输出
周围使用条件output {
if [type] == "syslog" {
elasticsearch {
hosts => ["localhost:9200"] ...