Logging und Monitoring verwenden

Auf dieser Seite wird erläutert, wie Sie Cloud Logging und Cloud Monitoring sowie Prometheus und Grafana zum Logging und Monitoring Ihrer Anthos-Cluster auf VMware-Implementierung (GKE On-Prem) verwenden. Eine Zusammenfassung der verfügbaren Konfigurationsoptionen finden Sie unter Logging und Monitoring.

Cloud Logging und Cloud Monitoring verwenden

In den folgenden Abschnitten wird erläutert, wie Sie Cloud Logging und Cloud Monitoring mit Anthos-Cluster auf VMware-Clustern (GKE On-Prem) verwenden.

Überwachte Ressourcen

Mit überwachten Ressourcen stellt Google Ressourcen wie Cluster, Knoten, Pods und Container dar. Weitere Informationen finden Sie in der Dokumentation zu den Typen überwachter Ressourcen von Cloud Monitoring.

Zum Abfragen von Logs und Messwerten müssen Sie mindestens folgende Ressourcenlabels kennen:

  • project_id: Projekt-ID für die ID des Logging-Monitoring-Projekts des Clusters. Sie haben diesen Wert im Feld stackdriver.projectID Ihrer Clusterkonfigurationsdatei angegeben.

  • location: Google Cloud-Region, in der Sie Cloud Logging-Logs und Cloud Monitoring-Messwerte speichern möchten. Es empfiehlt sich, eine Region auszuwählen, die sich in der Nähe Ihres lokalen Rechenzentrums befindet. Sie haben diesen Wert während der Installation im Feld stackdriver.clusterLocation Ihrer Cluster-Konfigurationsdatei bereitgestellt.

  • cluster_name: Clustername, den Sie beim Erstellen des Clusters ausgewählt haben.

    Sie können den cluster_name-Wert entweder für den Administrator- oder den Nutzercluster abrufen, wenn Sie die benutzerdefinierte Stackdriver-Ressource prüfen:

      kubectl -n kube-system get stackdrivers stackdriver -o yaml | grep 'clusterName:'

Auf Logdaten zugreifen

Sie können mit dem Log-Explorer in der Google Cloud Console auf Logs zugreifen. So greifen Sie beispielsweise auf die Logs eines Containers zu:

  1. Öffnen Sie in der Google Cloud Console den Log-Explorer für Ihr Projekt.
  2. Suchen Sie Logs für einen Container:
    1. Klicken Sie links oben auf das Drop-down-Menü für den Logkatalog und wählen Sie Kubernetes-Container aus.
    2. Wählen Sie den Clusternamen, den Namespace und dann einen Container aus der Hierarchie aus.

Dashboards zum Monitoring der Clusterintegrität erstellen

Anthos-Cluster auf VMware-Clustern sind standardmäßig zum Monitoring von System- und Containermesswerten konfiguriert. Nachdem Sie einen Cluster (Administrator oder Nutzer) erstellt haben, empfiehlt es sich, die folgenden Dashboards mit Cloud Monitoring zu erstellen, damit Ihr Anthos-Cluster auf VMware-Betriebsteam den Clusterstatus überwachen kann:

Die Dashboards werden während der Installation des Administratorclusters automatisch erstellt, wenn Cloud Monitoring aktiviert ist.

In diesem Abschnitt wird beschrieben, wie Sie diese Dashboards erstellen. Weitere Informationen über das Verfahren zum Erstellen von Dashboards, das in den folgenden Abschnitten beschrieben wird, finden Sie unter Dashboards nach API verwalten.

Vorbereitung

Ihr Google-Konto benötigt die folgenden Berechtigungen, um Dashboards zu erstellen:

  • monitoring.dashboards.create
  • monitoring.dashboards.delete
  • monitoring.dashboards.update

Sie haben diese Berechtigungen, wenn Ihr Konto eine der folgenden Rollen hat. Sie können Ihre Berechtigungen in der Google Cloud Console prüfen:

  • monitoring.dashboardEditor
  • monitoring.editor
  • Projekt editor
  • Projekt owner

Wenn Sie außerdem Dashboards mit gcloud (gcloud CLI) erstellen möchten, muss Ihr Google-Konto die Berechtigung serviceusage.services.use haben.

