Benachrichtigungsrichtlinien erstellen

Auf dieser Seite wird gezeigt, wie Sie messwertbasierte Benachrichtigungsrichtlinien für Google Distributed Cloud-Cluster erstellen. Wir stellen Ihnen mehrere Beispiele zum Herunterladen zur Verfügung, die Ihnen beim Einrichten von Benachrichtigungsrichtlinien für häufige Szenarien helfen. Weitere Informationen zu messwertbasierten Benachrichtigungsrichtlinien finden Sie in der Dokumentation zur Google Cloud-Beobachtbarkeit unter Benachrichtigungsrichtlinien für Messwertschwellen erstellen.

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 mithilfe 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 Dokumentation zur Google Cloud-Beobachtbarkeit 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.

  1. Laden Sie die Richtlinienkonfigurationsdatei herunter: apiserver-unavailable.json

  2. 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.

  3. Rufen Sie die Benachrichtigungsrichtlinien auf:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Monitoring auf.

      Zu Monitoring

    2. Wählen Sie links Benachrichtigungen aus.

    3. Unter Richtlinien finden Sie eine Liste Ihrer Benachrichtigungsrichtlinien.

      Wählen Sie in der Liste Anthos Cluster API-Server nicht verfügbar (kritisch) aus, um Details zur 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:

  1. Klicken Sie auf den Link in der rechten Spalte, um die Konfigurationsdatei herunterzuladen.

  2. Passen Sie die Bedingungen optional an Ihre spezifischen Anforderungen an. Sie können beispielsweise zusätzliche Filter für eine Teilmenge von Clustern hinzufügen oder die Schwellenwerte für ein ausgewogenes Verhältnis zwischen Rauschen und Wichtigkeit anpassen.

  3. Führen Sie gcloud alpha monitoring policies create aus, um die Richtlinie zu erstellen.

Mit dem folgenden Skript können Sie alle in diesem Dokument beschriebenen Benachrichtigungsrichtlinien-Beispiele 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/anthos/clusters/docs/bare-metal/latest/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 die Betriebszeit des API-Servers ist nicht verfügbar apiserver-unavailable.json
Planer nicht verfügbar (kritisch) Messwert zur Verfügbarkeitsdiagnose 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-Absturzschleife (Warnung) Der Pod wird ständig neu gestartet und befindet sich möglicherweise in einer Absturzschleife pod-crash-looping.json
Pod nicht länger als eine Stunde bereit (kritisch) Pod ist seit mehr als einer Stunde nicht einsatzbereit pod-not-ready-1h.json
Die Container-CPU-Nutzung überschreitet 80 % (Warnung) Die Container-CPU-Nutzung liegt über 80% des Limits container-cpu-usage-high-reaching-limit.json
Container-Arbeitsspeichernutzung überschreitet 85 % (Warnung) Die Containerarbeitsspeichernutzung liegt über 85% des Limits container-memory-usage-high-reaching-limit.json
Hohe Nutzung des nichtflüchtigen Volumes (kritisch) Beanspruchtes nichtflüchtiges Volume hat weniger als 3 % freien Speicherplatz persistent-volume-usage-high.json
Die Auslastung der Knoten-CPU überschreitet 80 % (Warnung) Die Nutzung der Knoten-CPU macht über 80% der insgesamt zuweisbaren Knoten-CPUs für 5 Minuten aus node-cpu-usage-high.json
Die Nutzung des Knotenlaufwerks überschreitet 85 % (Warnung) Pro Laufwerksbereitstellungspunkt sind 10 Minuten lang weniger als 15 % frei node-disk-usage-high.json
Die Auslastung des Knotenarbeitsspeichers überschreitet 80 % (Warnung) Die Nutzung des Knotenarbeitsspeichers macht über 80% des gesamten zuweisbaren Arbeitsspeichers für 5 Min. aus node-memory-usage-high.json
Knoten nicht länger als eine Stunde 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-Serverfehlerverhältnis überschreitet 20 % (kritisch) Der API-Server gibt 5xx- oder 429-Fehler bei mehr als 20% aller Anfragen pro Verb für 15 Minuten aus apiserver-error-ratio-high.json
ETCD-Leader wird zu häufig geändert oder das Angebot schlägt zu häufig fehl (Warnung) Die etcd führende Änderung oder das Fehlschlagen von Angeboten treten zu häufig auf etcd-leader-changes-or-proposal-failures-frequent.json
ETCD-Server nicht im Quorum (kritisch) Für 5 Minuten wurden keine etcd-Servervorschläge zugesichert, sodass sie möglicherweise das Quorum verloren haben etcd-server-not-in-quorum.yaml
ETCD-Speicher überschreitet das Limit von 90 % (Warnung) Die Speichernutzung von etcd beträgt mehr als 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. Die PromQL-Version der Richtlinie API server error ratio exceeds 20 percent (critical) kann beispielsweise heruntergeladen werden: apiserver-error-ratio-high-promql.json.

Weitere Informationen finden Sie in der Dokumentation Managed Service for Prometheus für Google Distributed Cloud verwenden und Benachrichtigungsrichtlinien mit PromQL für Cloud Monitoring.

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.