Filebeat - > Logstash索引文档两次

时间:2017-08-24 13:51:35

标签: elasticsearch logstash logstash-grok filebeat

我将Nginx日志从Filebeat发送到Logstash,后者将它们编入索引到Elasticsearch。

每个条目都会被索引两次。一旦使用了正确的grok过滤器,然后再次找不到任何字段,除了"消息"字段。

这是logstash配置。

02-节拍-input.conf中

input {
beats {
    port            => 5044
    ssl             => false
    }
}

11-nginx的-filter.conf

filter {
    if [type] == "nginx-access" {
        grok {
            patterns_dir => ['/etc/logstash/patterns']
            match => {"message" => "%{NGINXACCESS}"
        }
        date {
            match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z", "d/MMM/YYYY:HH:mm:ss Z" ]
        }
    }
}

Nginx模式

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip}\s+%{NGUSER:ident}\s+%{NGUSER:auth}\s+\[%{HTTPDATE:timestamp}\]\s+\"%{WORD:verb}\s+%{URIPATHPARAM:request}\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:response}\s+(?:%{NUMBER:bytes}|-)\s+(?:\"(?:%{URI:referrer}|-)\"|%{QS:referrer})\s+%{QS:agent}

30 elasticsearc-output.conf

output {
    elasticsearch {
        hosts => ["elastic00:9200", "elastic01:9200", "elastic02:9200"]
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
    }
}

1 个答案:

答案 0 :(得分:0)

检查文件配置!

在设置过程中,我意外取消了评论并配置了output.elasticsearch的{​​{1}}部分。

然后我还配置了配置的filebeat.yml部分,但忘了注释掉弹性搜索输出部分。

这导致一个条目被发送到logstash,在那里它是grok&d;另一个条目被直接发送到elasticsearch。