2017-05-21 1 views
0

J'utilise Filebeat et Logstash pour envoyer des journaux à Elasticsearch. Je peux voir mes journaux dans Kibana mais les journaux ne sont pas triés correctement en fonction de l'horodatage de l'enregistrement du journal. J'ai essayé de créer un champ séparé dateTime pour l'horodatage d'enregistrement de journal, mais il semble qu'il n'est pas possible de trier la table dans Kibana par cette colonne.Les journaux de Kibana ne sont pas triés par horodatage de journal

Kibana screenshot

Quelqu'un pourrait expliquer ce qui pourrait être une solution dans cette situation?

filebeat

filebeat.prospectors: 
- input_type: log 
    paths: 
    - /var/log/app.log 
    fields_under_root: true 
    multiline.pattern: '^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}' 
    multiline.negate: true 
    multiline.match: after 
registry_file: /var/lib/filebeat/registry 

output.logstash: 
    hosts: ["host_name:5044"] 
    ssl.certificate_authorities: ["..."] 

logstash

input { 
    beats { 
    port => 5044 
    ssl => true 
    ssl_certificate => "..." 
    ssl_key => "..." 
    } 
} 

filter { 
    if [type] == "filebeat" { 
    grok { 
     match => { "message" => "(?<dateTime>[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})"} 
    } 
    } 
} 

output { 
    elasticsearch { 
    hosts => "elasticsearch:9200" 
    } 
} 

Répondre

0

Cette fonctionnalité est exactement ce que the date filter est fait pour. Ajouter ceci après votre expression grok:

date { 
    match => [ "dateTime", "HH:mm:ss.SSS" ] 
} 

Cela définira le champ @timestamp que sortes Kibana par être la valeur dans ce domaine.

+0

Merci, mais il n'a pas écrasé les valeurs '@ timestamp', il vient de créer le champ' dateTime' avec l'horodatage actuel du journal. Btw, comment puis-je ajouter des valeurs mois, jour et année à l'horodatage actuel du journal? – rw412