Generate 'route' config entry with macro

Change-Id: Id258bea57281e761fdeab10c30edcf32e695163e
This commit is contained in:
Bartosz Kupidura 2017-06-25 14:02:42 +02:00
parent 9b3d774430
commit ce0834f152
2 changed files with 37 additions and 8 deletions

View file

@ -18,7 +18,7 @@ parameters:
group_wait: 60s group_wait: 60s
group_interval: 5m group_interval: 5m
repeat_interval: 3h repeat_interval: 3h
receiver: HTTP-notification receiver: default
inhibit_rule: inhibit_rule:
InhibitCriticalWhenDown: InhibitCriticalWhenDown:
enabled: true enabled: true
@ -42,9 +42,5 @@ parameters:
severity: 'warning' severity: 'warning'
equal: ['region', 'service'] equal: ['region', 'service']
receiver: receiver:
HTTP-notification: default:
enabled: true enabled: true
webhook_configs:
localhost:
url: http://127.0.0.1
send_resolved: true

View file

@ -1,4 +1,31 @@
{% from "prometheus/map.jinja" import alertmanager with context %} {% from "prometheus/map.jinja" import alertmanager with context %}
{%- macro route_entry(route={}) -%}
{%- if route.receiver is defined -%}
receiver: {{ route.receiver }}
{%- 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: global:
{%- if alertmanager.config.global is defined %} {%- if alertmanager.config.global is defined %}
{%- if alertmanager.config.global.resolve_timeout is defined %} {%- if alertmanager.config.global.resolve_timeout is defined %}
@ -7,8 +34,14 @@ global:
{%- endif %} {%- endif %}
route: route:
{%- if alertmanager.config.route is defined %} {%- set config_route = alertmanager.config.get('route', {}) %}
{{ alertmanager.config.route | yaml(False) | indent(2, true) }} {{ 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 %} {%- endif %}
inhibit_rules: inhibit_rules: