Logstash:如何在日期过滤器模式中匹配时区 ID“CET”?

Posted

技术标签:

【中文标题】Logstash:如何在日期过滤器模式中匹配时区 ID“CET”?【英文标题】:Logstash: How to match the timezone ID 'CET' in a date filter pattern? 【发布时间】:2021-12-19 09:18:22 【问题描述】:

在 Logstash 中,我想使用日期过滤器将字符串转换为时间戳。字符串如下所示:

Fri Nov 05 06:24:28.651 CET 2021

我尝试了以下模式无济于事:

  date 
      match => [ "syslog_timestamp", "EEE MMM dd HH:mm:ss.SSS ZZZ yyyy"]
      locale => "en_US"
      timezone => "Europe/Berlin"
      target => "syslog_timestamp"
  

这很令人困惑,因为 Logstash is said to use the Joda library 和 Joda 反过来说 'CET' is a legal timezone ID。我通过直接在 Java 应用程序中测试 Jody 库 v2.10.13 来确认结果。

如何在日期过滤器中解析 CET/CEST?

【问题讨论】:

【参考方案1】:

由于根据 Joda 的文档,time zone names (z) cannot be parsed 和 ZZZ 仍然不匹配夏令时变体“CEST”,因此我在 Logstash 中通过将时区代码作为文本处理并使用标准时区传递多个模式来解决这个问题和过滤器的夏令时区:

match => [ "syslog_timestamp", "EEE MMM dd HH:mm:ss.SSS 'CET' yyyy", "EEE MMM dd HH:mm:ss.SSS 'CEST' yyyy"]

【讨论】:

以上是关于Logstash:如何在日期过滤器模式中匹配时区 ID“CET”?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用时区感知日期过滤模型?

在 PySpark 中为镶木地板文件过滤日期时间范围和时区

Logstash 日期过滤器无法正常工作

如何在javascript中获取时区的当前日期

Logstash匹配日志日期

未找到 logstash grok 过滤器模式