You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Grok提取Logstash含AM/PM的mm/dd格式日期时间并转24小时制

解决方案

1. 修正后的Grok匹配规则

你之前使用的%{TIME}默认仅捕获时分秒部分,不会包含后续的AM/PM标识,需要自定义捕获组提取完整的日期时间串:

^\[event\] (?<raw_datetime>%{MONTHNUM}/%{MONTHDAY} %{TIME} [AP]M) %{GREEDYDATA:description}

2. 完整Logstash Filter配置

搭配date过滤器实现自动转24小时制、固定年份为2020:

filter {
  # 第一步:Grok提取字段
  grok {
    match => { "message" => "^\[event\] (?<raw_datetime>%{MONTHNUM}/%{MONTHDAY} %{TIME} [AP]M) %{GREEDYDATA:description}" }
  }
  # 第二步:补全固定年份2020
  mutate {
    add_field => { "raw_datetime" => "2020 %{raw_datetime}" }
  }
  # 第三步:解析时间并自动转24小时制
  date {
    match => [ "raw_datetime", "yyyy MM/dd hh:mm:ss.S a" ]
    timezone => "Asia/Shanghai" # 替换为你日志实际对应的时区
    target => "log_timestamp" # 可修改为你想要存储的字段名,填@timestamp则覆盖默认时间字段
  }
  # 可选:清理不需要的临时字段
  mutate {
    remove_field => [ "raw_datetime", "message" ]
  }
}

关键说明

  • 时间格式中的a是Java SimpleDateFormat的标识符,专门用于匹配AM/PM标识,搭配12小时制的hh小时标识,解析时会自动转换为24小时制的时间对象
  • 固定2020年的逻辑通过手动拼接年份前缀实现,避免date过滤器默认使用当前年份
  • timezone参数需要和日志生成的时区对齐,否则会出现时间偏移

内容的提问来源于stack exchange,提问作者Kamikaze K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 18:15:04