如何修复 Prometheus 中的错误 undefined variable "$labels"?
How to fix the error undefined variable "$labels"in Prometheus?
我用过这个警报
- alert: my alert
expr: status{status="ERROR"}
for: 30m
labels:
severity: WARNING
annotations:
myData: "{{ $labels.myData }}"
myData2: "{{ $labels.myData2 }}"
我收到一个错误
错误 - 模板/:“prometheus/templates/alertmanager-prometheusRule.yaml”中的解析错误:模板:prometheus/templates/alertmanager-prometheusRule.yaml:419:未定义的变量“$labels”
我在
中看到了同样的问题
但是没看懂怎么解决
在配置中我使用了这个数据
text: "{{ range .Alerts -}}{{ .Annotations.myData }}{{ .Annotations.myData2}}{{ end-}}"
错误来自 helm lint
您似乎正在通过 helm chart 部署 Prometheus 设置。
这会导致问题,因为 helm 模板和 Prometheus 中的警报模板都使用相同的分隔符({{
和 }}
)。
{{ $labels.myData }}
必须完整地到达 prometheus 配置,所以 helm 不能处理它。
最简单的方法是使用:
{{ "{{" }} $labels.myData }}
{{ "{{" }}
块将由 helm 处理并生成 {{
作为结果,该行的其余部分不会被更改,并将为您提供所需的结果。
这是一个 python 脚本,用于对文件进行@bjakubski 的批量更改:
import sys
import re
f = sys.argv[1]
regex = re.compile(r"(\{\{.*?\}\})")
with open (f, "r") as myfile:
s=myfile.read()
ret = regex.sub(lambda x:x.group(1)[0:2]+' "{{" }}'+ x.group(1)[2:],s)
print ret
你可以使用这个
或
您可以简单地使用 single-qoutes ''
而不是使用双引号 ""
例如这里会是这样的:
annotations:
myData: '{{ $labels.myData }}'
myData2: '{{ $labels.myData2 }}'
我用过这个警报
- alert: my alert
expr: status{status="ERROR"}
for: 30m
labels:
severity: WARNING
annotations:
myData: "{{ $labels.myData }}"
myData2: "{{ $labels.myData2 }}"
我收到一个错误 错误 - 模板/:“prometheus/templates/alertmanager-prometheusRule.yaml”中的解析错误:模板:prometheus/templates/alertmanager-prometheusRule.yaml:419:未定义的变量“$labels”
我在
中看到了同样的问题但是没看懂怎么解决
在配置中我使用了这个数据
text: "{{ range .Alerts -}}{{ .Annotations.myData }}{{ .Annotations.myData2}}{{ end-}}"
错误来自 helm lint
您似乎正在通过 helm chart 部署 Prometheus 设置。
这会导致问题,因为 helm 模板和 Prometheus 中的警报模板都使用相同的分隔符({{
和 }}
)。
{{ $labels.myData }}
必须完整地到达 prometheus 配置,所以 helm 不能处理它。
最简单的方法是使用:
{{ "{{" }} $labels.myData }}
{{ "{{" }}
块将由 helm 处理并生成 {{
作为结果,该行的其余部分不会被更改,并将为您提供所需的结果。
这是一个 python 脚本,用于对文件进行@bjakubski 的批量更改:
import sys
import re
f = sys.argv[1]
regex = re.compile(r"(\{\{.*?\}\})")
with open (f, "r") as myfile:
s=myfile.read()
ret = regex.sub(lambda x:x.group(1)[0:2]+' "{{" }}'+ x.group(1)[2:],s)
print ret
你可以使用这个
或
您可以简单地使用 single-qoutes ''
""
例如这里会是这样的:
annotations:
myData: '{{ $labels.myData }}'
myData2: '{{ $labels.myData2 }}'