Comments (7)
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.
Can we add a deduplication key instead? The default Pagerduty receiver has it. Something similar seems easier to create than keeping track of the intricacies of how hashed values from other fields track over time/user changes on configuration.
from alertmanager.
Can we add a deduplication key instead? The default Pagerduty receiver has it. Something similar seems easier to create than keeping track of the intricacies of how hashed values from other fields track over time/user changes on configuration.
Yeah that's one of the options (named routes).
from alertmanager.
Related Issues (20)
- multiple peers send alert that should only be sent once after failed notify attempt HOT 4
- Alertmanager send resolved notification when problem not solved HOT 3
- Cannot send alerts to multiple receivers simultaneously using matchers field. HOT 8
- Unable to change time zone in Grafana Alerting Notification Template (Always in UTC) HOT 1
- bad response status 404 Not Found HOT 1
- Task: Improvements to silences
- Work around PrometheusOperatorSyncFailed, integration=opsgenie, max_runes=130? HOT 1
- config.SecretURL type returns Json.Unmarshal() error which can expose the secret url. HOT 1
- amtool does not have a way to specify a time to test with. HOT 4
- Support time_interval testing with amtool config routes test HOT 2
- AlertManager doesn't send alert to Slack HOT 1
- Docker image prom/alertmanager:v0.27.0 fails to parse webhook_url_file from msteams_config HOT 2
- An option to disable the default sorting of Alerts for a group of Alerts HOT 6
- AlertManager doesn't send some of alerts to Pagerduty HOT 3
- Alertmanager's template obtains multiple metrics HOT 1
- Silence with unused label matching All Alerts HOT 2
- matcher is not native regexp why? HOT 2
- Feature Request: Matrix Receiver
- Microsoft deprecating Teams webhooks, new "Workflows" uses incompatible schema HOT 25
- Discord webhook : Cannot send an empty message
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.