【问题标题】:Logstash Date filter not working properlyLogstash 日期过滤器无法正常工作
【发布时间】:2021-04-28 15:49:49
【问题描述】:

我试图过滤消息以获取时间戳并使用日期过滤器将字符串转换为日期,但转换后的日期与原始日期不同。

过滤代码:

filter {
   grok {
      match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} \| %{LOGLEVEL:loglevel} \| %{NOTSPACE:taskid} \| %{NOTSPACE:logger} \| %{WORD:label}( \| %{INT:duration:int})?" ]
   }
  
   date {
      match => ["timestamp", "YYYY-MM-DD HH:mm:ss,SSS"]
      target => "timestamp"
   }
}

输入

2021-04-19 12:06:39,586 | INFO | 12345 | TASK_START | start

输出

 "timestamp" => 2021-01-19T06:36:39.586Z,

小时和分钟已更改

【问题讨论】:

  • 在这种情况下,您可以使用 dissect 过滤器,而不是使用 grok,它应该会更高效

标签: logstash logstash-grok


【解决方案1】:

logstash 和 elasticsearch 将日期存储为 UTC,kibana 会将其映射到浏览器的时区。默认情况下,日期过滤器将使用本地时区。因此,如果您位于亚洲/加尔各答时区,与 UTC 相比是 +05:30,那么这完全符合预期。如果时间戳字段位于不同的时区,则使用日期过滤器的时区选项来告诉它是哪个时区。

【讨论】:

    【解决方案2】:

    如果您的日志中的时间戳不是 UTC,您可以提供时区信息。 例如:

    date {
        match => ["timestamp", "YYYY-MM-DD HH:mm:ss,SSS"]
        timezone => "Asia/Kolkata"
        target => "@timestamp" // <--- this is optional, @timestamp is default
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2019-08-05
      • 1970-01-01
      • 2013-09-15
      • 2020-03-07
      • 2014-10-20
      • 2015-02-14
      • 2013-08-16
      相关资源
      最近更新 更多