Ihrem Konto wird diese Berechtigung zugewiesen, wenn es über eine der folgenden Rollen verfügt:

  • roles/serviceusage.serviceUsageConsumer
  • roles/serviceusage.serviceUsageAdmin
  • roles/owner
  • roles/editor
  • Projekt editor
  • Projekt owner

Dashboard für den Status der Steuerungsebene erstellen

Die Anthos-Cluster auf VMware-Steuerungsebene besteht aus dem API-Server, dem Planer, dem Controller-Manager und dem etcd-Speicher. Wenn Sie den Status der Steuerungsebene überwachen möchten, erstellen Sie ein Dashboard, das den Status dieser Komponenten überwacht.

  1. Laden Sie die Dashboard-Konfiguration herunter: control-plane-status.json.

  2. Erstellen Sie mithilfe des folgenden Befehls ein benutzerdefiniertes Dashboard mit der Konfigurationsdatei:

    gcloud monitoring dashboards create --config-from-file=control-plane-status.json
  3. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:

    Zu Monitoring

  4. Wählen Sie Ressourcen > Dashboards und das Dashboard mit dem Namen GKE On-Prem control layer status aus. Der Status der Steuerungsebene jedes Nutzerclusters wird aus separaten Namespaces im Administratorcluster erfasst. Das Feld namespace_name enthält den Namen des Nutzerclusters.

    In jedem Diagramm ist ein SLO-Schwellenwert (Service Level Objective) von 0,999 festgelegt.

  5. Erstellen Sie optional Benachrichtigungsrichtlinien.

Dashboard für den Pod-Status erstellen

Gehen Sie so vor, um ein Dashboard mit der Phase jedes Pods sowie der Neustartzeit und der Ressourcennutzung jedes Containers zu erstellen:

  1. Laden Sie die Dashboard-Konfiguration herunter: pod-status.json.

  2. Erstellen Sie mithilfe des folgenden Befehls ein benutzerdefiniertes Dashboard mit der Konfigurationsdatei:

    gcloud monitoring dashboards create --config-from-file=pod-status.json
  3. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:

    Zu Monitoring

  4. Wählen Sie Ressourcen > Dashboards und das Dashboard mit dem Namen GKE On-Prem-Pod-Status aus.

  5. Erstellen Sie optional Benachrichtigungsrichtlinien.

Knotenstatus-Dashboard erstellen

Führen Sie die folgenden Schritte aus, um ein Knotenstatus-Dashboard zu erstellen, um die Knotenbedingung sowie die CPU-, Arbeitsspeicher- und Laufwerknutzung zu beobachten:

  1. Laden Sie die Dashboard-Konfiguration herunter: node-status.json.

  2. Erstellen Sie mithilfe des folgenden Befehls ein benutzerdefiniertes Dashboard mit der Konfigurationsdatei:

    gcloud monitoring dashboards create --config-from-file=node-status.json
  3. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:

    Zu Monitoring

  4. Wählen Sie Ressourcen > Dashboards und das Dashboard mit dem Namen GKE On-Prem-Knotenstatus aus.

  5. Erstellen Sie optional Benachrichtigungsrichtlinien.

Dashboard für die VM-Integritätsstatus erstellen

Mit dem VM-Statusdashboard der VM werden die Konflikte hinsichtlich CPU-, Arbeitsspeicher- und Laufwerkressourcen für VMs im Administratorcluster und in Nutzerclustern beobachtet.

So erstellen Sie ein Dashboard für die VM-Integritätsstatus:

  1. Achten Sie darauf, dass stackdriver.disableVsphereResourceMetrics auf "false" gesetzt ist. Siehe Konfigurationsdatei für Nutzercluster.

  2. Laden Sie die Dashboard-Konfiguration herunter: vm-health-status.json.

  3. Erstellen Sie mithilfe des folgenden Befehls ein benutzerdefiniertes Dashboard mit der Konfigurationsdatei:

    gcloud monitoring dashboards create --config-from-file=vm-health-status.json
  4. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:

    Zu Monitoring

  5. Wählen Sie Ressourcen > Dashboards aus und sehen Sie sich das Dashboard mit dem Namen VM-Integritätsstatus für GKE On-Prem an.

  6. Erstellen Sie optional Benachrichtigungsrichtlinien.

