如何修复 Prometheus 中未定义变量“$labels”的错误?

use*_*697 6 prometheus kubernetes-helm prometheus-alertmanager

我用过这个警报

        - alert: my alert
          expr: status{status="ERROR"}
          for: 30m
          labels:
            severity: WARNING   
          annotations:
            myData: "{{ $labels.myData }}"
            myData2: "{{ $labels.myData2 }}"
Run Code Online (Sandbox Code Playgroud)

我收到错误 - templates/: “prometheus/templates/alertmanager-prometheusRule.yaml”中的解析错误:模板:prometheus/templates/alertmanager-prometheusRule.yaml:419: 未定义变量“$labels”

我在中看到了同样的问题

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

但我不明白如何解决它

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

text: "{{ range .Alerts -}}{{ .Annotations.myData }}{{ .Annotations.myData2}}{{ end-}}"
Run Code Online (Sandbox Code Playgroud)

该错误来自 helm lint

bja*_*ski 21

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

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

最简单的方法是使用:

{{ "{{" }} $labels.myData }}
Run Code Online (Sandbox Code Playgroud)

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