formula-prometheus/prometheus/files/alertmanager.yml

122 lines
3.6 KiB
YAML
Raw Normal View History

{% 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:
{%- 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 %}
{%- endfor %}
{%- endif %}
{%- endif %}
{%- endfor %}