Stackdriver-Komponentenressourcen konfigurieren

Wenn Sie einen Cluster erstellen, erstellt Anthos-Cluster auf VMware automatisch eine benutzerdefinierte Stackdriver-Ressource. Sie können die Spezifikation in der benutzerdefinierten Ressource bearbeiten und die Standardwerte für CPU- und Arbeitsspeicheranforderungen sowie die Limits für eine Stackdriver-Komponente überschreiben. Die Standardspeichergröße und die Speicherklasse lassen sich separat überschreiben.

Standardwerte für Anfragen und Limits für CPU und Arbeitsspeicher überschreiben

So überschreiben Sie diese Standardeinstellungen:

  1. Öffnen Sie die benutzerdefinierte Stackdriver-Ressource in einem Befehlszeileneditor:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    Dabei ist KUBECONFIG der Pfad der kubeconfig-Datei für den Cluster. Dies kann entweder ein Administratorcluster oder ein Nutzercluster sein.

  2. Fügen Sie in der benutzerdefinierten Stackdriver-Ressource das Feld resourceAttrOverride im Abschnitt spec hinzu:

    resourceAttrOverride:
          POD_NAME_WITHOUT_RANDOM_SUFFIX/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    Beachten Sie, dass das Feld resourceAttrOverride alle vorhandenen Standardlimits und -anfragen für die angegebene Komponente überschreibt. Eine Beispieldatei sieht so aus:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        stackdriver-prometheus-k8s/prometheus-server:
          limits:
            cpu: 500m
            memory: 3000Mi
          requests:
            cpu: 300m
            memory: 2500Mi
  3. Speichern Sie die Änderungen und beenden Sie den Befehlszeileneditor.

  4. Prüfen Sie den Status der Pods:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Ein fehlerfreier Pod sieht beispielsweise so aus:

    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Sehen Sie in der Pod-Spezifikation der Komponente nach, ob die Ressourcen richtig festgelegt sind.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe pod POD_NAME

    Dabei ist POD_NAME der Name des Pods, den Sie gerade geändert haben. z. B. stackdriver-prometheus-k8s-0.

    Die Antwort sieht in etwa so aus:

      Name:         stackdriver-prometheus-k8s-0
      Namespace:    kube-system
      ...
      Containers:
        prometheus-server:
          Limits:
            cpu: 500m
            memory: 3000Mi
          Requests:
            cpu: 300m
            memory: 2500Mi
          ...
    

Standardeinstellungen für die Speichergröße überschreiben

So überschreiben Sie diese Standardeinstellungen:

  1. Öffnen Sie die benutzerdefinierte Stackdriver-Ressource in einem Befehlszeileneditor:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
  2. Fügen Sie das Feld storageSizeOverride im Abschnitt spec hinzu. Sie können die Komponente stackdriver-prometheus-k8s oder stackdriver-prometheus-app verwenden. Der Abschnitt hat dieses Format:

    storageSizeOverride:
    STATEFULSET_NAME: SIZE
    

    In diesem Beispiel werden das StatefulSet stackdriver-prometheus-k8s und die Größe 120Gi verwendet.

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      storageSizeOverride:
        stackdriver-prometheus-k8s: 120Gi
      
  3. Speichern Sie und beenden Sie den Befehlszeileneditor.

  4. Prüfen Sie den Status der Pods:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Ein fehlerfreier Pod sieht beispielsweise so aus:

    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Prüfen Sie die Pod-Spezifikation der Komponente, um zu gewährleisten, dass die Speichergröße korrekt überschrieben wird.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    Die Antwort sieht in etwa so aus:

    Volume Claims:
     Name:          my-statefulset-persistent-volume-claim
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Standardeinstellungen für Speicherklasse überschreiben

Voraussetzung

Sie müssen zuerst die StorageClass erstellen, die Sie verwenden möchten.

