首页 > 解决方案 > 如何修复 Prometheus 中的错误未定义变量“$labels”?

问题描述

我用了这个警报

        - alert: my alert
          expr: status{status="ERROR"}
          for: 30m
          labels:
            severity: WARNING   
          annotations:
            myData: "{{ $labels.myData }}"
            myData2: "{{ $labels.myData2 }}"

我收到一个错误 ERROR - templates/: parse error in "prometheus/templates/alertmanager-prometheusRule.yaml": template: prometheus/templates/alertmanager-prometheusRule.yaml:419: undefined variable "$labels"

我看到了同样的问题

Prometheus Docker 无法以`Template: (dynamic): parse: template: :10: undefined variable "$labels"` 开始

但我不明白如何解决它

在配置中我使用了这个数据

text: "{{ range .Alerts -}}{{ .Annotations.myData }}{{ .Annotations.myData2}}{{ end-}}"

错误来自 helm lint

标签: prometheuskubernetes-helmprometheus-alertmanager

解决方案


您似乎正在通过 helm chart 部署 Prometheus 设置。这会导致一个问题,因为helm 模板和 Prometheus 中的警报模板都使用了相同的分隔符 ({{和)。}}

必须完整地到达 prometheus 配置,因此{{ $labels.myData }}helm 不能处理它。

最简单的方法是使用:

{{ "{{" }} $labels.myData }}

{{ "{{" }}块将由 helm 处理,并将{{作为结果生成,而其余的行不会被更改,并将为您提供所需的结果。


推荐阅读