如何解决Promtail过滤ALERT日志并添加alert:report标签失效问题
问题分析
你的配置存在两个核心问题:
- 未过滤不匹配的日志:默认情况下,Promtail的
regex阶段仅尝试匹配日志内容,不会自动丢弃不匹配的日志,因此所有日志都会进入后续流程并推送到Loki。 - 标签添加未关联匹配条件:当前
labels阶段是无条件执行,但由于正则匹配失败时没有触发逻辑,加上配置中使用了HTML转义的"(应替换为正常双引号"),导致标签未正确添加。
修正后的配置
使用regex阶段的action: keep参数仅保留匹配[ALERT]的日志,再为其添加标签:
positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: API-LOGS static_configs: - targets: - localhost labels: job: api-logs __path__: ./logs/api/*.log pipeline_stages: # 仅保留包含[ALERT]的日志,不匹配的直接丢弃 - regex: expression: '.*\[ALERT\].*' action: keep # 为过滤后的日志添加alert标签 - labels: alert: "report" - job_name: CRAWLER-LOGS static_configs: - targets: - localhost labels: job: crawler-logs __path__: ./logs/crawler/*.log
关键说明
action: keep:该参数告诉Promtail仅保留匹配正则表达式的日志,不匹配的会被直接丢弃,实现过滤效果。- 替换转义引号:将配置中的
"改为正常的双引号",避免Promtail解析标签值时出错。 - 正则表达式:
.*\[ALERT\].*中的\[和\]是转义字符,因为[和]在正则中是特殊符号,必须转义才能匹配日志中的[ALERT]字符串。
内容的提问来源于stack exchange,提问作者seob
相关产品推荐
相关产品推荐

