2017-08-24 4 views
0

Les journaux Nginx sont envoyés de Filebeat vers Logstash qui les indexe dans Elasticsearch.Filebeat -> Logstash indexant deux fois les documents

Chaque entrée est indexée deux fois. Une fois avec le filtre de grok correct et puis de nouveau sans champs trouvés à l'exception du champ "message".

Ceci est la configuration de logstash.

02 battements-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 Patterns

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 elasticsearch-output.conf

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

Répondre

0

Vérifiez votre configuration filebeat!

Lors de la configuration, j'avais accidentellement annulé et configuré la section output.elasticsearch du filebeat.yml.

J'ai ensuite également configuré la section output.logstash de la configuration, mais j'ai oublié de commenter la section de sortie elasticsearch. Cela a entraîné l'envoi d'une entrée à logstash où elle a été générée et une autre à envoyer directement à elasticsearch.