So überschreiben Sie die Standardspeicherklasse für nichtflüchtige Volumes, die von Logging- und Monitoring-Komponenten angefordert werden:

  1. Öffnen Sie die benutzerdefinierte Stackdriver-Ressource in einem Befehlszeileneditor:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    Dabei ist KUBECONFIG der Pfad der kubeconfig-Datei für den Cluster. Dies kann entweder ein Administratorcluster oder ein Nutzercluster sein.

  2. Fügen Sie das Feld storageClassName im Abschnitt spec hinzu:

    storageClassName: STORAGECLASS_NAME

    Das Feld storageClassName überschreibt die vorhandene Standardspeicherklasse und gilt für alle Logging- und Monitoring-Komponenten mit angeforderten nichtflüchtigen Volumes. Eine Beispieldatei sieht so aus:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
    name: stackdriver
    namespace: kube-system
    spec:
    projectID: my-project
    clusterName: my-cluster
    clusterLocation: us-west-1a
    proxyConfigSecretName: my-secret-name
    enableVPC: 
    optimizedMetrics: true
    storageClassName: my-storage-class
  3. Speichern Sie die Änderungen.

  4. Prüfen Sie den Status der Pods:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Ein fehlerfreier Pod sieht beispielsweise so aus:

    stackdriver-prometheus-k8s-0                                1/1     Running   0          5d19h
  5. Prüfen Sie in der Pod-Spezifikation einer Komponente, ob die Speicherklasse korrekt eingerichtet ist.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    Unter Verwendung des zustandsorientierten Sets stackdriver-prometheus-k8s sieht die Antwort beispielsweise so aus:

    Volume Claims:
     Name:          stackdriver-prometheus-data
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Auf Messwertdaten zugreifen

Mit Metrics Explorer können Sie aus über 1.500 Messwerten auswählen. So greifen Sie auf Metrics Explorer zu:

  1. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:

    Zu Monitoring

  2. Wählen Sie Ressourcen > Metrics Explorer.

Auf Monitoring-Metadaten zugreifen

Metadaten werden indirekt über Messwerte verwendet. Wenn Sie im Monitoring Metrics Explorer nach Messwerten filtern, werden Optionen zum Filtern von Messwerten nach metadata.systemLabels und metadata.userLabels angezeigt. Systemlabels sind Labels wie der Knotenname und der Servicename für Pods. Nutzerlabels sind Labels, die Pods in den Kubernetes-YAML-Dateien im Bereich "metadata" der Pod-Spezifikation zugewiesen sind.

Standardmäßige Kontingentlimits in Cloud Monitoring

Anthos-Cluster auf VMware-Monitoring haben für jedes Projekt ein Standardlimit von 6.000 API-Aufrufen pro Minute. Wenn Sie dieses Limit überschreiten, werden Ihre Messwerte möglicherweise nicht angezeigt. Wenn Sie ein höheres Monitoring-Limit benötigen, fordern Sie dieses über die Google Cloud Console an.

Bekanntes Problem: Cloud Monitoring-Fehlerbedingung

(Problem-ID 159761921)

Unter bestimmten Umständen kann der standardmäßige Cloud Monitoring-Pod, der standardmäßig in jedem neuen Cluster bereitgestellt wird, nicht mehr reagieren. Wenn Cluster aktualisiert werden, können beispielsweise Speicherdaten beschädigt werden, wenn Pods in statefulset/prometheus-stackdriver-k8s neu gestartet werden.

Insbesondere der Monitoring-Pod stackdriver-prometheus-k8s-0 kann in eine Schleife geraten, wenn beschädigte Daten das Schreiben von prometheus-stackdriver-sidecar in den Cluster-Speicher PersistentVolume verhindern.

Sie können den Fehler manuell diagnostizieren und wiederherstellen, indem Sie die folgenden Schritte ausführen.

Cloud Monitoring-Fehler diagnostizieren

Wenn der Monitoring-Pod fehlgeschlagen ist, geben die Logs Folgendes aus:

{"log":"level=warn ts=2020-04-08T22:15:44.557Z caller=queue_manager.go:534 component=queue_manager msg=\"Unrecoverable error sending samples to remote storage\" err=\"rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: timeSeries[0-114]; Unknown metric: kubernetes.io/anthos/scheduler_pending_pods: timeSeries[196-198]\"\n","stream":"stderr","time":"2020-04-08T22:15:44.558246866Z"}

