Thanks, this is a good workaround!
Do you know if it is also possible to combine them in one label? I tested
another way, which did not work so far:
- record: route_group_1
expr: 1
labels:
route: route1|route2
Thanks again!
On Friday, 5 March 2021 at 22:46:13 UTC+1 [email protected] wrote:
> This approach is not directly possible in Prometheus itself. Our
> recommendation for this case is to use some form of external templating to
> reduce repetition in such cases.
>
> However, there is a way using recording rules. You can add a rule for each
> route (again, you may want to template that) with the constant value 1:
>
> - record: route_group_1
> expr: 1
> labels:
> route: route1
> - record: route_group_1
> expr: 1
> labels:
> route: route2
>
> Then you can reformulate your alert rule to "join" with it:
>
> time() - camel_route_last_exchange_completed_timestamp * on(route)
> group_left() route_group_1
>
> this works because the label matching drops all metrics that do not have a
> matching route label on the left and right hand side of the "* on(route)".
> It does not change the value because we are multiplying by unity.
>
> Whether you consider this more readable is up to you …
>
> /MR
>
>
>
> On Tue, Mar 2, 2021, 10:04 'Olaf K' via Prometheus Users <
> [email protected]> wrote:
>
>>
>> Hi there,
>>
>> I have already asked this question on Stackoverflow
>> <https://stackoverflow.com/questions/66117605/predefined-group-in-prometheus-alerts>,
>>
>> but recently found this forum and feel like the question is more suitable
>> here.
>>
>> I have the following query as part of my prometheus alerting rules in my
>> rules.yml:
>> ...
>> - alert: Test1 expr: time() -
>> camel_route_last_exchange_completed_timestamp{
>> *route="route1|route2|route3...|routex"*}
>> for: 10s ...
>>
>> In short: I am looking for the time since the last time stamp *for
>> specific routes*. However, the query is not as important as the part in
>> brackets / bold.
>>
>> I would *prefer to leave out the specific routes* and refer to a *predefined
>> group** (e.g. route_group_A = "route1|route2|route3...|routex"})* so
>> that the query is readable:
>>
>> time() - camel_route_last_exchange_completed_timestamp{route="
>> *route_group_A*"}
>>
>> Is this possible? If so, how and in which document to define this?
>> I tried using templating, but got no further.
>>
>> Thanks in advance!
>>
>> --
>> 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/5859aa5c-63af-4ce0-9c7b-e6e107075996n%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/prometheus-users/5859aa5c-63af-4ce0-9c7b-e6e107075996n%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/f1334f4a-822f-40d7-b7b0-d82ff5e6c508n%40googlegroups.com.