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

如何解决Fluentd日志正则不匹配问题以在Elasticsearch展示正确输出

解决正则不匹配问题并正确解析Zeebe日志到Elasticsearch

问题根源

当前source块中的正则格式是为HTTP访问日志设计的(包含method、path等字段),完全不匹配Zeebe日志的时间 主机 进程[PID]: JSON内容结构,导致出现pattern not matched警告。

修正后的配置

1. 调整Source配置

替换原source块,匹配Zeebe日志格式并解析时间:

<source>
  @type tail
  path /var/log/messages
  exclude_path /var/log/td-agent/td-agent.log
  pos_file /var/log/td-agent/td-agent.pos
  tag dc-zeebe-tag
  read_from_head true
  # 匹配Zeebe日志的基础结构:时间、主机、进程名、PID、JSON日志内容
  format ^(?<time>\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})\s+(?<host>[^\s]+)\s+(?<process>[^\[]+)\[(?<pid>\d+)\]:\s+(?<log_json>.*)$
  refresh_intervals 60
  <parse>
    @type regex
    # 对应日志中的时间格式:月份缩写(如Oct)、日期、时分秒
    time_format %b %d %H:%M:%S
    # 时区根据实际环境调整,比如Asia/Shanghai
    timezone Asia/Shanghai
  </parse>
</source>

2. 调整Filter配置

添加JSON解析,将log_json字段中的JSON内容展开为结构化字段:

<filter dc-zeebe-tag>
  @type parser
  key_name log_json
  reserve_data true
  <parse>
    @type json
  </parse>
</filter>

配置说明

  • source的正则将日志拆分为time(时间)、host(主机)、process(进程名)、pid(进程ID)、log_json(JSON格式的日志内容)五个字段。
  • time_format设置为%b %d %H:%M:%S,匹配日志中的Oct 3 17:23:12格式,需根据实际时区补充timezone参数。
  • filter块使用json解析器,将log_json中的JSON结构展开,这样Elasticsearch中就能看到severity、message、context等结构化字段。

验证方法

  1. 重启td-agent服务:sudo systemctl restart td-agent
  2. 查看td-agent日志确认无匹配警告:tail -f /var/log/td-agent/td-agent.log
  3. 检查Elasticsearch中的索引,确认日志已被正确解析为结构化数据。

内容的提问来源于stack exchange,提问作者Jeyhun F. Aslanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:06:14