Thanks for this information.

If my understanding is correct, the alert name, specified in in file 
*rules.yml* with parameter -alert: <alertname> must be used in file 
alertmanager.yml with parameter -service=<alertname>. Optionally one could 
add labels in rules.yml, e.g. team: oncall and then use this with 
-service="team: 
oncall".

Is this correct?

Brian Candler schrieb am Freitag, 3. September 2021 um 20:05:37 UTC+2:

> And I forgot to say: given an alerting rule like
>
>   - alert: UpDown
>     expr: up == 0
>     for: 3m
>
> then the label alertname="UpDown" is also added automatically (similar to 
> how "job" and "instance" labels are added automatically at scrape time).
>
> So at the end, you have a mixture of labels from the exporter, plus 
> system-generated labels like "job" and "instance" and "alertname", plus any 
> labels you've chosen to add yourself.  The "matchers" in alertmanager can 
> match any of these.
>
> On Friday, 3 September 2021 at 18:47:22 UTC+1 Brian Candler wrote:
>
>> No, definitely not. There is no such thing as "service" in Prometheus - 
>> Alertmanager config.
>>
>> But if you wish, you can have a *label* on your timeseries called 
>> "service", or called "environment", or anything you like.  You can add 
>> labels at scrape time:
>>
>>   - job_name: node
>>     scrape_interval: 1m
>>     static_configs:
>>       - targets:
>>           - bar:9100
>>           - baz:9100
>>         # these labels are added to every timeseries scraped from those 
>> targets
>> *        labels:*
>> *          environment: prod*
>>
>> (note that "job" and "instance" labels are also added automatically as 
>> part of the scrape; the remaining labels come from the exporter).
>>
>> Or you can add a label in your alerting rule:
>>
>> groups:
>> - name: UpDown
>>   rules:
>>   - alert: UpDown
>>     expr: up == 0
>>     for: 3m
>>     # these labels are added to every alert generated from this rule
>> *    labels:*
>> *      environment: prod*
>>
>> Note: it would be unusual to add label "environment: prod" in an alerting 
>> rule, but adding a label like "severity: critical" or "team: oncall" is 
>> more common - something which is specific to that alert, rather than the 
>> server.
>>
>> In either of these cases, the alert which arrives at alertmanager will 
>> have the given labels on it.  Hence you can match on it in alertmanager, to 
>> decide how to route the alert.
>>
>> On Friday, 3 September 2021 at 09:26:35 UTC+1 [email protected] wrote:
>>
>>> This means
>>> alert in Prometheus - Rules config
>>> is equal to
>>> service in Prometheus - Alertmanager config
>>> ?
>>>
>>> Brian Candler schrieb am Freitag, 3. September 2021 um 10:13:24 UTC+2:
>>>
>>>> Note that an "alertname" label is added automatically, so you could 
>>>> match on alertname="TargetDown" if you want.  Doesn't scale very well, but 
>>>> with a small number of rules that approach will get you started.
>>>>
>>>> If you go to your prometheus web interface, at prometheus:9090, and 
>>>> click on the "Alerts" tab at the top, then you can see firing alerts, 
>>>> including all the labels on them.
>>>>
>>>> [image: img1.png]
>>>>
>>>> On Friday, 3 September 2021 at 09:09:56 UTC+1 Brian Candler wrote:
>>>>
>>>>> The only labels you can match on from that rule are "severity: 
>>>>> warning", and the "job" and "instance" labels.
>>>>>
>>>>> > What must the alertmanager config be for this rule?
>>>>>
>>>>> You don't need *any* matching rules in alertmanager.  At simplest, you 
>>>>> can just have
>>>>>
>>>>> route:
>>>>>   receiver: default
>>>>>
>>>>> receivers:
>>>>> - name: default
>>>>>   email_configs:
>>>>>   - to: [email protected]
>>>>>     send_resolved: true
>>>>>   - to: [email protected]
>>>>>     send_resolved: true
>>>>>
>>>>> Any more than that, and it depends on your business requirements.  Do 
>>>>> you want all alerts with severity "warning" to be treated differently?  
>>>>> Use 
>>>>> a routing rule (in the "routes" section under "route").  Do you want a 
>>>>> certain subset of targets to be handled by a particular team? Then either 
>>>>> add a label in the alerting rules themselves, or ensure that those 
>>>>> targets 
>>>>> already have a particular label in their scrape config, and match that 
>>>>> label in the "routes" section.
>>>>>
>>>>> On Friday, 3 September 2021 at 08:20:49 UTC+1 [email protected] wrote:
>>>>>
>>>>>> It's clear that the config
>>>>>> - service=~"mysql|cassandra"
>>>>>> does not match the rule.
>>>>>> This was just an example.
>>>>>>
>>>>>> But this question is still open:
>>>>>> What must the alertmanager config be for this rule?
>>>>>> groups:
>>>>>> - name: general.rules
>>>>>>   rules:
>>>>>>   - alert: TargetDown
>>>>>>     annotations:
>>>>>>       message: '{{ printf "%.4g" $value }}% of the {{ $labels.job 
>>>>>> }}/{{ $labels.instance
>>>>>>         }} instances are down.'
>>>>>>     expr: 100 * (count(up == 0) BY (job, instance) / count(up) BY 
>>>>>> (job,
>>>>>>       instance)) > 10
>>>>>>     for: 10m
>>>>>>     labels:
>>>>>>       severity: warning
>>>>>>
>>>>>> Brian Candler schrieb am Donnerstag, 2. September 2021 um 19:18:37 
>>>>>> UTC+2:
>>>>>>
>>>>>>> Remove the match on service=~"mysql|cassandra" in your routing rule.
>>>>>>>
>>>>>>> I'm not saying with 100% certainty that your alert *doesn't* have a 
>>>>>>> service=xxx label; it's possible that it was added via other means, 
>>>>>>> such as 
>>>>>>> external_labels or alert_relabel_configs.  If you go into the 
>>>>>>> prometheus or 
>>>>>>> alertmanager web interface, you can see active alerts and their labels, 
>>>>>>> so 
>>>>>>> you'll know what you have.
>>>>>>>
>>>>>>> There was a nice web-based interface for testing alerting rules here:
>>>>>>> https://prometheus.io/webtools/alerting/routing-tree-editor/
>>>>>>> but it doesn't seem to work properly any more.
>>>>>>>
>>>>>>> On Thursday, 2 September 2021 at 15:48:57 UTC+1 [email protected] 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> What should be the configuration in alertmanager.yml to match to 
>>>>>>>> the rule?
>>>>>>>>
>>>>>>>> Brian Candler schrieb am Donnerstag, 2. September 2021 um 15:22:55 
>>>>>>>> UTC+2:
>>>>>>>>
>>>>>>>>> Correct, that expression will only give "job" and "instance" 
>>>>>>>>> labels.
>>>>>>>>>
>>>>>>>>> I don't think your alertmanager rule will ever match on this alert.
>>>>>>>>>
>>>>>>>>> On Thursday, 2 September 2021 at 14:05:22 UTC+1 [email protected] 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> I have defined several rule files, e.g. this general.rules.yml:
>>>>>>>>>> groups:
>>>>>>>>>> - name: general.rules
>>>>>>>>>>   rules:
>>>>>>>>>>   - alert: TargetDown
>>>>>>>>>>     annotations:
>>>>>>>>>>       message: '{{ printf "%.4g" $value }}% of the {{ $labels.job 
>>>>>>>>>> }}/{{ $labels.instance
>>>>>>>>>>         }} instances are down.'
>>>>>>>>>>     expr: 100 * (count(up == 0) BY (job, instance) / count(up) BY 
>>>>>>>>>> (job,
>>>>>>>>>>       instance)) > 10
>>>>>>>>>>     for: 10m
>>>>>>>>>>     labels:
>>>>>>>>>>       severity: warning
>>>>>>>>>>
>>>>>>>>>> However, I don't see the correlation to service.
>>>>>>>>>>
>>>>>>>>>> Brian Candler schrieb am Donnerstag, 2. September 2021 um 
>>>>>>>>>> 13:58:11 UTC+2:
>>>>>>>>>>
>>>>>>>>>>> It looks like "service" is a label that you have set in the 
>>>>>>>>>>> prometheus alerting rule.
>>>>>>>>>>>
>>>>>>>>>>> On Thursday, 2 September 2021 at 11:52:20 UTC+1 
>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> can you please advise what is represented by a service in 
>>>>>>>>>>>> alertmanager configuration, e.g.
>>>>>>>>>>>> routes: 
>>>>>>>>>>>> # All alerts with service=mysql or service=cassandra 
>>>>>>>>>>>> # are dispatched to the database pager. - receiver: 
>>>>>>>>>>>> 'database-pager' group_wait: 10s matchers: 
>>>>>>>>>>>>  - service=~"mysql|cassandra"
>>>>>>>>>>>>
>>>>>>>>>>>> Where do I find the service in the rules or in Prometheus -> 
>>>>>>>>>>>> Alerts?
>>>>>>>>>>>>
>>>>>>>>>>>> THX
>>>>>>>>>>>>
>>>>>>>>>>>

-- 
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/65886618-72a0-4cfd-ba6e-71ead42be957n%40googlegroups.com.

Reply via email to