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/9314030d-02b5-419e-868f-19dd5646a885n%40googlegroups.com.

Reply via email to