Thanks a lot Brian.
This solved my issue.

On Wednesday, July 19, 2023 at 4:47:52 AM UTC-4 Brian Candler wrote:

> What version of alertmanager are you using? FWIW, I was unable to 
> reproduce this with alertmanager 0.25.0
>
> route:
>   receiver: r0
>   routes:
>     - receiver: r1
>       matchers: [ 'instance =~ ".+"' ]
>       continue: true
>     - receiver: r2
>       matchers: [ "instance = 'bar'" ]
>       continue: true
>
> If I raise an alert with instance="foo", it only sends to r1.
>
> However, the web-based routing tree editor *is* confused by the example 
> above.  So unfortunately, I think this is just a symptom of the web tool 
> being different from the real thing.
>
> On Wednesday, 19 July 2023 at 08:36:06 UTC+1 Brian Candler wrote:
>
>> It looks like you're using the wrong sort of quotes in your "matchers".
>>
>>             - matchers: [ 'realm = middleEarth-moria.middle-earth.com' 
>> ]  # this works
>>             - matchers: [ realm = "middleEarth-moria.middle-earth.com" 
>> ]  # this works
>>             - matchers: [ realm = 'middleEarth-moria.middle-earth.com' 
>> ]  # THIS SILENTLY MATCHES EVERYTHING!
>>             - matchers: [ "realm = 'middleEarth-moria.middle-earth.com'" 
>> ]  # SO DOES THIS!
>>
>> For me, it works correctly, at least in the web tool, if you rewrite to 
>> the following:
>>
>> route:
>>   routes:
>>     - matchers: [ 'owner = middleEarth' ]
>>       receiver: 'middleEarth-alerts'
>>       routes:
>>         - matchers: [ 'alertname = MordorThreatens' ]
>>           receiver: 'middleEarth-alerts-prod-critical'
>>           routes:
>>             - matchers: [ 'realm =~ "middleEarth-.*.middle-earth.com"' ]
>>               receiver: 'middleEarth-alerts-prod-critical'
>>               continue: true
>>             - matchers: [ 'realm = middleEarth-rohan.middle-earth.com' ]
>>               receiver: 'rohan-alerts'
>>               continue: true
>>             - matchers: [ 'realm = middleEarth-rivendell.middle-earth.com' 
>> ]
>>               receiver: 'rivendell-alerts'
>>               continue: true
>>             - matchers: [ 'realm = middleEarth-shire.middle-earth.com' ]
>>               receiver: 'shire-alerts'
>>               continue: true
>>             - matchers: [ 'realm = middleEarth-moria.middle-earth.com' ]
>>               receiver: 'moria-alerts'
>>               continue: true
>>
>> (Note that I've also quoted the entire matcher expression, to be sure 
>> that it doesn't get broken up by YAML parsing)
>>
>> I don't know what's going on under the hood, and perhaps alertmanager 
>> ought to give some sort of error if it sees a rule it doesn't understand, 
>> rather than silently passing the test.
>>
>> On Tuesday, 18 July 2023 at 20:28:32 UTC+1 realElonMusk wrote:
>>
>>> Hello Brian,
>>>
>>> Thank you for your response and for suggesting the use of the tool. 
>>> After using the tool with my labels, I observed that all routes under 
>>> *alertname 
>>> = MordorThreatens* are highlighted. This result is not what I expected 
>>> based on my understanding of the routing configuration.
>>>
>>> My expectation was that only the route with *realm = 
>>> 'middleEarth-shire.middle-earth.com 
>>> <http://middleEarth-shire.middle-earth.com>'* should be highlighted 
>>> given the label configuration I am testing with. Could you help me 
>>> understand why all routes under *alertname = MordorThreatens* are 
>>> highlighted instead?
>>>
>>> Here are the labels I used for testing:
>>>
>>> *{owner="middleEarth", alertname="MordorThreatens", 
>>> realm="middleEarth-shire.middle-earth.com 
>>> <http://middleEarth-shire.middle-earth.com>"}*
>>>
>>> Any further insights would be greatly appreciated.
>>>
>>> On Tuesday, July 18, 2023 at 2:25:59 PM UTC-4 Brian Candler wrote:
>>>
>>>> Quite possibly *none* of your sub-matchers are matching, and it's 
>>>> falling back to the default receiver 'middleEarth-alerts-prod-critical' 
>>>> which is at the same level as routes:
>>>>
>>>> route:
>>>>   routes:
>>>>     - matchers: [ owner = middleEarth ]
>>>>       receiver: 'middleEarth-alerts'
>>>>       routes:
>>>>         - matchers: [ alertname = MordorThreatens ]
>>>> *          receiver: 'middleEarth-alerts-prod-critical'    << this is 
>>>> used if *none* of the routes below match*
>>>>           routes: ...
>>>>
>>>> But without seeing your actual alert labels and conditions I can't give 
>>>> any more help.
>>>>
>>>> There is an alert route testing tool you can use online, and you can 
>>>> paste in your *real* labels and matchers:
>>>> https://prometheus.io/webtools/alerting/routing-tree-editor/
>>>>
>>>> On Tuesday, 18 July 2023 at 18:42:13 UTC+1 realElonMusk wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I'm experiencing an issue with the *continue: true* option in my 
>>>>> Prometheus alert routing setup. Here's the configuration:
>>>>>
>>>>> route:
>>>>>   routes:
>>>>>     - matchers: [ owner = middleEarth ]
>>>>>       receiver: 'middleEarth-alerts'
>>>>>       routes:
>>>>>         - matchers: [ alertname = MordorThreatens ]
>>>>>           receiver: 'middleEarth-alerts-prod-critical'
>>>>>           routes:
>>>>>             - matchers: [ realm =~ 'middleEarth-.*.middle-earth.com' ]
>>>>>               receiver: 'middleEarth-alerts-prod-critical'
>>>>>               continue: true
>>>>>             - matchers: [ realm = 'middleEarth-rohan.middle-earth.com' 
>>>>> ]
>>>>>               receiver: 'rohan-alerts'
>>>>>               continue: true
>>>>>             - matchers: [ realm = '
>>>>> middleEarth-rivendell.middle-earth.com' ]
>>>>>               receiver: 'rivendell-alerts'
>>>>>               continue: true
>>>>>             - matchers: [ realm = 'middleEarth-shire.middle-earth.com' 
>>>>> ]
>>>>>               receiver: 'shire-alerts'
>>>>>               continue: true
>>>>>             - matchers: [ realm = 'middleEarth-moria.middle-earth.com' 
>>>>> ]
>>>>>               receiver: 'moria-alerts'
>>>>>               continue: true
>>>>>
>>>>> In this setup, when an alert with realm='
>>>>> middleEarth-shire.middle-earth.com' is triggered, it successfully 
>>>>> matches against the first route and is routed to the 
>>>>> 'middleEarth-alerts-prod-critical' receiver as expected. However, the 
>>>>> routing doesn't continue to the next matchers. Specifically, the alert is 
>>>>> never matched against realm='middleEarth-shire.middle-earth.com' to 
>>>>> be sent to the 'shire-alerts' receiver, even though *continue: true* 
>>>>> is set.
>>>>>
>>>>> I've verified the labels and they seem to be correct. Why does the 
>>>>> alert routing not continue after the first match? Any insights on how to 
>>>>> resolve this issue would be greatly appreciated.
>>>>>
>>>>> Thank you.
>>>>>
>>>>>
>>>>>

-- 
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/c442bffd-618c-419f-a48c-85c2cf0dc860n%40googlegroups.com.

Reply via email to