![](/img/trans.png)
[英]Parsing a string as date in logstash while inserting in 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.