{% from "prometheus/map.jinja" import alertmanager with context %} {%- macro route_entry(route={}) -%} {%- if route.receiver is defined -%} receiver: {{ route.receiver }} {%- endif -%} {%- if route.continue is defined %} continue: {{ route.continue }} {%- endif -%} {%- if route.group_by is defined %} group_by: {%- for group_by in route.group_by %} - {{ group_by }} {%- endfor %} {%- endif %} {%- if route.group_interval is defined %} group_interval: {{ route.group_interval }} {%- endif %} {%- if route.group_wait is defined %} group_wait: {{ route.group_wait }} {%- endif %} {%- if route.repeat_interval is defined %} repeat_interval: {{ route.repeat_interval }} {%- endif %} {%- if route.match_re is defined %} match_re: {%- for match_re in route.match_re %} {{ match_re.label }}: {{ match_re.value }} {%- endfor %} {%- endif %} {%- endmacro -%} global: {%- if alertmanager.config.global is defined %} {%- if alertmanager.config.global.resolve_timeout is defined %} resolve_timeout: {{ alertmanager.config.global.resolve_timeout }} {%- endif %} {%- endif %} route: {%- set config_route = alertmanager.config.get('route', {}) %} {{ route_entry(config_route) | indent(2) }} {%- if config_route.get('routes', {}) %} routes: {%- for route_name, route in config_route.get('routes', {}).iteritems() %} # {{ route_name }} - {{ route_entry(route) | indent(4) }} {%- endfor %} {%- endif %} inhibit_rules: {%- 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: {%- 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 %} {%- if config.slack_configs is defined %} slack_configs: {%- for name, slack in config.slack_configs.iteritems() %} # {{ name }} - api_url: {{ slack.api_url }} {%- if slack.send_resolved is defined %} send_resolved: {{ slack.send_resolved | lower }} {%- endif %} {%- if slack.channel is defined %} channel: {{ slack.channel }} {%- endif %} {%- endfor %} {%- endif %} {%- if config.email_configs is defined %} email_configs: {%- for name, email in config.email_configs.iteritems() %} # {{ name }} - to: {{ email.to }} from: {{ email.from }} smarthost: {{ email.smarthost }} {%- if email.auth_username is defined %} auth_username: '{{ email.auth_username }}' {%- endif %} {%- if email.auth_password is defined %} auth_password: '{{ email.auth_password }}' {%- endif %} {%- if email.auth_secret is defined %} auth_secret: '{{ email.auth_secret }}' {%- endif %} {%- if email.auth_identity is defined %} auth_identity: '{{ email.auth_identity}}' {%- endif %} {%- if email.require_tls is defined %} require_tls: {{ email.require_tls | lower }} {%- endif %} {%- if email.send_resolved is defined %} send_resolved: {{ email.send_resolved | lower }} {%- endif %} {%- if email.html is defined %} html: '{{ email.html }}' {%- endif %} {%- if email.headers is defined %} headers: {%- for header, value in email.headers.iteritems() %} {{ header }}: {{ value }} {%- endfor %} {%- endif %} {%- endfor %} {%- endif %} {%- endif %} {%- endfor %}