ELK - 重复日志
ELK - Duplicate log
我在使用 Logstash (v7.11) 和 Elasticsearch 时遇到了一个奇怪的问题。
我目前有两个配置文件:
01-beats-syslog.conf (with logs sent by 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 的流量。
如果您将 path.config 指向一个目录,那么 logstash 将连接该目录中的所有文件,从所有输入中读取事件,运行 通过所有过滤器,然后将它们全部发送到所有的输出。在单独的管道中配置 pipelines.yml 到 运行 每个配置文件,或者在输出周围使用条件
output {
if [type] == "syslog" {
elasticsearch {
hosts => ["localhost:9200"] ...
我在使用 Logstash (v7.11) 和 Elasticsearch 时遇到了一个奇怪的问题。
我目前有两个配置文件:
01-beats-syslog.conf (with logs sent by 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 的流量。
如果您将 path.config 指向一个目录,那么 logstash 将连接该目录中的所有文件,从所有输入中读取事件,运行 通过所有过滤器,然后将它们全部发送到所有的输出。在单独的管道中配置 pipelines.yml 到 运行 每个配置文件,或者在输出周围使用条件
output {
if [type] == "syslog" {
elasticsearch {
hosts => ["localhost:9200"] ...