Rather than use absent(), you can use the Prometheus metamon
metric prometheus_target_scrape_pool_targets.

Prometheus alerts are meant to be done in layers, where you have separate
alerts on `jenkins_up`, `up`, and `prometheus_target_scrape_pool_targets`.

Trying to manipulate alerts with absent() tends to behave badly.

On Sun, Oct 3, 2021 at 9:21 PM Brian Candler <[email protected]> wrote:

> Or slightly weirder:
>
> absent(jenkins_up) and absent(absent(up{job="jenkins"}))
>
> absent(absent(...)) being a way to get the RHS to have no labels, to match
> the LHS.
>
> On Sunday, 3 October 2021 at 20:14:59 UTC+1 Brian Candler wrote:
>
>> This might be an XY problem, because it is often better to have a defined
>> "up/down" metric (with value 1/0), which tells you whether something worked
>> or not, rather than alerting on presence or absence of a metric.
>>
>> However, to answer your question directly, I think you would need to
>> include some condition saying whether that metric *should* be there or not
>> - which is the presence of some other metric.  The "up" metric added by all
>> scrape jobs can be useful for this.  In this case, I expect
>> *up{job="jenkins"}* will exist, if and only if you have a 'jenkins'
>> scrape job in that region.  Therefore maybe something like this will do
>> what you want:
>>
>> absent(jenkins_up{job="jenkins"}) unless on (job)
>> absent(up{job="jenkins"})
>>
>> which I think may simplify, if the 'jenkins_up' metric is only scraped by
>> the 'jenkins' job, to this (not sure):
>>
>> absent(jenkins_up) unless on () absent(up{job="jenkins"})
>>
>> On Sunday, 3 October 2021 at 19:40:23 UTC+1 Dan S wrote:
>>
>>> Hi,
>>>
>>> Looking for some general advice about shared prom alert rules between
>>> regions.  We currently push the same alert rules to all regions, and
>>> sometimes we run into situations where we have a specific job in region X
>>> but not Y.
>>>
>>> This is fine for basic cases, such as *up{job="jenkins"} == 0* which
>>> will be ignored in regions where there's no jenkins job present (or could
>>> easily specify region="X").
>>>
>>> But in some situations I'd like to use absent on a metric that often has
>>> gaps for example
>>> *absent(jenkins_up{job="jenkins"})*
>>> This would trigger in all regions, whether or not there's a job
>>> "jenkins" (obviously because it's triggering on the missing metrics) even
>>> if I try to be more specific: *absent(jenkins_up{job="jenkins",
>>> region="US"}).*
>>>
>>> Any suggestions how I can craft an alert query using absent() in on
>>> metrics that don't appear in all regions?  So that if region="US" has
>>> job="jenkins" and I watch to catch gaps here, it won't also fire in
>>> region="EU" which never has job="jenkins".... ?
>>>
>>> Thanks for any advice.
>>>
>>> Dan
>>>
>> --
> 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/8533225b-267c-4dd1-af32-5967966d5156n%40googlegroups.com
> <https://groups.google.com/d/msgid/prometheus-users/8533225b-267c-4dd1-af32-5967966d5156n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CABbyFmqNZ4REUnhaMxoC%2B%2BcnFBdUHOPnOqKC_f7TfLTOkHJw0Q%40mail.gmail.com.

Reply via email to