Auf dieser Seite wird gezeigt, wie Sie messwertbasierte Benachrichtigungsrichtlinien für Google Distributed Cloud-Cluster erstellen. Sie können mehrere Beispiele herunterladen, mit denen Sie Benachrichtigungsrichtlinien für häufige Szenarien einrichten können. Weitere Informationen zu messwertbasierten Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien für Messwertgrenzwerte erstellen in der Google Cloud-Dokumentation zur Beobachtbarkeit.
Hinweise
Sie benötigen die folgenden Berechtigungen, um Benachrichtigungsrichtlinien zu erstellen:
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.update
Sie haben diese Berechtigungen, wenn Sie eine der folgenden Rollen haben:
monitoring.alertPolicyEditor
monitoring.editor
- Projektbearbeiter
- Projektinhaber
Wenn Sie logbasierte Benachrichtigungsrichtlinien mit der Google Cloud CLI erstellen möchten, benötigen Sie außerdem die Rolle serviceusage.serviceUsageConsumer
. Eine Anleitung zum Einrichten logbasierter Benachrichtigungsrichtlinien finden Sie in der Google Cloud Observability-Dokumentation unter Logbasierte Benachrichtigungen konfigurieren.
Rufen Sie die IAM-Seite in der Google Cloud Console auf, um Ihre Rollen zu prüfen.
Beispielrichtlinie erstellen: API-Server nicht verfügbar
In dieser Übung erstellen Sie eine Benachrichtigungsrichtlinie für Kubernetes API-Server von Clustern. Mit dieser Richtlinie können Sie festlegen, dass Sie benachrichtigt werden, wenn der API-Server eines Clusters nicht verfügbar ist.
Laden Sie die Richtlinienkonfigurationsdatei herunter: apiserver-unavailable.json
Erstellen Sie die Richtlinie:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
Ersetzen Sie POLICY_CONFIG durch den Pfad der soeben heruntergeladenen Konfigurationsdatei.
Rufen Sie die Benachrichtigungsrichtlinien auf:
Console
Rufen Sie in der Google Cloud Console die Seite Monitoring auf.
Wählen Sie links Benachrichtigungen aus.
Unter Richtlinien finden Sie eine Liste Ihrer Benachrichtigungsrichtlinien.
Wählen Sie in der Liste Anthos Clusters API-Server nicht verfügbar (kritisch) aus, um Details zu der neuen Richtlinie aufzurufen. Unter Bedingungen finden Sie eine Beschreibung der Richtlinie. Beispiel:
Policy violates when ANY condition is met Anthos cluster API server uptime is absent for 5m
gcloud
gcloud alpha monitoring policies list
Die Ausgabe enthält detaillierte Informationen zur Richtlinie. Beispiel:
combiner: OR conditions: - conditionAbsent: aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_MEAN groupByFields: - resource.label.project_id - resource.label.location - resource.label.cluster_name - resource.label.namespace_name - resource.label.container_name - resource.label.pod_name perSeriesAligner: ALIGN_MAX duration: 300s filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver") trigger: count: 1 displayName: Anthos cluster API server uptime is absent for 5m name: projects/…/alertPolicies/…/conditions/… displayName: Anthos cluster API server unavailable (critical) enabled: true mutationRecord: mutateTime: … mutatedBy: … name: projects/…/alertPolicies/…
Zusätzliche Benachrichtigungsrichtlinien erstellen
Dieser Abschnitt enthält Beschreibungen und Konfigurationsdateien für eine Reihe empfohlener Benachrichtigungsrichtlinien.
Führen Sie die gleichen Schritte aus, die Sie in der vorherigen Anleitung verwendet haben, um eine Richtlinie zu erstellen:
Klicken Sie auf den Link in der rechten Spalte, um die Konfigurationsdatei herunterzuladen.
Optional können Sie die Bedingungen an Ihre spezifischen Anforderungen anpassen. Sie können beispielsweise zusätzliche Filter für eine Teilmenge von Clustern hinzufügen oder die Schwellenwerte anpassen, um das Gleichgewicht zwischen Rauschen und Wichtigkeit in Einklang zu bringen.
Führen Sie
gcloud alpha monitoring policies create
aus, um die Richtlinie zu erstellen.
Sie können alle in diesem Dokument beschriebenen Beispiele für Benachrichtigungsrichtlinien mit dem folgenden Skript herunterladen und installieren:
# 1. Create a directory named alert_samples:
mkdir alert_samples && cd alert_samples
declare -a alerts=("apiserver-unavailable.json" "controller-manager-unavailable.json" "scheduler-unavailable.json" \
"pod-crash-looping.json" "pod-not-ready-1h.json" "container-cpu-usage-high-reaching-limit.json" \
"container-memory-usage-high-reaching-limit.json" "persistent-volume-usage-high.json" "node-cpu-usage-high.json" \
"node-disk-usage-high.json" "node-memory-usage-high.json" "node-not-ready-1h.json" "apiserver-error-ratio-high.json" \
"etcd-leader-changes-or-proposal-failures-frequent.json" "etcd-server-not-in-quorum.yaml" "etcd-storage-usage-high.json")
# 2. Download all alert samples into the alert_samples/ directory:
for x in "${alerts[@]}"
do
wget https://cloud.google.com/kubernetes-engine/distributed-cloud/bare-metal/docs/samples/${x}
done
# 3. (optional) Uncomment and provide your project ID to set the default project
# for gcloud commands:
# gcloud config set project <PROJECT_ID>
# 4. Create alert policies for each of the downloaded samples:
for x in "${alerts[@]}"
do
gcloud alpha monitoring policies create --policy-from-file=${x}
done
Verfügbarkeit von Komponenten der Steuerungsebene
Name der Benachrichtigung | Beschreibung | Benachrichtigungsrichtlinie in Cloud Monitoring definieren |
---|---|---|
API-Server nicht verfügbar (kritisch) | Messwert für Betriebszeit des API-Servers ist nicht verfügbar | apiserver-unavailable.json |
Planer nicht verfügbar (kritisch) | Messwert zur Betriebszeit des Planers ist nicht verfügbar | scheduler-unavailable.json |
Controller-Manager nicht verfügbar (kritisch) | Messwert zur Betriebszeit des Controller-Managers ist nicht verfügbar | controller-manager-unavailable.json |
Kubernetes-System
Name der Benachrichtigung | Beschreibung | Benachrichtigungsrichtlinie in Cloud Monitoring definieren |
---|---|---|
Pod-Crash-Schleife (Warnung) | Der Pod wird immer wieder neu gestartet und befindet sich möglicherweise in einer Absturzschleife | pod-crash-looping.json |
Pod seit mehr als einer Stunde nicht bereit (kritisch) | Pod ist seit mehr als einer Stunde nicht einsatzbereit | pod-not-ready-1h.json |
Container-CPU-Auslastung überschreitet 80 % (Warnung) | Container-CPU-Auslastung liegt bei über 80 % des Limits | container-cpu-usage-high-reaching-limit.json |
Container-Speichernutzung überschreitet 85 % (Warnung) | Die Nutzung des Containerarbeitsspeichers liegt über 85 % des Limits | container-memory-usage-high-reaching-limit.json |
Hohe Auslastung nichtflüchtiger Volumes (kritisch) | Das beanspruchte nichtflüchtige Volume hat weniger als 3 % freien Speicherplatz | persistent-volume-usage-high.json |
CPU-Auslastung des Knotens überschreitet 80 % (Warnung) | CPU-Auslastung des Knotens liegt bei über 80 % der insgesamt zuweisbaren Leistung für 5 Minuten | node-cpu-usage-high.json |
Laufwerknutzung des Knotens überschreitet 85 % (Warnung) | Weniger als 15 % sind pro Laufwerk-Bereitstellungspunkt für 10 Minuten frei | node-disk-usage-high.json |
Speichernutzung des Knotens überschreitet 80 % (Warnung) | Die Knotenarbeitsspeichernutzung beträgt über 80% des insgesamt zuweisbaren Speicherplatzes für 5 Min. | node-memory-usage-high.json |
Knoten seit mehr als einer Stunde nicht bereit (kritisch) | Knoten ist seit mehr als einer Stunde nicht einsatzbereit | node-not-ready-1h.json |
Kubernetes-Leistung
Name der Benachrichtigung | Beschreibung | Benachrichtigungsrichtlinie in Cloud Monitoring definieren |
---|---|---|
API-Server-Fehlerverhältnis überschreitet 20 % (kritisch) | API-Server gibt Fehler 5xx oder 429 bei mehr als 20% aller Anfragen pro Verb für 15 Minuten aus | apiserver-error-ratio-high.json |
Wechsel des ETCD-Leiters oder Ausfall des Vorschlags zu häufig (Warnung) | Die etcd -Leader-Änderungen oder Vorschlagsfehler treten zu häufig auf |
etcd-leader-changes-or-proposal-failures-frequent.json |
ETCD-Server ist nicht im Quorum (kritisch) | Für 5 Minuten wurde kein Commit für etcd -Servervorschläge durchgeführt. Möglicherweise ist das Quorum verloren gegangen. |
etcd-server-not-in-quorum.yaml |
ETCD-Speicher überschreitet das Limit von 90 % (Warnung) | Die Speichernutzung von etcd liegt über 90 % des Limits |
etcd-storage-usage-high.json |
Benachrichtigungsrichtlinien mit PromQL
Die Abfragen in Benachrichtigungsrichtlinien können auch in PromQL anstelle von MQL ausgedrückt werden.
Beispielsweise kann die PromQL-Version der Richtlinie API server error ratio exceeds 20
percent (critical)
heruntergeladen werden: apiserver-error-ratio-high-promql.json.
Weitere Informationen finden Sie unter Managed Service for Prometheus verwenden in der Google Distributed Cloud-Dokumentation und unter Benachrichtigungsrichtlinien mit PromQL in der Cloud Monitoring-Dokumentation.
Benachrichtigungen erhalten
Nachdem Sie eine Benachrichtigungsrichtlinie erstellt haben, können Sie einen oder mehrere Benachrichtigungskanäle für die Richtlinie definieren. Es gibt verschiedene Arten von Benachrichtigungskanälen. Beispielsweise können Sie sich per E-Mail, mit einem Slack-Kanal oder mit einer mobilen App benachrichtigen lassen. Sie können die Kanäle auswählen, die Ihren Anforderungen entsprechen.
Eine Anleitung zum Konfigurieren von Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle verwalten.