Benachrichtigungsrichtlinien erstellen

Auf dieser Seite wird gezeigt, wie Sie Benachrichtigungsrichtlinien für Anthos-Cluster auf Bare-Metal-Clustern erstellen.

Hinweis

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

Rufen Sie die IAM-Seite in der Google Cloud Console auf, um Ihre Rollen zu prüfen.

Richtlinie erstellen: Anthos on baremetal cluster 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 on Baremetal Cluster API-Server nicht verfügbar (kritisch) aus, um Details zu Ihrer neuen Richtlinie aufzurufen. Unter Bedingungen finden Sie eine Beschreibung der Richtlinie. Beispiel:

      Policy violates when ANY condition is met
      Anthos on baremetal cluster API server uptime is absent
      Anthos on baremetal cluster API server uptime is less than 99.99% per minute
      

    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 resource.labels.namespace_name = "kube-system"
          AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        trigger:
          count: 1
      displayName: Anthos on baremetal cluster API server uptime is absent
      name: projects/…/alertPolicies/12404845535868002666/conditions/12404845535868003603
    - conditionThreshold:
        aggregations:
        - alignmentPeriod: 120s
          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
        comparison: COMPARISON_LT
        duration: 300s
        filter: resource.type = "k8s_container" AND resource.labels.namespace_name = "kube-system"
          AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        thresholdValue: 119.0
        trigger:
          count: 1
      displayName: Anthos on baremetal cluster API server uptime is less than 99.99% per
        minute
      name: projects/…/alertPolicies/12404845535868002666/conditions/12404845535868004540
    creationRecord:
      mutateTime: …
      mutatedBy: …
    displayName: Anthos on baremetal cluster API server unavailable (critical)
    enabled: true
    mutationRecord:
      mutateTime: …
      mutatedBy: …
    name: projects/…/alertPolicies/12404845535868002666
    

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. 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" "scheduler-unavailable.json" "controller-manager-unavailable.json" "pod-crash-looping.json" "container-memory-usage-high-reaching-limit.json"
"container-cpu-usage-high-reaching-limit.json" "pod-not-ready-1h.json" "persistent-volume-usage-high.json" "node-not-ready-1h.json" "node-cpu-usage-high.json" "node-memory-usage-high.json"
"node-disk-usage-high.json" "api-server-error-ratio-10-percent.json" "api-server-error-ratio-5-percent.json" "etcd-leader-changes-too-frequent.json" "etcd-proposals-failed-too-frequent.json"
"etcd-server-not-in-quorum.json" "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/1.13/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
Anthos on baremetal cluster API-Server nicht verfügbar (kritisch) API-Server ist nicht verfügbar oder Betriebszeit liegt unter 99,99 % pro Minute apiserver-unavailable.json
Cluster-Planer von Anthos auf Baremetal nicht verfügbar (kritisch) Der Planer ist nicht aktiv oder liegt unter 99,99 % pro Minute. scheduler-unavailable.json
Controller-Manager von Anthos auf Bare-Metal nicht verfügbar (kritisch) Der Controller-Manager ist nicht mehr für die Messwerterkennung verfügbar controller-manager-unavailable.json

Kubernetes-System

Name der Benachrichtigung Beschreibung Benachrichtigungsrichtlinie in Cloud Monitoring definieren
Pod-Absturzschleife in Anthos auf Bare-Metal (kritisch) Pod wurde neu gestartet und befindet sich möglicherweise in einer Absturzschleife pod-crash-looping.json
Anthos on Baremetal-Containerspeicher überschreitet 85 % (Warnung) Die Speicherauslastung des Containers überschreitet das Limit von 85 % container-memory-usage-high-reaching-limit.json
Anthos on Baremetal-Container-CPU-Nutzung überschreitet 80 % (Warnung) CPU-Nutzung über Container liegt über 80% des Limits container-cpu-usage-high-reaching-limit.json
Pod in Anthos auf Bare-Metal ist seit mehr als einer Stunde nicht einsatzbereit (kritisch) Pod ist seit mehr als einer Stunde nicht einsatzbereit pod-not-ready-1h.json
Hohe Auslastung von nichtflüchtigen Volumes in Anthos auf Bare-Metal (kritisch) Es wird erwartet, dass das beanspruchte nichtflüchtige Volume voll sein wird persistent-volume-usage-high.json
Anthos auf Bare-Metal-Knoten ist seit mehr als einer Stunde nicht einsatzbereit (kritisch) Knoten ist seit mehr als einer Stunde nicht einsatzbereit node-not-ready-1h.json
Die CPU-Auslastung des Anthos auf Bare-Metal-Knotens überschreitet 80 % (kritisch) CPU-Auslastung des Knotens liegt bei über 80 % node-cpu-usage-high.json
Die Speicherauslastung des Anthos auf Bare-Metal-Knotens überschreitet 80 % (kritisch) Speicherauslastung des Knotens liegt bei über 80 % node-memory-usage-high.json
Die Laufwerknutzung des Anthos auf Bare-Metal-Knotens überschreitet 80 % (kritisch) Laufwerknutzung des Knotens liegt bei über 80 % node-disk-usage-high.json

Kubernetes-Leistung

Name der Benachrichtigung Beschreibung Benachrichtigungsrichtlinie in Cloud Monitoring definieren
Fehlerrate des Anthos auf Bare-Metal-API-Servers überschreitet 10 % (kritisch) Der API-Server gibt bei mehr als 10 % der Anfragen Fehler zurück api-server-error-ratio-10-percent.json
Fehlerrate des Anthos auf Bare-Metal-API-Servers überschreitet 5 % (Warnung) Der API-Server gibt bei mehr als 5 % der Anfragen Fehler zurück api-server-error-ratio-5-percent.json
Anthos auf Bare-Metal-etcd-Leader ändert sich zu häufig (kritisch) Der etcd-Leader ändert sich zu häufig etcd-leader-changes-too-frequent.json
Anthos auf Bare-Metal-etcd-Angebote zu häufig fehlgeschlagen (kritisch) Die etcd-Angebote schlagen zu häufig fehl etcd-proposals-failed-too-frequent.json
etcd-Server von Anthos auf Bare-Metal ist nicht im Quorum (kritisch) Der etcd-Server ist nicht im Quorum etcd-server-not-in-quorum.json
Anthos on Baremetal etcd-Speicher überschreitet 90 %-Limit (kritisch) Die Speichernutzung von etcd überschreitet das Limit von 90 % etcd-storage-usage-high.json

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.