formula-prometheus/prometheus/files/alerts.yml

60 lines
2 KiB
YAML
Raw Normal View History

{%- from "prometheus/map.jinja" import server with context %}
{%- set alerts = {} %}
{%- set recordings = {} %}
{%- for recording_rule in server.get('recording', []) %}
{%- if recording_rule.name not in recordings %}
{%- do recordings.update({recording_rule.name: recording_rule.query}) %}
{%- endif %}
{%- endfor %}
{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
{%- set server_grain = node_grains.get('prometheus', {}).get('server', {}) %}
{%- for recording_rule in server_grain.get('recording', []) %}
{%- if recording_rule.name not in recordings %}
{%- do recordings.update({recording_rule.name: recording_rule.query}) %}
{%- endif %}
{%- endfor %}
{%- endfor %}
{%- for recording_name, query in recordings.iteritems() %}
{{ recording_name }} = {{ query }}
{%- endfor %}
{%- for alertname, alert in server.get('alert', {}).iteritems() %}
{%- if alertname not in alerts %}
{%- do alerts.update({alertname: alert}) %}
{%- endif %}
{%- endfor %}
{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
{%- set server_grain = node_grains.get('prometheus', {}).get('server', {}) %}
{%- for alertname, alert in server_grain.get('alert', {}).iteritems() %}
{%- if alertname not in alerts %}
{%- do alerts.update({alertname: alert}) %}
{%- endif %}
{%- endfor %}
{%- endfor %}
{%- for alertname, alert in alerts.iteritems() %}
ALERT {{ alertname }}
IF {{ alert.if }}
{%- if alert.for is defined %}FOR {{ alert.for }}{%- endif %}
{%- if alert.labels is defined %}
LABELS {
{%- for name, value in alert.labels.iteritems() %}
{{ name }} = "{{ value }}"{%- if not loop.last %},{%- endif %}
{%- endfor %}
}
{%- endif %}
{%- if alert.annotations is defined %}
ANNOTATIONS {
{%- for name, value in alert.annotations.iteritems() %}
{{ name }} = "{{ value }}"{%- if not loop.last %},{%- endif %}
{%- endfor %}
}
{%- endif %}
{%- endfor %}