Prometheus Alert Manager
Für die Alarmierung sollte der Prometheus Alertmanager verwendet werden. Dieser unterstützt das Gruppieren von Alarmen nach vordefinierten Labels (z.B. "Serverinstanzen") und das Routen über verschiedene Drittanbieter, z.B. per JSON über ein Web-Hook oder per E-Mail.
Eine Liste der Integrationen ist unter hier verfügbar.
Die Alerts selbst müssen in der Prometheus-Konfiguration gesetzt werden.
Hierzu kann auch eine separate alertrules.yml
-Datei angelegt werden, die in der Prometheus-Konfiguration referenziert wird.
Beispielkonfiguration
Die folgende Beispielkonfiguration prüft, ob der freie RAM eines Node-Exporters die Schwelle von 10% unterschreitet:
groups:
- name: Node_Exporter.SystemAlerts
rules:
- alert: HostOutOfMemory
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
for: 5m
labels:
severity: warning
annotations:
summary: Host out of memory (instance {{ $labels.instance }})
description: Node memory is filling up (< 10% left)\n VALUE = {{ $value }}\n LABELS: {{ $labels }}
Pfad anpassen
Außerdem muss der Pfad zum Alert Manager im Prometheus konfiguriert werden (standardmäßig localhost:9093
):
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
rule_files:
- "alertrules.yml"
Alert-Verarbeitung
In der Alert-Manager-Konfiguration wird die Alert-Verarbeitung angepasst. Hier können Alert Receiver konfiguriert werden (hier beispielhaft ein SMTP Receiver) sowie Gruppierung und Inhibition Rules festgelegt werden.
Alerts können nach bestimmten Labels gruppiert (route
-Elemente) werden, außerdem können für Alert-Gruppen Zeitintervalle gesetzt werden, welche die Verteilung der Alerts steuern.
Inhibition Rules können gesetzt werden, um beispielsweise hierarchische Alert-Strukturen (z.B. nach severity
) aufzubauen.
global:
resolve_timeout: 5m
smtp_smarthost: inubit.nemesys:25
smtp_from: alertmanager@virtimo.de
route:
group_by: ['instance','alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: 'smtp'
receivers:
- name: 'smtp'
email_configs:
- to: alerting@virtimo.de
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']