{"log":"level=info ts=2020-04-08T22:15:44.656Z caller=queue_manager.go:229 component=queue_manager msg=\"Remote storage stopped.\"\n","stream":"stderr","time":"2020-04-08T22:15:44.656798666Z"}

{"log":"level=error ts=2020-04-08T22:15:44.663Z caller=main.go:603 err=\"corruption after 29032448 bytes: unexpected non-zero byte in padded page\"\n","stream":"stderr","time":"2020-04-08T22:15:44.663707748Z"}

{"log":"level=info ts=2020-04-08T22:15:44.663Z caller=main.go:605 msg=\"See you next time!\"\n","stream":"stderr","time":"2020-04-08T22:15:44.664000941Z"}

Wiederherstellung nach dem Cloud Monitoring-Fehler

So stellen Sie Cloud Monitoring manuell wieder her:

  1. Beenden Sie das Clustermonitoring. Den Operator stackdriver herunterskalieren, um den Monitoring-Abgleich zu verhindern:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas 0

  2. Löschen Sie die Arbeitslasten der Monitoringpipeline:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s

  3. Löschen Sie die PersistentVolumeClaims (PVCs) der Monitoring-Pipeline:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s

  4. Starten Sie das Clustermonitoring neu. Skalieren Sie den Stackdriver-Operator hoch, um eine neue Monitoring-Pipeline zu installieren und den Abgleich fortzusetzen:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas=1

Prometheus und Grafana

In den folgenden Abschnitten wird erläutert, wie Prometheus und Grafana mit Anthos-Cluster auf VMware-Clustern verwendet werden.

Prometheus und Grafana aktivieren

Ab der Anthos-Cluster auf VMware-Version 1.2 können Sie auswählen, ob Prometheus und Grafana aktiviert werden sollen. In neuen Nutzerclustern sind Prometheus und Grafana standardmäßig deaktiviert.

  1. Ihr Nutzercluster hat ein Monitoring-Objekt namens monitoring-sample. Öffnen Sie das Objekt zum Bearbeiten:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \
       monitoring monitoring-sample --namespace kube-system

    Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei für Ihren Nutzercluster.

  2. Setzen Sie enablePrometheus auf true, um Prometheus und Grafana zu aktivieren. Setzen Sie enablePrometheus auf false, um Prometheus und Grafana zu deaktivieren.

    apiVersion: addons.k8s.io/v1alpha1
    kind: Monitoring
    metadata:
     labels:
       k8s-app: monitoring-operator
     name: monitoring-sample
     namespace: kube-system
    spec:
     channel: stable
     ...
     enablePrometheus: true
  3. Schließen Sie die Bearbeitungssitzung, um Ihre Änderungen zu speichern.

Bekanntes Problem

In Nutzerclustern werden Prometheus und Grafana während des Upgrades automatisch deaktiviert. Die Konfigurations- und Messwertdaten gehen jedoch nicht verloren.

Zur Umgehung dieses Problems öffnen Sie nach dem Upgrade monitoring-sample zum Bearbeiten. Setzen Sie enablePrometheus auf true.

Über Grafana-Dashboards auf Monitoring-Messwerte zugreifen

Grafana zeigt Messwerte aus Ihren Clustern an. Zur Anzeige dieser Messwerte müssen Sie auf die Dashboards von Grafana zugreifen:

  1. Rufen Sie den Namen des im kube-system-Namespace eines Nutzerclusters ausgeführten Grafana-Pods ab:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods

    Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei des Nutzerclusters.

  2. Der Grafana-Pod hat einen HTTP-Server, der den TCP-localhost-Port 3000 überwacht. Leiten Sie einen lokalen Port zu Port 3000 im Pod weiter, damit Sie sich die Dashboards von Grafana in einem Webbrowser ansehen können.

    Nehmen wir an, der Name des Pods lautet grafana-0. Um Port 50000 zu Port 3000 im Pod weiterzuleiten, geben Sie folgenden Befehl ein:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
  3. Gehen Sie in einem Webbrowser zu http://localhost:50000.

  4. Geben Sie auf der Anmeldeseite admin für den Nutzernamen und das Passwort ein.

  5. Wenn die Anmeldung erfolgreich ist, werden Sie aufgefordert, das Passwort zu ändern. Nachdem Sie das Standardpasswort geändert haben, sollte das Grafana Home Dashboard des Nutzerclusters geladen werden.

  6. Sie können auf andere Dashboards zugreifen, wenn Sie links oben auf der Seite auf das Drop-down-Menü Startseite klicken.

