簡體   English   中英

使用自定義時間戳值更新logstash中的@timetamp字段

[英]Update @timetamp field in logstash with custom timestamp value

我有以下logstash配置文件用於解析異常堆棧跟蹤。

堆棧跟蹤

2015-03-02 09:01:51,040 [com.test.MyClass] ERROR - execution resulted in Exception
com.test.core.MyException
    <exception line1>
    <exception line2>
2015-03-02 09:01:51,040 [com.test.MyClass] ERROR - Encountered Exception, terminating execution

配置文件:

input {
stdin {}
}

filter {
  multiline {
      pattern => "(^%{TIMESTAMP_ISO8601}) | (^.+Exception+) | (^.+Error+)"
      negate => true
      what => "previous"
    }
}

output {
stdout { codec => rubydebug }
}

我能夠將堆棧跟蹤解析為單個logstash字段名稱消息 但是我希望用第一個異常行的時間戳更新@timestamp ,即2015-03-02 09:01:51,040

目前它已經為@timestamp采用默認時間戳

任何幫助將不勝感激。

您需要使用GROK過濾器來提取時間值,然后使用DATE過濾器將值解析為@timestamp

例如:

input {
        stdin {
                codec => multiline {
                        pattern => "(^%{TIMESTAMP_ISO8601}) | (^.+Exception+) | (^.+Error+)"
                        negate => true
                        what => "previous"
                }
        }
}

filter {

        grok {
                match => ["message" , "%{TIMESTAMP_ISO8601:logtime} %{GREEDYDATA:msg}"]
        }

        date {
                match => ["logtime", "YYYY-MM-dd HH:mm:ss,SSS"]
        }
}

output {
    stdout { codec => rubydebug }
}

此外,在輸入中使用多行而不是在過濾器中,過濾器中的多行將消息折疊為消息數組,而不是單個消息字符串。 因此,它將導致grok和日期過濾器失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM