如何在Promtail侧将日志级别标签统一转为小写?
解决方案:在Promtail侧统一日志级别标签为小写
你可以通过Promtail的正则不区分大小写匹配和transform阶段来实现标签值的统一小写,以下提供两种符合你需求的配置方案:
方案1:使用统一的log_level标签(推荐)
这种方案将所有错误/警告日志统一标记为log_level: error或log_level: warning,避免多标签键的混乱,更利于后续筛选和面板展示:
- match: selector: '{job="varlogs"}' stages: # 不区分大小写匹配error相关日志 - regex: expression: '.*(?i)error.*' # 直接设置固定小写标签值 - labels: log_level: error - match: selector: '{job="varlogs"}' stages: # 不区分大小写匹配warn/warning相关日志 - regex: expression: '.*(?i)(warn|warning).*' # 直接设置固定小写标签值 - labels: log_level: warning
说明:
(?i)开启正则的不区分大小写模式,无需重复写error|Error|ERROR这类变体,简化配置。- 直接给
log_level设置固定的小写值,彻底避免大小写差异问题。
方案2:保留log_error/log_warning标签形式
如果你需要保留原标签键的形式,可以通过transform阶段将提取到的标签值转为小写,甚至统一不同写法(如把warn转为warning):
- match: selector: '{job="varlogs"}' stages: - regex: expression: '.*(?P<log_error>(error|Error|ERROR)).*' # 将提取到的log_error值转为小写 - transform: source: log_error operation: lowercase - labels: log_error: - match: selector: '{job="varlogs"}' stages: - regex: expression: '.*(?P<log_warning>(warn|Warn|WARN|warning|Warning|WARNING)).*' # 先转为小写 - transform: source: log_warning operation: lowercase # 可选:把小写的warn统一替换为warning - transform: source: log_warning operation: replace replace: expression: '^warn$' replacement: 'warning' - labels: log_warning:
说明:
transform的lowercase操作会将提取到的字段值强制转为小写。- 额外的
replace操作可以统一不同的级别写法,确保warn和warning最终都标记为warning。
内容的提问来源于stack exchange,提问作者GerardJP
相关产品推荐
相关产品推荐

