Skip to content

Commit 4a2ea3b

Browse files
authored
feat(alertmanager): add support for webex,discord,telegram receivers (#5493)
* feat(alertmanager): add support for webex receivers Signed-off-by: Niclas Schad <[email protected]> * feat(alertmanager): add support for telegram and discord Signed-off-by: Niclas Schad <[email protected]> * fix docstring Signed-off-by: Niclas Schad <[email protected]> * update CHANGELOG Signed-off-by: Niclas Schad <[email protected]> --------- Signed-off-by: Niclas Schad <[email protected]>
1 parent 963deb1 commit 4a2ea3b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+8037
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
22

33
## master / unreleased
4+
* [FEATURE] AlertManager: Add support for Webex, Discord and Telegram Receiver. #5493
45
* [FEATURE] Ingester: added `-admin-limit-message` to customize the message contained in limit errors.#5460
56
* [CHANGE] AlertManager: include reason label in cortex_alertmanager_notifications_failed_total.#5409
67
* [CHANGE] Query: Set CORS Origin headers for Query API #5388

docs/configuration/config-file-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3023,7 +3023,7 @@ The `limits_config` configures default and per-tenant limits imposed by Cortex s
30233023
# is given in JSON format. Rate limit has the same meaning as
30243024
# -alertmanager.notification-rate-limit, but only applies for specific
30253025
# integration. Allowed integration names: webhook, email, pagerduty, opsgenie,
3026-
# wechat, slack, victorops, pushover, sns.
3026+
# wechat, slack, victorops, pushover, sns, telegram, discord, webex.
30273027
# CLI flag: -alertmanager.notification-rate-limit-per-integration
30283028
[alertmanager_notification_rate_limit_per_integration: <map of string to float64> | default = {}]
30293029

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ require (
227227
google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect
228228
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
229229
gopkg.in/ini.v1 v1.67.0 // indirect
230+
gopkg.in/telebot.v3 v3.1.3 // indirect
230231
)
231232

232233
// Override since git.apache.org is down. The docs say to fetch from github.

go.sum

Lines changed: 62 additions & 0 deletions
Large diffs are not rendered by default.

pkg/alertmanager/alertmanager.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ import (
2424
"github.com/prometheus/alertmanager/inhibit"
2525
"github.com/prometheus/alertmanager/nflog"
2626
"github.com/prometheus/alertmanager/notify"
27+
"github.com/prometheus/alertmanager/notify/discord"
2728
"github.com/prometheus/alertmanager/notify/email"
2829
"github.com/prometheus/alertmanager/notify/opsgenie"
2930
"github.com/prometheus/alertmanager/notify/pagerduty"
3031
"github.com/prometheus/alertmanager/notify/pushover"
3132
"github.com/prometheus/alertmanager/notify/slack"
3233
"github.com/prometheus/alertmanager/notify/sns"
34+
"github.com/prometheus/alertmanager/notify/telegram"
3335
"github.com/prometheus/alertmanager/notify/victorops"
36+
"github.com/prometheus/alertmanager/notify/webex"
3437
"github.com/prometheus/alertmanager/notify/webhook"
3538
"github.com/prometheus/alertmanager/notify/wechat"
3639
"github.com/prometheus/alertmanager/provider/mem"
@@ -479,7 +482,7 @@ func buildIntegrationsMap(nc []config.Receiver, tmpl *template.Template, firewal
479482

480483
// buildReceiverIntegrations builds a list of integration notifiers off of a
481484
// receiver config.
482-
// Taken from https://github.com/prometheus/alertmanager/blob/94d875f1227b29abece661db1a68c001122d1da5/cmd/alertmanager/main.go#L112-L159.
485+
// Taken from https://github.com/prometheus/alertmanager/blob/263ca5c9438e/cmd/alertmanager/main.go#L134-L189.
483486
func buildReceiverIntegrations(nc config.Receiver, tmpl *template.Template, firewallDialer *util_net.FirewallDialer, logger log.Logger, wrapper func(string, notify.Notifier) notify.Notifier) ([]notify.Integration, error) {
484487
var (
485488
errs types.MultiError
@@ -527,6 +530,15 @@ func buildReceiverIntegrations(nc config.Receiver, tmpl *template.Template, fire
527530
for i, c := range nc.SNSConfigs {
528531
add("sns", i, c, func(l log.Logger) (notify.Notifier, error) { return sns.New(c, tmpl, l, httpOps...) })
529532
}
533+
for i, c := range nc.TelegramConfigs {
534+
add("telegram", i, c, func(l log.Logger) (notify.Notifier, error) { return telegram.New(c, tmpl, l, httpOps...) })
535+
}
536+
for i, c := range nc.DiscordConfigs {
537+
add("discord", i, c, func(l log.Logger) (notify.Notifier, error) { return discord.New(c, tmpl, l, httpOps...) })
538+
}
539+
for i, c := range nc.WebexConfigs {
540+
add("webex", i, c, func(l log.Logger) (notify.Notifier, error) { return webex.New(c, tmpl, l, httpOps...) })
541+
}
530542
// If we add support for more integrations, we need to add them to validation as well. See validation.allowedIntegrationNames field.
531543
if errs.Len() > 0 {
532544
return nil, &errs

pkg/util/validation/notifications_limit_flag.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
var allowedIntegrationNames = []string{
13-
"webhook", "email", "pagerduty", "opsgenie", "wechat", "slack", "victorops", "pushover", "sns",
13+
"webhook", "email", "pagerduty", "opsgenie", "wechat", "slack", "victorops", "pushover", "sns", "telegram", "discord", "webex",
1414
}
1515

1616
type NotificationRateLimitMap map[string]float64

vendor/github.com/prometheus/alertmanager/notify/discord/discord.go

Lines changed: 133 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/prometheus/alertmanager/notify/telegram/telegram.go

Lines changed: 128 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)