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

Fluentd采集Jboss EAP日志正则匹配出现unmatched_lines问题求助

问题原因
  • 未适配多行日志:Jboss日志中存在大量跨行的状态报告、错误堆栈内容,你当前使用的tail插件默认按单行读取日志,那些不带时间戳前缀的续行被单独提取后,完全不符合你配置的以时间开头的正则匹配规则,直接触发unmatched_lines报错。
  • 正则规则存在隐含缺陷:你当前配置的正则未考虑到部分日志的service字段可能包含数字、thread字段贪婪匹配越界的情况,同时缺失时间格式声明,就算单行匹配成功也可能出现字段解析异常。
修复方案

替换source段的parse配置,改用Fluentd内置的multiline parser专门处理跨行Jboss日志,优化后的完整source配置如下:

<source>
  @type tail
  read_from_head true
  tag file-jboss.log
  path C:\T24\JBOSS\jboss-eap-6.4\standalone\log\server.log
  pos_file c:\opt\td-agent\file-jboss.pos
  <parse>
    @type multiline
    format_firstline /\d{2}:\d{2}:\d{2},\d{3}/
    format1 /(?<time>\d{2}\:\d{2}\:\d{2}\,\d{3})\s+(?<level>\w{1,6})\s+(?<service>\[[\w.]+\])\s+(?<thread>\([^)]+\))\s+(?<message>.*)/
    time_format %H:%M:%S,%L
  </parse>
</source>

配置改动说明:

  1. 用multiline类型的parser替代原有单条正则解析,format_firstline参数指定只有匹配时间格式前缀的行才是新日志的起始行,后续没有该前缀的行都会自动合并到上一条日志的message字段中,解决跨行日志匹配失败的问题。
  2. 优化了正则规则:thread字段的匹配改为\([^)]+\)避免贪婪匹配越界,放宽了service、message字段的匹配范围,减少误判。
  3. 新增time_format声明,明确告诉Fluentd时间字段的解析格式,避免时间解析错误。

注意:修改配置后请删除原有的c:\opt\td-agent\file-jboss.pos文件,再重启td-agent服务,避免旧的读取偏移量影响测试效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:09:03