Alarme für den Kontingentverbrauch in Observability einrichten
Zuletzt aktualisiert am
Um eine kontinuierliche Daten-Ingestion ohne unerwartete Datenverluste zu gewährleisten, wird die Einrichtung von Frühwarnalarmen dringend empfohlen. Durch die Konfiguration von Alarmen, die auslösen, sobald Ihr Ressourcenverbrauch 90 % Ihrer zugewiesenen Limits erreicht, haben Sie genügend Zeit zu reagieren – entweder durch die Optimierung Ihrer Datenübertragung oder durch ein Upgrade Ihres Tarifs.
Diese Anleitung bietet eine einsatzbereite Konfiguration zur Einrichtung von Email-Alarmen für die folgenden kritischen Kontingente:
- Logs: Größe des Speicher-Buckets
- Traces: Größe des Speicher-Buckets
- Metrics: Schreib-Samples pro Minute
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Aktive Observability-Instanz: Sie verfügen über eine laufende STACKIT Observability-Instanz.
Schritt-für-Schritt-Einrichtung
Abschnitt betitelt „Schritt-für-Schritt-Einrichtung“Folgen Sie diesen Schritten, um Ihren Alertmanager-Receiver, das Routing und die Prometheus-Alarmregeln zu konfigurieren.
-
Variablen exportieren
Um die Befehle in dieser Anleitung reibungslos auszuführen, exportieren Sie zuerst die Variablen aus dem Code-Block in Ihrem Terminal. Ersetzen Sie die Werte durch Ihre tatsächliche Projekt-ID, Instanz-ID und die Email-Adresse, die die Alarme empfangen soll:
Terminal-Fenster export PROJECT_ID="ihre-projekt-id"export INSTANCE_ID="ihre-instanz-id"export EMAIL_ADDRESS="ihre-email@firma.de" -
Alertmanager-Receiver erstellen
Konfigurieren Sie zunächst einen Alertmanager-Receiver, um festzulegen, wohin der Alarm gesendet werden soll. Wir erstellen einen Email-Receiver unter Verwendung Ihrer exportierten Email-Adresse.
STACKIT API (CLI)
Terminal-Fenster stackit curl -X POST "[https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertconfigs/receivers](https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertconfigs/receivers)" \-H "accept: application/json" \-H "Content-Type: application/json" \--data '{"name":"QuotaAlertsReceiver","emailConfigs":[{"to":"'$EMAIL_ADDRESS'"}]}' -
Alertmanager-Route erstellen
Erstellen Sie als Nächstes eine Alert-Konfigurationsroute. Diese weist den Alertmanager an, Alarme basierend auf spezifischen Gruppierungs- und Timing-Einstellungen an den erstellten Receiver weiterzuleiten. Wir wenden außerdem einen Matcher an, um sicherzustellen, dass nur Alarme mit der Schweregrad-Stufe
warninghierhin geroutet werden.STACKIT API (CLI)
Terminal-Fenster stackit curl -X POST "[https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertconfigs/routes](https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertconfigs/routes)" \-H "accept: application/json" \-H "Content-Type: application/json" \--data '{"receiver":"QuotaAlertsReceiver","groupBy":["alertname"],"groupWait":"30s","groupInterval":"5m","repeatInterval":"4h","matchers":["severity=warning"]}' -
Prometheus-Alarmgruppe und -Regeln erstellen
Definieren Sie abschließend die Alarmbedingungen basierend auf der Prometheus Query Language (
expr). Der folgende Befehl erstellt eine Alarmgruppe mit drei Regeln, die auslösen, wenn Ihre Logs-, Traces- oder Metrics-Nutzung 90 % erreicht.STACKIT API (CLI)
Terminal-Fenster stackit curl -X POST "[https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertgroups](https://argus.api.eu01.stackit.cloud/v1/projects/$PROJECT_ID/instances/$INSTANCE_ID/alertgroups)" \-H "accept: application/json" \-H "Content-Type: application/json" \--data '{"name": "QuotaConsumptionAlerts","interval": "60s","rules": [{"alert": "LogQuotaApproaching","expr": "max(instance_logs_storage_size{} * 100 / instance_logs_plan_size{}) >= 90","for": "5m","labels": { "severity": "warning" }},{"alert": "TraceQuotaApproaching","expr": "max(instance_traces_storage_size{} * 100 / instance_trace_plan_size{}) >= 90","for": "5m","labels": { "severity": "warning" }},{"alert": "MetricsQuotaApproaching","expr": "avg by(namespace) (increase(instance_remote_write_samples_received_total[2m])) / on() group_right min(instance_remote_write_samples_max_1m) >= 0.9","for": "5m","labels": { "severity": "warning" }}]}'