Render alertmanager config without yaml filter
Change-Id: Ie86bb95ab7bf37291347ca4533fe20bbd95484e1
diff --git a/metadata/service/alertmanager/container.yml b/metadata/service/alertmanager/container.yml
index 1fcf610..8335969 100644
--- a/metadata/service/alertmanager/container.yml
+++ b/metadata/service/alertmanager/container.yml
@@ -11,29 +11,37 @@
global:
resolve_timeout: 5m
route:
- group_by: ['alertname', 'region', 'service']
+ group_by: ['region', 'service']
group_wait: 60s
group_interval: 5m
repeat_interval: 3h
receiver: HTTP-notification
- inhibit_rules:
- - source_match:
+ inhibit_rule:
+ InhibitCriticalWhenDown:
+ enabled: true
+ source_match:
severity: 'down'
target_match:
severity: 'critical'
equal: ['region', 'service']
- - source_match:
+ InhibitWarningWhenDown:
+ enabled: true
+ source_match:
severity: 'down'
target_match:
severity: 'warning'
equal: ['region', 'service']
- - source_match:
+ InhibitWarningWhenCritical:
+ enabled: true
+ source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'region', 'service']
- receivers:
- - name: 'HTTP-notification'
+ receiver:
+ HTTP-notification:
+ enabled: true
webhook_configs:
- - url: http://127.0.0.1
+ localhost:
+ url: http://127.0.0.1
send_resolved: true
diff --git a/prometheus/files/alertmanager.yml b/prometheus/files/alertmanager.yml
index d699de3..793733b 100644
--- a/prometheus/files/alertmanager.yml
+++ b/prometheus/files/alertmanager.yml
@@ -1,7 +1,9 @@
{% from "prometheus/map.jinja" import alertmanager with context %}
global:
{%- if alertmanager.config.global is defined %}
-{{ alertmanager.config.global | yaml(False) | indent(2, true) }}
+ {%- if alertmanager.config.global.resolve_timeout is defined %}
+ resolve_timeout: {{ alertmanager.config.global.resolve_timeout }}
+ {%- endif %}
{%- endif %}
route:
@@ -10,11 +12,37 @@
{%- endif %}
inhibit_rules:
-{%- if alertmanager.config.inhibit_rules is defined %}
-{{ alertmanager.config.inhibit_rules | yaml(False) | indent(2, true) }}
+{%- for name, rule in alertmanager.config.get('inhibit_rule', {}).iteritems() %}
+{%- if rule.get('enabled', True) %}
+ # {{ name }}
+ - source_match:
+ {%- for key, value in rule.source_match.iteritems() %}
+ {{ key }}: {{ value }}
+ {%- endfor %}
+ target_match:
+ {%- for key, value in rule.target_match.iteritems() %}
+ {{ key }}: {{ value }}
+ {%- endfor %}
+ equal:
+ {%- for key in rule.equal %}
+ - {{ key }}
+ {%- endfor %}
{%- endif %}
+{%- endfor %}
receivers:
-{%- if alertmanager.config.receivers is defined %}
-{{ alertmanager.config.receivers | yaml(False) | indent(2, true) }}
+{%- for name, config in alertmanager.config.get('receiver', {}).iteritems() %}
+{%- if config.get('enabled', True) %}
+ - name: '{{ name }}'
+ {%- if config.webhook_configs is defined %}
+ webhook_configs:
+ {%- for name, webhook in config.webhook_configs.iteritems() %}
+ # {{ name }}
+ - url: {{ webhook.url }}
+ {%- if webhook.send_resolved is defined %}
+ send_resolved: {{ webhook.send_resolved | lower }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
{%- endif %}
+{%- endfor %}