Reputation: 5989
I used this alret
- alert: my alert
expr: status{status="ERROR"}
for: 30m
labels:
severity: WARNING
annotations:
myData: "{{ $labels.myData }}"
myData2: "{{ $labels.myData2 }}"
I got an error ERROR - templates/: parse error in "prometheus/templates/alertmanager-prometheusRule.yaml": template: prometheus/templates/alertmanager-prometheusRule.yaml:419: undefined variable "$labels"
I saw the same issue in
but I didn't understand how to solve it
in the configuration I used this data
text: "{{ range .Alerts -}}{{ .Annotations.myData }}{{ .Annotations.myData2}}{{ end-}}"
The error is from helm lint
Upvotes: 6
Views: 8852
Reputation: 2200
Kind of the same answer as @bjakubski, but with examples:
I would suggest doing the same way as the official Prometheus helm chart is doing to pass alerts:
description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up.
They have plenty of examples in the repository.
Upvotes: 1
Reputation: 1449
You can use this awenser
OR
you can simply instead of using double qoutes ""
, use the single-qoutes ''
e.g. here would be like:
annotations:
myData: '{{ $labels.myData }}'
myData2: '{{ $labels.myData2 }}'
source: Prometheus Docs
Upvotes: 1
Reputation: 2243
Here is a python script to make @bjakubski's change in bulk on a file:
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
Upvotes: 0
Reputation: 1747
It seems you are deploying your Prometheus setup via a helm chart.
This causes an issue as the same delimiters ({{
and }}
) are used both by helm templating and the alerting templating in Prometheus.
The {{ $labels.myData }}
has to reach prometheus config intact, so helm must not process it.
The simplest way would be to use:
{{ "{{" }} $labels.myData }}
The {{ "{{" }}
block will be processed by helm and will produce {{
as a result with rest of the line not being altered and will get you the result you need.
Upvotes: 23