Splunk Otel Collector多行日志配置失效问题排查求助
Splunk Otel Collector 多行日志拆分问题排查方案
核心配置逻辑修正
你的firstEntryRegex规则逻辑搞反了:这个配置是用来匹配新日志条目的起始行,而你要合并的是属于上一条日志的后续行(前置空白或Caused by开头的内容)。两种修正方式:
- 匹配真正的新日志起始行(非空白、非
Caused by开头)
multilineConfigs: - namespaceName: value: .* useRegexp: true podName: value: .* useRegexp: true containerName: value: .* useRegexp: true firstEntryRegex: ^(?!\s|Caused by)
- 用
negate: true反转匹配逻辑,让符合规则的行合并到上一条
multilineConfigs: - namespaceName: value: .* useRegexp: true podName: value: .* useRegexp: true containerName: value: .* useRegexp: true firstEntryRegex: ^(?:\s|Caused by) negate: true
通配符配置问题排查
- 补全
useRegexp: true参数:你只给podName加了该参数,namespaceName和containerName的.*会被当成字面量匹配,而非正则通配符,导致只有名字为.*的资源才会应用多行规则,必须给所有使用正则的字段加上该参数。 - 缩小范围验证:临时指定具体的命名空间、Pod或容器名测试,若规则生效,说明通配符的正则配置确实存在问题。
其他排查方向
- 检查规则冲突:如果同时启用了
kubernetes_logs内置的多行规则,可能会覆盖自定义配置,需确认优先级。 - 适配Go正则引擎:regex101默认用PCRE引擎,而Splunk Otel Collector用Go语言的regexp引擎,可尝试给正则添加多行模式锚点
(?m)^,确保^匹配每行开头。 - 核对日志空白字符:若日志中的空白是全角空格或制表符,需确保正则的
\s覆盖这些场景(\s默认包含空格、制表符等空白字符)。
内容的提问来源于stack exchange,提问作者Lucas Winkler
相关产品推荐
相关产品推荐

