【问题标题】:Not able to parse string to date in logstash/elasticSearch无法在 logstash/elasticSearch 中解析迄今为止的字符串
【发布时间】:2018-11-02 13:51:07
【问题描述】:

我创建了一个 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"
        }

请告诉我上面的代码有什么问题> 我尝试了许多其他替代方法,但仍然无法正常工作。

【问题讨论】:

    标签: elasticsearch logstash elastic-stack kibana-4


    【解决方案1】:

    您的问题是您的时间戳末尾有一个空格"edrTimestamp": "2018-05-22T16:41:25.162+0530 ",,这导致日期解析失败。您需要添加:

    mutate {
      strip => "edrTimestamp"
    }
    

    在您的日期过滤器之前。

    【讨论】:

      【解决方案2】:

      我认为你不应该逃避 Z。所以你可能想要这样的东西:

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

      此外,您不应该使用“Z”,因为您的时间不是祖鲁语(0 偏移量)。您将希望将偏移量作为模式的一部分包含在内。 Heroku grok debug app 对此很有用。

      如果我传递你的字符串

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

      并使用过滤器%{TIMESTAMP_ISO8601}然后匹配,此模式由以下子模式组成:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多