Comments (5)
Another option is to add the receiver name to the RouteKey
. This would be the least invasive change and fixes all but one case of non unique GroupKeys where the receiver name, matchers and group by are the same. In this case, the aggregation groups also share nflogs, even if some of the routes have active or mute time intervals.
Here is an example of how this could look for the following configuration file:
receivers:
- name: test1
- name: test2
route:
receiver: test1
routes:
- receiver: test1
matchers:
- foo=bar
continue: true
- receiver: test2
matchers:
- foo=bar
mute_time_intervals:
- name: weekends
continue: true
Without the change:
{}/{foo="bar"}:{}
{}/{foo="bar"}:{}
With the change:
(recv="test1",matchers={})/(recv=test1,matchers={foo="bar"}):{}
(recv="test1",matchers={})/(recv=test2,matchers={foo="bar"}):{}
This could also be shortened to something like:
(test1,{})/(test1,{foo="bar"}):{}
(test1,{})/(test2,{foo="bar"}):{}
If we choose this option, we would also want to change the nflog interface to remove We still need this as other metadata is required from r *pb.Receiver
as the receiver name is now included in gkey
:*pb.Receiver
.
func (l *Log) Log(r *pb.Receiver, gkey string, firingAlerts, resolvedAlerts []uint64, expiry time.Duration) error {
from alertmanager.
Any chance the example needs to have a "continue" to match the second route?
from alertmanager.
Yes it does :) I missed that in the example!
from alertmanager.
Yes it does :) I missed that in the example!
What if we don't attempt to fix this without requiring extra configuration? What if a future version of AM refuses to accept a config where both GroupKey and Receiver are identical for two siblings? What is the users intention in creating such config?
We could offer a user a way to differentiate these two routes (extraGroupKey: newRoute
)
from alertmanager.
What if we don't attempt to fix this without requiring extra configuration? What if a future version of AM refuses to accept a config where both GroupKey and Receiver are identical for two siblings?
This is something that I've considered too. I like it a lot because it means we don't need to add extra configuration, but I'm also concerned about breaking configurations.
We could offer a user a way to differentiate these two routes
If we choose this option I propose adding a "name" field to the route, similar to what we have for receivers.
from alertmanager.
Related Issues (20)
- How can I get a week's worth of alert history for Prometheus, Alertmanager via python script? HOT 2
- Assistance Needed with Prometheus and Alertmanager Configuration HOT 3
- Some alerts going to a webhook crash alertmanager - panic: runtime error: invalid memory address or nil pointer dereference HOT 4
- `route.ID()` returns conflicting IDs
- Different aggregation groups can share the same nflog HOT 1
- docker image does not recognise timezone appropriately HOT 7
- Feature request: Please sign your releases HOT 1
- Wrong Alertmanager version for v1 API removal in the logs? HOT 1
- Alertmanager web UI is broken after installing using generate-ui.sh HOT 3
- Have a way to mute alert until it's resolved to receive a resolved notification once it's fixed HOT 11
- FR: sort matchers on silences page HOT 1
- Update docs to note api/v1 deprecation and removal HOT 1
- Go stdlib vuln - please upgrade go version HOT 4
- AlertManager not respecting repeat_interval timer setting on duplicate alert HOT 1
- `amtool` ZSH completion is broken
- Prometheus Alertmanager not sending email notifications HOT 3
- Alerts are not triggering to its target communications HOT 2
- [UI] Feature: Localtime / Timezone option
- multiple peers send alert that should only be sent once after failed notify attempt HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from alertmanager.