簡體   English   中英

無法在logstash / elasticSearch中解析日期中的字符串

[英]Not able to parse string to date in logstash/elasticSearch

我創建了一個logstash腳本來讀取日志文件,該日志文件具有格式為“2018-05-08T12:18:53.506 + 0530”的各種時間戳。 我試圖使用日志存儲中的日期過濾器解析它到目前為止

date{
     match => ["edrTimestamp","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","ISO8601"]
     target => "edrTimestamp"
}

運行上面的logstash腳本,它會創建一個彈性搜索索引。 但是到目前為止還沒有解析字符串。 它還在索引中顯示日期解析異常。

它創建這樣的輸出。

{
          "tags": [
            "_dateparsefailure"
          ],
          "statusCode": "805",
          "campaignRedemptionLimitTotal": 1000,
          "edrTimestamp": "2018-05-22T16:41:25.162+0530 ",
          "msisdn": "+919066231327",
          "timestamp": "2018-05-22T16:41:25.122+0530",
          "redempKeyword": "print1",
          "campaignId": "C910101-1527004962-1582",
          "category": "RedeemRequestReceived"
        }

請告訴我上面的代碼中有什么不對>我嘗試了很多其他的替代方案,但仍然沒有用。

您的問題是您的時間戳在其末尾有一個空格"edrTimestamp": "2018-05-22T16:41:25.162+0530 ",這導致日期解析失敗。 你需要添加一個:

mutate {
  strip => "edrTimestamp"
}

在你的日期過濾之前。

我不認為你應該逃避Z.所以你可能想要這樣的東西:

yyyy-MM-dd'T'HH:mm:ss,SSS

此外,你不應該使用“Z”,因為你的時間不是祖魯(0偏移)。 您將希望包含偏移量作為模式的一部分。 Heroku grok調試應用程序對此很有用。

如果我傳遞你的字符串

2018-05-08T12:18:53.506+0530

然后使用過濾器%{TIMESTAMP_ISO8601}匹配,此模式由以下子模式組成:

 TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?

暫無
暫無

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

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