1

Quelqu'un peut-il me dire ce que je fais de mal, ou pourquoi Logstash ne veut pas analyser un horodatage ISO8601?Erreur de l'analyseur de logstash, l'horodatage est mal formé

Le message d'erreur que je reçois est

action a échoué ... "erreur" => { "type" => "mapper_parsing_exception", "raison" => "a échoué à analyser [timestamp]" "Because_by" => {"type" => "illegal_argument_exception", "raison" => "Invalide format: \" 2017-03-24 12: 14: 50 \ "est malformé à \" 17-03- 24 12: 14: 50 \ ""}}

ligne du fichier journal de l'échantillon (dernier octet d'adresse IP remplacée par 000 sur le but)

2017-03-24 12:14:50 87.123.123.000 12345678.domain.com GET /smil:stream_17.smil/chunk_ctvideo_ridp0va0r600115_cs211711500_mpd.m4s - HTTP/1.1 200 750584 0.714 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" https://referrer.domain.com/video/2107 https fra1 "HIT, MISS" 12345678.domain.com

motif GROK (utilisez http://grokconstructor.appspot.com/do/match pour vérifier) ​​

RAW %{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{IPV4:clientip}%{SPACE}%{HOSTNAME:http_host}%{SPACE}%{WORD:verb}%{SPACE}\/(.*:)?%{WORD:stream}%{NOTSPACE}%{SPACE}%{NOTSPACE}%{SPACE}%{WORD:protocol}\/%{NUMBER:httpversion}%{SPACE}%{NUMBER:response}%{SPACE}%{NUMBER:bytes}%{SPACE}%{SECOND:request_time}%{SPACE}%{QUOTEDSTRING:agent}%{SPACE}%{URI:referrer}%{SPACE}%{WORD}%{SPACE}%{WORD:location}%{SPACE}%{QUOTEDSTRING:cache_status}%{SPACE}%{WORD:account}%{GREEDYDATA}

configuration Logstash (côté entrée):

input { 
    file { 
     path => "/subfolder/logs/*" 
     type => "access_logs" 
     start_position => "beginning" 
    } 
} 
filter { 
    # skip first two lines in log file with comments 
    if [message] =~ /^#/ { 
     drop { } 
    } 

    grok { 
     patterns_dir => ["/opt/logstash/patterns"] 
     match => { "message" => "%{RAW}" } 
    } 

    date { 
     match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ] 
     locale => "en" 
    } 

    # ... (rest of the config omitted for readability) 
}
+0

Pouvez-vous envoyer votre mappage Elasticsearch pour cet index (en particulier le champ 'timestamp')? – fylie

Répondre

1

Je suis assez sûr que cela est causé par le champ timestamp cartographié à un type dans Elasticsearch qu'il n'analyse pas. Si vous postez votre mapping d'index, je serais heureux de le regarder.

Une note: Vous pouvez résoudre rapidement ceci en ajoutant remove_field car si le filtre date est réussi, la valeur de ce champ sera tirée en @timestamp. En ce moment, vous avez la même valeur stockée dans deux champs. Ensuite, vous n'avez pas à vous soucier de la cartographie pour le champ. :)

date { 
    match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ] 
    locale => "en" 
    remove_field => [ "timestamp" ] 
} 
+0

Merci. Tout d'abord, je vois que nous avons deux champs dans l'index, "@timestamp" et "timestamp". En effet ce dernier est mappé à un format différent de celui que j'envoie ici. – KBoek