diff --git a/demo/alertmanager.yaml b/demo/alertmanager.yaml index aa13f105e..150988cc0 100644 --- a/demo/alertmanager.yaml +++ b/demo/alertmanager.yaml @@ -1,28 +1,28 @@ global: resolve_timeout: 30s route: - group_by: ['alertname'] + group_by: ["alertname"] group_wait: 5s group_interval: 10s repeat_interval: 999h - receiver: 'default' + receiver: "default" routes: - - receiver: 'default' + - receiver: "default" group_by: [] match_re: alertname: .* continue: true - - receiver: 'by-cluster-service' - group_by: ['alertname', 'cluster', 'service'] + - receiver: "by-cluster-service" + group_by: ["alertname", "cluster", "service"] match_re: alertname: .* continue: true - - receiver: 'by-name' + - receiver: "by-name" group_by: [alertname] match_re: alertname: .* continue: true - - receiver: 'by-cluster' + - receiver: "by-cluster" group_by: [cluster] match_re: alertname: .* @@ -30,14 +30,14 @@ route: inhibit_rules: - source_match: - severity: 'critical' + severity: "critical" target_match: - severity: 'warning' - # Apply inhibition if the alertname is the same. - equal: ['alertname', 'cluster', 'service'] + severity: "warning" + # Apply inhibition if the alertname and cluster is the same in both + equal: ["alertname", "cluster"] receivers: - - name: 'default' - - name: 'by-cluster-service' - - name: 'by-name' - - name: 'by-cluster' + - name: "default" + - name: "by-cluster-service" + - name: "by-name" + - name: "by-cluster" diff --git a/demo/generator.py b/demo/generator.py index abef696e4..f6e5defa3 100755 --- a/demo/generator.py +++ b/demo/generator.py @@ -321,6 +321,32 @@ class LongNameAlerts(AlertGenerator): return _gen(5, "dev") + _gen(1, "staging") + _gen(11, "prod") +class InhibitedAlert(AlertGenerator): + name = "Inhibition Test Alert" + comment = "This alert should be inhibited by another alert" + + def alerts(self): + return [ + newAlert(self._labels(instance="server1", cluster="prod", + severity="warning"), + self._annotations() + ) + ] + + +class InhibitingAlert(AlertGenerator): + name = "Inhibition Test Alert" + comment = "This alert should inhibit other alerts" + + def alerts(self): + return [ + newAlert(self._labels(instance="server1", cluster="prod", + severity="critical"), + self._annotations() + ) + ] + + if __name__ == "__main__": generators = [ AlwaysOnAlert(MAX_INTERVAL), @@ -332,6 +358,8 @@ if __name__ == "__main__": RandomName(MAX_INTERVAL), MixedAlerts(MIN_INTERVAL), LongNameAlerts(MAX_INTERVAL), + InhibitedAlert(MAX_INTERVAL), + InhibitingAlert(MAX_INTERVAL), ] while True: for g in generators: