2017-02-09 7 views
2

Meine Zeitstempel in den Protokollen sind im Format wie untenwie logstash @timestamp mit Protokollzeitstempel

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

Diese Protokolldatei nicht ein (gespeichert/alte) lebt, ist zu ersetzen, und ich versuche, zu Ersetzen Sie diesen timestamp durch den logstash @timestamp Wert für die Verbesserung in der Kibana Visualisierung.

Mein Filter in logstash ist wie unter

 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" 
     } 

Aber, es ist nicht die @timestamp Wert ersetzt, Json Wert

{ 
    "_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** 
    } 

Beispiel Logzeile -

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 

Könnten Sie Bitte helfen Sie mir und lassen Sie mich wissen, wo ich hier wring bin ..

+1

Fügen Sie eine Beispielprotokollzeile hinzu. – Fairy

+0

danke für die Antwort .. Aktualisiert – Vishwa

Antwort

1

Sie sollten grundsätzlich ein grok Spiel um die timestamp Ihrer Protokollzeile verwenden müssen:

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

In Ihrem Pattern-Datei müssen Sie die Rüttler haben, die Ihre timestamp im Protokoll übereinstimmt, die geeignet sind, in etwa so aussehen:

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

Und dann, wenn Sie die grok getan haben Filterung Sie können den gefilterten Wert zu verwenden, wie in der Lage sein:

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" 
} 

Hoffe, das hilft!

+0

Danke für die Antwort. Ich habe meinen Grok, Entschuldigung .. aktualisierte Frage erneut. Ich werde versuchen mit muate und update .. danke nochmal – Vishwa

+0

Ja bitte, lass es mich wissen. – Kulasangar

+0

Und stellen Sie sicher, dass das * grok * -Match Ihrem entspricht. – Kulasangar