One Alert is now working like I want it to work. My YAML looks like this:

receivers:
- name: 'email'
  email_configs:
  - to: '[email protected]'
    send_resolved: false
    headers:
      subject: '{{ .GroupLabels.alertname }} - Instances: {{ range $index, 
$value := .GroupLabels.instance }}{{ if $index }}, {{ end }}{{ $value }}{{ 
end }}'

- name: 'email_warning'
  email_configs:
  - to: '[email protected]'
    send_resolved: false
    headers:
      subject: 'Warning: {{ .GroupLabels.alertname }} - Instances: {{ range 
.Alerts }}{{ .Labels.instance }}, {{ end }}'

- name: 'email_resolved'
  email_configs:
  - to: '[email protected]'
    send_resolved: true
    headers:
      subject: 'Resolved: {{ .GroupLabels.alertname }} - Instances: {{ 
range $index, $value := .GroupLabels.instance }}{{ if $index }}, {{ end 
}}{{ $value }}{{ end }}'

But my alertmanager is giving me still errors:
ts=2023-06-09T12:24:29.325Z caller=dispatch.go:352 level=error 
component=dispatcher msg="Notify for alerts failed" num_alerts=2 
err="email/email[0]: notify retry canceled due to unrecoverable error after 
1 attempts: execute \"Subject\" header template: template: :1:81: executing 
\"\" at <.GroupLabels.instance>: range can't iterate over "

What I do not understand is, that it's working for one rule but not the 
others. And the error implies that it can't iterate over the instances. I 
don't understand why because for one rule it's working as I said.

Can someone help me fix my issue?

Kind regards,
Kolja

Kolja Krückmann schrieb am Donnerstag, 8. Juni 2023 um 15:03:14 UTC+2:

> [EDIT]
> Also I want to split the firing and resolved alerts.
> Kolja Krückmann schrieb am Donnerstag, 8. Juni 2023 um 14:48:40 UTC+2:
>
>> Hi all, I tried it now for two days straight and I just don't get it 
>> working.
>>
>> First of all where do I actually find the expressions I can use to define 
>> the subject under the header? I am still missing a template I can use? I 
>> don't really have one in my Prom/Alert-files.
>> Second of all my current receivers are configured like so:
>>
>> receivers:
>> - name: 'email'
>>   email_configs:
>>   - to: '[email protected]'
>>     send_resolved: true
>>     headers:
>>       Subject: "{{ .Alerts.alertname }} - {{ range .Alerts }} {{ 
>> .Alerts.instance }} {{ end }}"
>>
>> Like Brian said, I want to iterate in the second half of that "statement" 
>> (I don't actually know how these {{ .xyz }} are called) through all 
>> instances and the first one should just say which alert is now firing.
>> I also tried it as followed:
>>
>> Subject: "{{ .GroupLabels.alertname }} - {{ range .Alerts }} {{ 
>> .Alerts.instance }} {{ end }}"
>> and
>> Subject: "{{ .Labels.alertname }} - {{ range .Alerts }} {{ 
>> .Alerts.instance }} {{ end }}"
>>
>> but nothing is really working.
>>
>> All I really want is the Subject like so e.x.:
>> InstanceDown - SVR-DS01 SVR-DC11
>>        ^^^^^^^^            ^^^^^^^^    ^^^^^^^^          
>>     Alertname    -   Instance1 Instance2 (if it is also possible to 
>> seperate the instances via comma would be perfect)
>> Brian Candler schrieb am Dienstag, 6. Juni 2023 um 13:16:53 UTC+2:
>>
>>> As its name implies, "CommonLabels" contains only those labels which are 
>>> common to all alerts in the group.  If there are multiple instances, then 
>>> the "instance" label is not common to all alerts, so won't be in this 
>>> object.
>>>
>>> You want to iterate over "Alerts" (or "Alerts.Firing") and look at the 
>>> Labels.instance within each alert. You will find an example showing how to 
>>> do that here:
>>>
>>> https://prometheus.io/docs/alerting/latest/notification_examples/#ranging-over-all-received-alerts
>>>
>>> Additional references:
>>> https://prometheus.io/docs/alerting/latest/notifications/#data
>>>
>>> https://prometheus.io/docs/prometheus/latest/configuration/template_reference/
>>>
>>> On Tuesday, 6 June 2023 at 12:03:03 UTC+1 Kolja Krückmann wrote:
>>>
>>>> Currently my alertmanager.yml looks like this:
>>>>
>>>> receivers:
>>>> - name: 'email'
>>>>   email_configs:
>>>>   - to: '[email protected]'
>>>>     send_resolved: true
>>>>     headers:
>>>>       Subject: '{{ .CommonLabels.alertname }} - {{ 
>>>> .CommonLabels.instance }}'
>>>>
>>>> Unfortunately the subject in the mail now only displays both labels if 
>>>> only there is an alert for a single instance (like High CPU Usage on core 
>>>> 0,1,2,3 on one instance (see screenshot attatched)) As soon as the alert 
>>>> is 
>>>> for more then just one instance the instance lable is completly missing... 
>>>> Why is it missing? And how can I change it to display all instances 
>>>> affected by that alert.
>>>>
>>>> Kind regards.
>>>> Kolja
>>>>
>>>> [image: mail.png]
>>>>
>>>> Kolja Krückmann schrieb am Montag, 5. Juni 2023 um 09:21:22 UTC+2:
>>>>
>>>> Hi y'all
>>>> I'm trying to change the way the mail from my alertmanger looks and 
>>>> behaves.
>>>> My goal is to have the subject list the alertname and the targets 
>>>> detected by that alert. (I need it like that for future todo's)
>>>> My first problem is, i dont have any templates in my files. Do I need 
>>>> to clone one from git? How does the prom know, I have a template? 
>>>> The second one would be to change the subject in order for my 
>>>> requirements to fit.
>>>>
>>>> Kind regards,
>>>> Kolja
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/ba4ffbd8-86f7-4d7e-8475-15027324b2e4n%40googlegroups.com.

Reply via email to