Logstash 日期格式 grok 模式

Logstash date format grok pattern

我有一个日志文件,其日期时间格式为 'yyyyMMdd_HHmmss_SSS'。我成功地用 _ 作为分隔符解析了它,并在 ES 中获得了 3 个不同的文本字段。但我需要将其转换为 ISO_8601 以便我可以按日期、按小时或按分钟查询和可视化数据。

如果您不是特别需要 ISO-8601,但更关心获得可查询时间戳的事件,the date filter 听起来更适合您。

filter {
  date {
    match => [ "logdate", "yyyyMMdd_HHmmss_SSS" ]
  }
}

这会将 @timestamp 字段设置为 date-searchable 字段。

但是,如果您确实需要 Grok 来完成这项工作,您可能最适合使用自定义正则表达式。

(?<logyear>\d{4,})(?<logmonth>\d\d)(?<logday>\d\d)_(and so on)

这利用 single-digit 捕获来构建您的字符串。