Ein Beispiel für die Verwendung von Grafana finden Sie unter Grafana-Dashboard erstellen.

Auf Benachrichtigungen zugreifen

Der Prometheus Alertmanager erfasst Benachrichtigungen vom Prometheus-Server. Sie können sich diese Benachrichtigungen in einem Grafana-Dashboard ansehen. Dazu müssen Sie auf das Dashboard zugreifen:

  1. Der Container im Pod alertmanager-0 überwacht den TCP-Port 9093. Leiten Sie einen lokalen Port zu Port 9093 im Pod weiter:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \
       -n kube-system alertmanager-0 50001:9093
  2. Gehen Sie in einem Webbrowser zu http://localhost:50001.

Prometheus Alertmanager-Konfiguration ändern

Sie können die Standardkonfiguration von Prometheus Alertmanager ändern, wenn Sie die Datei monitoring.yaml Ihres Nutzerclusters bearbeiten. Sie sollten dies tun, wenn Sie Benachrichtigungen an ein bestimmtes Ziel weiterleiten möchten, anstatt sie im Dashboard zu belassen. In der Prometheus-Dokumentation zur Konfiguration erfahren Sie, wie Sie Alertmanager konfigurieren.

So ändern Sie die Alertmanager-Konfiguration:

  1. Kopieren Sie die Manifestdatei monitoring.yaml des Nutzerclusters:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \
       get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Nehmen Sie Änderungen an den Feldern unter spec.alertmanager.yml vor, um den Alertmanager zu konfigurieren. Wenn Sie fertig sind, speichern Sie das geänderte Manifest.

  3. Wenden Sie das Manifest auf Ihren Cluster an:

    kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml

Prometheus-Ressourcen skalieren

Die Standardkonfiguration für das Monitoring unterstützt bis zu fünf Knoten. Bei größeren Clustern können Sie die Prometheus-Server-Ressourcen anpassen. Der empfohlene Wert pro Clusterknoten für CPU ist "50m" und der für Arbeitsspeicher "500Mi". Achten Sie darauf, dass Ihr Cluster zwei Knoten enthält, die jeweils genügend Ressourcen für Prometheus haben. Weitere Informationen finden Sie unter Größe eines Nutzerclusters anpassen.

Führen Sie die folgenden Schritte aus, um Prometheus-Server-Ressourcen zu ändern:

  1. Kopieren Sie die Manifestdatei monitoring.yaml des Nutzerclusters:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Wenn Sie Ressourcen überschreiben möchten, ändern Sie die Felder unter spec.resourceOverride. Wenn Sie fertig sind, speichern Sie das geänderte Manifest. Beispiel:

    spec:
      resourceOverride:
      - component: Prometheus
        resources:
          requests:
            cpu: 300m
            memory: 3000Mi
          limits:
            cpu: 300m
            memory: 3000Mi
    
  3. Wenden Sie das Manifest auf Ihren Cluster an:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml

Grafana-Dashboard erstellen

Sie haben eine Anwendung bereitgestellt, die einen Messwert bereitstellt, prüft, ob der Messwert verfügbar ist, und prüft, ob Prometheus den Messwert entfernt. Jetzt können Sie den Messwert auf Anwendungsebene einem benutzerdefinierten Grafana-Dashboard hinzufügen.

