2017-02-09 1 views
2

Mon horodatage dans les journaux sont dans le format ci-dessouscomment remplacer @timestamp de logstash avec horodatage journal

2016-04-07 18:11:38.169 which is yyyy-MM-dd HH:mm:ss.SSS 

Ce fichier journal ne soit l'un (stocké/ancien), et je suis en train de remplacez ce timbre par la valeur logstash @timestamp pour améliorer la visualisation Kibana.

Mon filtre logstash est comme ci-dessous

 grok { 
     match => { 
      "message" => [ "(?<timestamp>(\d){4}-(\d){2}-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){3}) %{SYSLOG5424SD} ERROR u%{BASE16FLOAT}.%{JAVACLASS} - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::\"2b948ed5-12c0-4ae0-9b99-f1ee01191001\"- Actual Time taken to process \:\: %{NUMBER:responseTime:int}" ] 
      } 

    } 

date { 
     match => [ "timestamp:date" , "yyyy-MM-dd HH:mm:ss.SSS Z" ] 
     timezone => "UTC" 
     target => "@timestamp" 
     } 

Mais, ce ne est pas remplacer la valeur @timestamp, la valeur JSON

{ 
    "_index": "logstash-2017.02.09", 
    "_type": "logs", 
    "_id": "AVoiZq2ITxwgj2avgkZa", 
    "_score": null, 
    "_source": { 
    "path": "D:\\SoftsandTools\\Kibana\\Logs_ActualTimetakentoprocess.log", 
    "@timestamp": "2017-02-09T10:23:58.778Z", **logstash @timestamp** 
    "responseTime": 43, 
    "@version": "1", 
    "host": "4637", 
    "message": "2016-04-07 18:07:01.809 [SimpleAsyncTaskExecutor-3] ERROR s.v.wsclient.RestClient - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::\"2b948ed5-12c0-4ae0-9b99-f1ee01191001\"- Actual Time taken to process :: 43", 
    "timestamp": "2016-04-07 18:07:01.809" **Mine time stamp** 
    } 

ligne du journal de l'échantillon -

2016-04-07 18:11:38.171 [SimpleAsyncTaskExecutor-1] ERROR s.v.wsclient.RestClient - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::"2b948ed5-12c0-4ae0-9b99-f1ee01191001"- Actual Time taken to process :: 521 

Pouvez-vous S'il vous plaît aider et laissez-moi savoir, où je vais tordre ici ..

+1

Veuillez ajouter un exemple de logline. – Fairy

+0

merci pour la réponse .. Mise à jour – Vishwa

Répondre

1

Vous devriez essentiellement un grok match pour utiliser le timestamp de votre ligne de journal:

grok { 
    patterns_dir => ["give your path/patterns"] 
    match => { "message" => "^%{LOGTIMESTAMP:logtimestamp}%{GREEDYDATA}" }   
} 

Dans votre fichier de configuration assurez-vous d'avoir le crépitement qui correspond à votre timestamp dans le journal, ce qui pourrait ressembler à quelque chose comme ceci:

LOGTIMESTAMP %{YEAR}%{MONTHNUM}%{MONTHDAY} %{TIME} 

Et puis une fois que vous avez fait le grok filtrage que vous pourriez être en mesure d'utiliser la valeur filtrée comme:

mutate { 
    add_field => { "newtimestamp" => "%{logtimestamp}" } 
    remove_field => ["logtimestamp"] 
} 
date { 
    match => [ "newtimestamp" , "ISO8601" , "yyyy-MM-dd HH:mm:ss.SSS" ] 
    target => "@timestamp" <-- the timestamp which you wanted to apply on 
    locale => "en" 
    timezone => "UTC" 
} 

Espérons que cela aide!

+0

Merci pour la réponse. J'ai mon grok, mes excuses ... question mise à jour à nouveau. Je vais essayer de muter et mettre à jour .. merci encore – Vishwa

+0

Oui s'il vous plaît, faites le moi savoir. – Kulasangar

+0

Et assurez-vous d'ajuster le * grok * match selon le vôtre. – Kulasangar