Sie betrachten die Dokumentation für eine frühere Version von GKE On-Prem. Sehen Sie sich die aktuelle Dokumentation an.

Logging und Monitoring verwenden

Auf dieser Seite wird erläutert, wie Sie Stackdriver, Prometheus und Grafana für Logging und Monitoring verwenden. Eine Zusammenfassung der verfügbaren Konfigurationsoptionen finden Sie in der Übersicht zu Logging und Monitoring.

Stackdriver verwenden

In den folgenden Abschnitten wird gezeigt, wie Sie Stackdriver mit GKE On-Prem-Clustern verwenden.

Überwachte Ressourcen

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

Zum Abfragen von Protokollen und Messwerten benötigen Sie mindestens folgende Ressourcenlabels:

  • project_id: Projekt-ID für das Projekt, das dem GKE On-Prem-Cluster zugeordnet ist.
  • location: Eine GCP-Region, in der Sie Stackdriver-Logs speichern möchten. Es empfiehlt sich, eine Region in der Nähe Ihres lokalen Rechenzentrums auszuwählen. Sie haben diesen Wert während der Installation angegeben.
  • cluster_name: Clustername, den Sie beim Erstellen des Clusters ausgewählt haben.

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

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

Auf Log-Daten zugreifen

Sie können auf Logs über Log-Anzeige in der Cloud Console zugreifen. So greifen Sie beispielsweise auf die Logs eines Containers zu:

  1. Öffnen Sie in der Cloud Console die Loganzeige für Ihr Projekt.
  2. So finden 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, das Namespace und dann einen Container aus der Hierarchie aus.

Auf Messwertdaten zugreifen

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

  1. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf den folgenden Link:

    Zu Monitoring

  2. Wählen Sie Ressourcen > Metrics Explorer.

Auf Stackdriver-Metadaten zugreifen

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

Prometheus und Grafana

In den folgenden Abschnitten wird gezeigt, wie Prometheus und Grafana mit GKE On-Prem-Clustern verwendet werden.

Über Grafana-Dashboards auf Monitoring-Messwerte zugreifen

Grafana zeigt Messwerte aus Ihren Clustern an. Um diese Messwerte anzuzeigen, 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 Container im Grafana Pod überwacht den TCP-Port 3000. Leiten Sie einen lokalen Port an Port 3000 im Pod weiter, damit Sie die Dashboards von Grafana in einem Webbrowser anzeigen können.

    Angenommen, der Name des Pods lautet grafana-0. Um Port 50000 im Pod an Port 3000 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. Das Grafana Home Dashboard des Nutzerclusters sollte geladen werden.

  4. Um auf andere Dashboards zuzugreifen, klicken Sie oben links auf der Seite auf das Drop-down-Menü Startseite.

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 diese Benachrichtigungen in einem Grafana-Dashboard anzeigen. Zum Anzeigen der Benachrichtigungen müssen Sie auf das Dashboard zugreifen:

  1. Der Container im Pod alertmanger-0 überwacht den TCP-Port 9093. Leiten Sie einen lokalen Port an 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, indem 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 Configuration erfahren Sie, wie Sie den 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 die Überwachung unterstützt bis zu fünf Knoten. Bei größeren Clustern können Sie die Prometheus-Server-Ressourcen anpassen. Die empfohlene Größe beträgt 50 MB CPU-Kerne und 500 Mi Speicher pro Clusterknoten. Achten Sie darauf, dass Ihr Cluster zwei Knoten enthält, die jeweils über ausreichende Ressourcen für Prometheus verfügen. Weitere Informationen finden Sie unter Größenanpassung eines User-Clusters.

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. Um Ressourcen zu überschreiben, ä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

Ein Grafana-Dashboard erstellen

Sie haben eine Anwendung bereitgestellt, die einen Messwert bereitstellt, überprüft, ob der Messwert verfügbar ist, und überprü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 der Seite auf das Drop-down-Menü Startseite.
  3. Klicken Sie im Menü auf der rechten Seite auf Neues Dashboard.
  4. Klicken Sie im Abschnitt Neues Steuerfeld auf Grafik. Ein leeres Grafik-Dashboard wird angezeigt.
  5. Klicken Sie auf Paneltitel 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 oben rechts auf die Schaltfläche Zurück zum Dashboard. Ihr Dashboard wird angezeigt.
  8. Um das Dashboard zu speichern, klicken Sie auf Dashboard speichern in der rechten oberen Ecke des Bildschirms. Wählen Sie einen Namen für das Dashboard aus und klicken Sie auf Speichern.

Monitoring im Cluster deaktivieren

Geben Sie den folgenden Befehl ein, um das Monitoring im Cluster zu deaktivieren:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system delete monitoring monitoring-sample

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 kopiert.
  • Erstellen eines benutzerdefinierten Grafana-Dashboards.

Beispielanwendung bereitstellen

Die Beispielanwendung wird in einem einzelnen Pod ausgeführt. Der Container des Pods weist einen 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: k8s.gcr.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 angezeigt und extrahiert wurde

  1. Der Container im Pod prometheus-example überwacht den TCP-Port 8080. Leiten Sie einen lokalen Port an 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 an Port 9090 im Pod weiter:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. Um zu prüfen, ob Prometheus den Messwert erfasst, rufen Sie http://localhost:50003/targets auf. Daraufhin sollten Sie den Pod prometheus-0 unter der Zielgruppe prometheus-io-pods aufrufen.

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