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

Logstash date filter解析MSI纯时间日志报_dateparsefailure问题求助

问题原因排查
  • 首次date匹配对象错误
    你配置的第一个date过滤器直接尝试匹配完整的message字段,但你的日志message前缀包含MSI (c) (F0:8C) [等大量无关字符,并非纯时间字符串,匹配直接失败,logtime字段根本不会生成,后续拼接出的tmp_field内容无效,第二次date匹配自然也会失败。
  • 标签判断条件可能未触发
    你给过滤器加了if "curl" in [tags]的前置判断条件,如果你导入MSI日志时没有提前给日志事件打上curl标签,整个过滤器代码块完全不会执行,时间解析逻辑不会运行,自然会生成_dateparsefailure标签。
  • 存在跨天日期匹配隐患
    你使用%{+YYYY-MM-dd}获取的是Logstash处理事件时的服务器当前日期,如果日志是跨天产生(比如当天23:59的日志次日凌晨才被采集),会出现日期和实际日志产生日期不符的问题。
修正后的配置

首先需要用grok过滤器先从日志中提取出纯时间字段,再进行日期拼接解析,参考配置如下:

filter {
  # 确认标签判断符合你的实际打标逻辑,如果不需要可以删除该if包裹
  if "curl" in [tags] {
    # 第一步:从日志中提取方括号内的时间字符串
    grok {
      match => { "message" => "%{GREEDYDATA}\[%{TIME:raw_log_time}\]%{GREEDYDATA}" }
    }
    # 第二步:拼接日期和时间
    mutate {
      add_field => {
        "log_date" => "%{+YYYY-MM-dd}"
        "tmp_full_time" => "%{log_date}_%{raw_log_time}"
      }
    }
    # 第三步:解析完整时间戳
    date {
      locale => "en"
      match => ["tmp_full_time", "YYYY-MM-dd_HH:mm:ss:SSS"]
      timezone => "+0200"
      # 这里默认会把解析后的时间写入@timestamp字段,如果要写入自定义字段可以加target参数
      remove_field => ["log_date", "raw_log_time", "tmp_full_time"]
    }
  }
}

内容的提问来源于stack exchange,提问作者Alex G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:03