Prometheus: Warnungen
Wie Prometheus-Warnungen funktionieren und wie man sie konfiguriert
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Prometheus Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
Alert Managerinklusive, um Warnungen anSlack,Mattermost,PagerDutyusw. zu senden.- Dedizierter E-Mail-Server zum Versenden von unbegrenzten E-Mail-Warnungen.
Blackboxzur Überprüfung vonHTTP,ICMP,TCPund mehr.- Einfache Konfiguration mit Online-Konfigurationsdatei-Editor.
- Mühelose Updates mit nur einem Klick.
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Prometheus Cloud Hosting-Lösung von Stackhero auszuprobieren!
Einführung in Prometheus-Warnungen
Prometheus kann Ihre Metriken analysieren und Warnungen basierend auf von Ihnen definierten Regeln auslösen. Mit Stackhero for Prometheus werden Warnungen in zwei Phasen verarbeitet. Zuerst werden die Prometheus-Warnregeln ausgewertet und dann übernimmt der Alert Manager.
Alles ist mit Stackhero for Prometheus vorinstalliert und konfiguriert, sodass Sie nur eine minimale Einrichtung vornehmen müssen, wie z.B. das Hinzufügen Ihrer E-Mail-Adresse, um Warnungen zu erhalten.
Übersicht von Stackhero for Prometheus
Einführung in Prometheus-Warnregeln
Wenn Prometheus Metriken abruft, werden diese anhand der im rules-alert.yml-Datei angegebenen Regeln ausgewertet. Diese Warnregeln definieren Schwellenwerte und Zeitfenster für das Auslösen von Warnungen basierend auf den gesammelten Metriken.
Zum Beispiel kann eine Warnung ausgelöst werden, wenn die Festplattennutzung 80 % überschreitet. Zusätzlich können Regeln eingerichtet werden, um zukünftige Bedingungen vorherzusagen und eine Warnung zu senden, wenn geschätzt wird, dass der Speicherplatz innerhalb der nächsten 24 Stunden vollständig gefüllt sein wird.
Ein weiteres häufiges Anwendungsbeispiel ist die Erkennung ungewöhnlichen Verhaltens. Zum Beispiel, wenn es einen plötzlichen Anstieg der Netzwerkauslastung gibt, kann eine Warnung ausgelöst werden, um potenzielle DDoS-Angriffe oder Datenexfiltrationsversuche zu erkennen.
Prometheus-Warnregeln sind direkt im Prometheus-Server enthalten.
Einführung in den Alert Manager
Der Alert Manager empfängt Warnungen, die durch Prometheus-Warnregeln ausgelöst wurden. Er dedupliziert Warnungen, gruppiert sie und leitet sie dann über verschiedene Benachrichtigungskanäle wie E-Mail, Slack, Mattermost, PagerDuty und mehr weiter. Seine Konfigurationsdatei ist alert-manager.yml.
Zum Beispiel, wenn es zu einer Serververlangsamung kommt, könnten Prometheus-Warnregeln separate Warnungen für erhöhte Last und CPU-Auslastung auslösen. Der Alert Manager empfängt diese Warnungen, gruppiert sie, da sie sich auf denselben Server beziehen, und sendet eine konsolidierte Benachrichtigung an den entsprechenden Empfänger oder das Team basierend auf Ihrer Konfiguration.
Wenn die Verlangsamung anhält, wird Prometheus weiterhin Warnungen senden, aber der Alert Manager wird doppelte Nachrichten für einen bestimmten Zeitraum unterdrücken, um zu verhindern, dass Ihr Team mit redundanten Warnungen überflutet wird.
Sie können Warnungen auch stummschalten oder vollständig unterdrücken, wenn nötig. Sobald das zugrunde liegende Problem gelöst ist, wird eine Wiederherstellungsnachricht gesendet, um Ihre Teams zu benachrichtigen.
Dieses Beispiel veranschaulicht ein häufiges Szenario, aber Sie können die Einrichtung vollständig an Ihre spezifischen Anforderungen anpassen.
Warnung
Alert Managerist standardmäßig nicht mit Prometheus enthalten. Um Ihnen Zeit zu sparen und den Prozess zu vereinfachen, haben wir denAlert Managerin Stackhero for Prometheus integriert und konfiguriert, sodass Sie Warnungen in nur wenigen Minuten mit minimalem Aufwand senden können.
Konfiguration von Prometheus-Warnregeln
Sie können Prometheus-Warnregeln anpassen, indem Sie die Datei rules-alert.yml bearbeiten. Um dies zu tun, greifen Sie auf Ihr Stackhero-Dashboard zu, wählen Sie Ihren Prometheus-Dienst aus und klicken Sie auf "Konfiguration der Prometheus-Warnregeln".
Wir haben bereits einige Standardwarnregeln zu Ihrer Stackhero for Prometheus-Instanz hinzugefügt, sodass Sie die Datei rules-alert.yml normalerweise nicht ändern müssen, es sei denn, eine Anpassung ist erforderlich.
Hier ist ein Beispiel für eine Warnung, die ausgelöst wird, wenn die Festplattennutzung 90 % überschreitet:
- alert: "HostOutOfDiskSpace"
expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
for: 2m
labels:
severity: "warning"
annotations:
summary: "Host out of disk space (instance {{ $labels.instance }})"
description: "Disk is almost full (< 10% left)"
value: "{{ $value }}"
Hier ist ein weiteres Beispiel, das eine potenzielle Sättigung des Speicherplatzes innerhalb der nächsten 24 Stunden vorhersagt:
- alert: "HostDiskWillFillIn24Hours"
expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs"}[1h], 24 * 3600) < 0 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
for: 2m
labels:
severity: "warning"
annotations:
summary: "Host disk will fill in 24 hours (instance {{ $labels.instance }})"
description: "Filesystem is predicted to run out of space within the next 24 hours at the current write rate"
value: "{{ $value }}"
Sie können viele zusätzliche Beispiele für Warnregeln auf der Awesome Prometheus Alerts Website finden.
Konfiguration des Alert Managers
Um den Alert Manager zu konfigurieren, bearbeiten Sie die Datei alert-manager.yml. In Ihrem Stackhero-Dashboard wählen Sie Ihren Prometheus-Dienst aus und klicken dann auf "Konfiguration des Alert Managers".
Im Folgenden präsentieren wir die Grundlagen. Für weitere Details verweisen wir auf die offizielle Dokumentation.
Konfiguration des Alert Managers: die Empfänger
Der erste Schritt besteht darin, die receivers zu konfigurieren. Jeder receiver ist eine Reihe von Benachrichtigungsintegrationen (wie E-Mail, Slack, etc.), die durch einen eindeutigen name identifiziert werden.
Zum Beispiel könnten Sie einen Empfänger namens "critical_alert" für Benachrichtigungen erstellen, die durch Warnungen mit kritischer Schwere ausgelöst werden. Alternativ könnten Sie einen Empfänger wie "devops_team" erstellen, um Warnungen an Ihr DevOps-Team zu leiten.
Das Festlegen eines
receiver-Namens auf "critical_alert" allein wird keine Warnungen senden. Die Zuordnung zwischen Warnungen und dem Empfänger erfolgt in der unten beschriebenenroutes-Konfiguration.
Sobald ein Empfänger definiert ist, müssen Sie die entsprechenden Benachrichtigungsintegrationen einrichten. Diese könnten E-Mails, Slack/Mattermost-Benachrichtigungen, PagerDuty, Opsgenie, Webhook und mehr umfassen.
Hier ist ein Beispiel für einen receiver namens "critical_alert", der eine E-Mail an zwei Benutzer und eine Slack-Nachricht an den #alerts-Kanal sendet:
receivers:
- name: "critical_alert"
# Kritische Warnungen per E-Mail senden
email_configs:
- send_resolved: true
to: "user@mycompany.com"
# Kritische Warnungen an Slack oder Mattermost senden
slack_configs:
- send_resolved: true
api_url: "<your Slack or Mattermost API URL>"
channel: "#alerts"
title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"
Sie können mehrere Empfänger definieren, um verschiedene Arten von Warnungen zu verwalten. Zum Beispiel könnten Sie einen für kritische Warnungen, einen anderen für Fehlerwarnungen und einen weiteren für andere Warnungstypen haben.
Instanzen von Stackhero for Prometheus beinhalten einen dedizierten und privaten E-Mail-Server, der es Ihnen ermöglicht, eine unbegrenzte Anzahl von E-Mail-Warnungen ohne zusätzliche Kosten zu senden.
Konfiguration des Alert Managers: die Routen
Nachdem Sie Ihre Empfänger konfiguriert haben, müssen Sie die routes einrichten. Die Routen sagen dem Alert Manager, wie er eingehende Warnungen von Prometheus behandeln und wohin er sie senden soll (typischerweise zu einem Ihrer vorkonfigurierten Empfänger).
Hier ist ein einfaches Beispiel, das Warnungen mit einer Schwere von "critical" an den Empfänger namens "critical_alert" leitet:
route:
routes:
- match:
severity: "critical"
receiver: "critical_alert"
Wir haben einige Routen in der
alert-manager.yml-Datei vorkonfiguriert, die mit Ihrer Stackhero for Prometheus-Instanz bereitgestellt wird. Um Warnungen zu empfangen, aktualisieren Sie einfach die Abschnitteemail_configsund/oderslack_configsmit Ihren Benachrichtigungsdetails.