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/35384490-71ed-4872-bd16-dea5d17ff450n%40googlegroups.com.

Reply via email to