Add tags for resolved alerts
Implements: https://todo.xenrox.net/~xenrox/ntfy-alertmanager/8
This commit is contained in:
parent
df02ee5303
commit
8a387ff834
4 changed files with 38 additions and 0 deletions
|
@ -56,6 +56,11 @@ labels {
|
|||
}
|
||||
}
|
||||
|
||||
# Set tags for resolved alerts
|
||||
resolved {
|
||||
tags "resolved,partying_face"
|
||||
}
|
||||
|
||||
ntfy {
|
||||
# URL of the ntfy topic - required
|
||||
topic https://ntfy.sh/alertmanager-alerts
|
||||
|
|
18
config.go
18
config.go
|
@ -26,6 +26,7 @@ type config struct {
|
|||
labels labels
|
||||
cache cacheConfig
|
||||
am alertmanagerConfig
|
||||
resolved resolvedConfig
|
||||
}
|
||||
|
||||
type ntfyConfig struct {
|
||||
|
@ -56,6 +57,10 @@ type alertmanagerConfig struct {
|
|||
URL string
|
||||
}
|
||||
|
||||
type resolvedConfig struct {
|
||||
Tags []string
|
||||
}
|
||||
|
||||
func readConfig(path string) (*config, error) {
|
||||
cfg, err := scfg.Load(path)
|
||||
if err != nil {
|
||||
|
@ -272,5 +277,18 @@ func readConfig(path string) (*config, error) {
|
|||
}
|
||||
}
|
||||
|
||||
resolvedDir := cfg.Get("resolved")
|
||||
if resolvedDir != nil {
|
||||
d = resolvedDir.Children.Get("tags")
|
||||
if d != nil {
|
||||
var tags string
|
||||
if err := d.ParseParams(&tags); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
config.resolved.Tags = strings.Split(tags, ",")
|
||||
}
|
||||
}
|
||||
|
||||
return config, nil
|
||||
}
|
||||
|
|
|
@ -41,6 +41,10 @@ labels {
|
|||
}
|
||||
}
|
||||
|
||||
resolved {
|
||||
tags "resolved,partying_face"
|
||||
}
|
||||
|
||||
ntfy {
|
||||
# URL of the ntfy topic - required
|
||||
topic https://ntfy.sh/alertmanager-alerts
|
||||
|
@ -93,6 +97,9 @@ cache {
|
|||
Password: "pass",
|
||||
URL: "https://alertmanager.xenrox.net",
|
||||
},
|
||||
resolved: resolvedConfig{
|
||||
Tags: []string{"resolved", "partying_face"},
|
||||
},
|
||||
}
|
||||
|
||||
configPath := filepath.Join(t.TempDir(), "config")
|
||||
|
|
8
main.go
8
main.go
|
@ -89,6 +89,10 @@ func (rcv *receiver) singleAlertNotifications(p *payload) []*notification {
|
|||
}
|
||||
|
||||
var tags []string
|
||||
if alert.Status == "resolved" {
|
||||
tags = append(tags, rcv.cfg.resolved.Tags...)
|
||||
}
|
||||
|
||||
for _, labelName := range rcv.cfg.labels.Order {
|
||||
val, ok := alert.Labels[labelName]
|
||||
if !ok {
|
||||
|
@ -176,6 +180,10 @@ func (rcv *receiver) multiAlertNotification(p *payload) *notification {
|
|||
|
||||
var priority string
|
||||
var tags []string
|
||||
if p.Status == "resolved" {
|
||||
tags = append(tags, rcv.cfg.resolved.Tags...)
|
||||
}
|
||||
|
||||
for _, labelName := range rcv.cfg.labels.Order {
|
||||
val, ok := p.CommonLabels[labelName]
|
||||
if !ok {
|
||||
|
|
Loading…
Reference in a new issue