So erstellen Sie ein Grafana-Dashboard:

  1. Greifen Sie bei Bedarf auf Grafana zu.
  2. Klicken Sie im Dashboard auf der Startseite links oben auf das Drop-down-Menü auf Startseite.
  3. Klicken Sie im Menü auf der rechten Seite auf Neues Dashboard.
  4. Klicken Sie im Bereich New panel auf Graph. Ein leeres Grafik-Dashboard wird angezeigt.
  5. Klicken Sie auf Steuerfeldtitel und anschließend auf Bearbeiten. Im unteren Bereich Grafik wird der Tab Messwerte geöffnet.
  6. Wählen Sie im Drop-down-Menü der Datenquelle die Option Nutzer aus. Klicken Sie auf Abfrage hinzufügen und geben Sie foo in das Feld Suche ein.
  7. Klicken Sie rechts oben auf die Schaltfläche Zurück zum Dashboard. Ihr Dashboard wird angezeigt.
  8. Zum Speichern des Dashboards klicken Sie rechts oben auf Dashboard speichern. Wählen Sie einen Namen für das Dashboard aus und klicken Sie auf Speichern.

Monitoring im Cluster deaktivieren

Wenn Sie das Monitoring innerhalb des Clusters deaktivieren möchten, machen Sie die am Objekt monitoring-sample vorgenommenen Änderungen rückgängig:

  1. Öffnen Sie das Objekt monitoring-sample zum Bearbeiten:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \
       monitoring monitoring-sample --namespace kube-system

    Ersetzen Sie USER_CLUSTER_KUBECONFIG durch die kubeconfig-Datei des Nutzerclusters.

  2. Wenn Sie Prometheus und Grafana deaktivieren möchten, setzen Sie enablePrometheus auf false:

       apiVersion: addons.k8s.io/v1alpha1
       kind: Monitoring
       metadata:
         labels:
           k8s-app: monitoring-operator
         name: monitoring-sample
         namespace: kube-system
       spec:
         channel: stable
         ...
         enablePrometheus: false
    
  3. Schließen Sie die Bearbeitungssitzung, um Ihre Änderungen zu speichern.

  4. Prüfen Sie, ob die zustandsorientierte prometheus-0, prometheus-1 und grafana-0 gelöscht wurden:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods --namespace kube-system

Beispiel: Messwerte auf Anwendungsebene zu einem Grafana-Dashboard hinzufügen

In den folgenden Abschnitten erfahren Sie, wie Sie Messwerte für eine Anwendung hinzufügen. In diesem Abschnitt führen Sie die folgenden Aufgaben aus:

  • Eine Beispielanwendung bereitstellen, die einen Messwert namens foo enthält
  • Prüfen, ob Prometheus den Messwert verfügbar macht und extrahiert
  • Benutzerdefiniertes Grafana-Dashboard erstellen

Beispielanwendung bereitstellen

Die Beispielanwendung wird in einem einzelnen Pod ausgeführt. Der Container des Pods weist den Messwert foo mit einem konstanten Wert von 40 auf.

Erstellen Sie das folgende Pod-Manifest pro-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: prometheus-example
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '8080'
    prometheus.io/path: '/metrics'
spec:
  containers:
  - image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
    name: prometheus-example
    command:
    - /bin/sh
    - -c
    - ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080

Wenden Sie dann das Pod-Manifest auf Ihren Nutzercluster an:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml

Prüfen, ob der Messwert verfügbar ist und extrahiert wurde

  1. Der Container im Pod prometheus-example überwacht den TCP-Port 8080. Leiten Sie einen lokalen Port zu Port 8080 im Pod weiter:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
  2. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Anwendung den Messwert verfügbar macht:

    curl localhost:50002/metrics | grep foo
    

    Der Befehl gibt die folgende Ausgabe zurück:

    # HELP foo Custom metric
    # TYPE foo gauge
    foo 40
  3. Der Container im Pod prometheus-0 überwacht den TCP-Port 9090. Leiten Sie einen lokalen Port zu Port 9090 im Pod weiter:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. Wenn Sie prüfen möchten, ob Prometheus den Messwert erfasst, rufen Sie http://localhost:50003/targets auf. Dadurch sollten Sie zum Pod prometheus-0 unter der Zielgruppe prometheus-io-pods gelangen.

  5. Rufen Sie zum Ansehen von Messwerten in Prometheus http://localhost:50003/graph auf. Geben Sie im Feld Suche foo ein und klicken Sie auf Ausführen. Auf der Seite sollte der Messwert angezeigt werden.