Fehlerbehebung bei Monitoring-Dashboards


Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit Monitoring-Dashboards für Google Kubernetes Engine (GKE) beheben.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

Standardmäßig ist Monitoring beim Erstellen eines Clusters aktiviert. Wenn Sie in Monitoring die bereitgestellten Google Cloud-Dashboards aufrufen und keine GKE-Dashboards sehen, ist Monitoring für Cluster im ausgewählten Google Cloud-Projekt nicht aktiviert. Aktivieren Sie das Monitoring, um diese Dashboards aufzurufen.

In meinem Dashboard befinden sich keine Kubernetes-Ressourcen

Wenn Sie im GKE-Dashboard keine Kubernetes-Ressourcen sehen, überprüfen Sie Folgendes:

Ausgewähltes Google Cloud-Projekt

Prüfen Sie, ob Sie in der Drop-down-Liste der Menüleiste der Google Cloud Console das richtige Google Cloud-Projekt ausgewählt haben, um ein Projekt auszuwählen. Sie müssen das Projekt auswählen, dessen Daten Sie sehen möchten.

Clusteraktivität

Wenn Sie Ihren Cluster gerade erst erstellt haben, warten Sie ein paar Minuten, bis er mit Daten gefüllt ist. Weitere Informationen finden Sie unter Logging und Monitoring für GKE konfigurieren.

Zeitraum

Der ausgewählte Zeitraum ist möglicherweise zu kurz. Sie können das Menü Zeit in der Dashboard-Symbolleiste verwenden, um andere Zeiträume auszuwählen oder einen Bereich Benutzerdefiniert zu definieren.

Berechtigungen zum Aufrufen des Dashboards

Wenn beim Aufrufen der Bereitstellungsdetails eines Dienstes oder der Messwerte eines Google Cloud-Projekts eine der folgenden Fehlermeldungen wegen einer fehlenden Berechtigung angezeigt wird, müssen Sie die IAM-Rolle in roles/monitoring.viewer oder roles/viewer ändern:

  • You do not have sufficient permissions to view this page
  • You don't have permissions to perform the action on the selected resources

Weitere Informationen finden Sie unter Vordefinierte Rollen.

Berechtigungen für Cluster- und Knotendienstkonten zum Schreiben von Daten in Monitoring und Logging

Wenn in der Google Cloud Console auf der Seite Aktivierte APIs und Dienste hohe Fehlerraten angezeigt werden, fehlen Ihrem Dienstkonto möglicherweise die folgenden Rollen:

  • roles/logging.logWriter: In der Google Cloud Console heißt diese Rolle Log-Autor. Weitere Informationen zu den Logging-Rollen finden Sie in der Anleitung für die Zugriffssteuerung in Logging.

  • roles/monitoring.metricWriter: In der Google Cloud Console heißt diese Rolle Monitoring-Messwert-Autor. Weitere Informationen zu den Monitoring-Rollen finden Sie im Leitfaden für die Zugriffssteuerung in Monitoring.

  • roles/stackdriver.resourceMetadata.writer: In der Google Cloud Console heißt diese Rolle Stackdriver Resource Metadata Writer. Diese Rolle ermöglicht schreibgeschützten Zugriff auf Ressourcenmetadaten und bietet genau die Berechtigungen, die von den Agents zum Senden von Metadaten benötigt werden. Weitere Informationen zu den Monitoring-Rollen finden Sie im Leitfaden für die Zugriffssteuerung in Monitoring.

Rufen Sie zum Auflisten Ihrer Dienstkonten in der Google Cloud Console IAM und Verwaltung auf und wählen Sie dann Dienstkonten aus.

Logs können nicht angezeigt werden

Wenn Ihre Logs nicht in Dashboards angezeigt werden, prüfen Sie Folgendes:

Agent wird ausgeführt und ist fehlerfrei

Ab GKE-Version 1.17 werden Logs mit Fluent Bit erfasst. Fluent Bit ist der Logging-Agent, der auf Kubernetes-Knoten ausgeführt wird. Zum Prüfen, ob der Agent ordnungsgemäß ausgeführt wird, führen Sie folgende Schritte aus:

  1. Prüfen Sie mit dem folgenden Befehl, ob der Agent neu gestartet wurde:

    kubectl get pods -l k8s-app=fluentbit-gke -n kube-system
    

    Wenn keine Neustarts vorhanden sind, sieht die Ausgabe in etwa so aus:

    NAME                  READY   STATUS    RESTARTS   AGE
    fluentbit-gke-6zr6g   2/2     Running   0          44d
    fluentbit-gke-dzh9l   2/2     Running   0          44d
    
  2. Prüfen Sie mit folgendem Befehl die Statusbedingungen des Pods:

    JSONPATH='{range .items[*]};{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status},{end}{end};'  \
     && kubectl get pods -l k8s-app=fluentbit-gke -n kube-system -o jsonpath="$JSONPATH" | tr ";" "\n"
    

    Wenn das Deployment fehlerfrei ist, sieht die Ausgabe in etwa so aus:

    fluentbit-gke-nj4qs:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True,
    fluentbit-gke-xtcvt:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True,
    
  3. Prüfen Sie den Pod-Status, um festzustellen, ob das Deployment fehlerfrei ist. Führen Sie dazu folgenden Befehl aus:

    kubectl get daemonset -l k8s-app=fluentbit-gke -n kube-system
    

    Wenn das Deployment fehlerfrei ist, sieht die Ausgabe in etwa so aus:

    NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    fluentbit-gke   2         2         2       2            2           kubernetes.io/os=linux   5d19h
    

    In dieser Beispielausgabe ist der aktuelle Status der gewünschte Status.

Wenn der Agent in diesen Szenarien fehlerfrei ausgeführt wird und trotzdem nicht alle Ihre Logs angezeigt werden, ist der Agent möglicherweise überlastet und löscht Logs.

Agent ist überlastet und löscht Logs

Wenn nicht alle Ihre Logs angezeigt werden, ist der Agent möglicherweise durch das Logvolumen des Knotens überlastet. Die Standardkonfiguration des Logging-Agents in GKE ist auf die Rate von 100 KiB/s für jeden Knoten abgestimmt. Der Agent beginnt unter Umständen, Logs zu verwerfen, wenn das Volumen dieses Limit überschreitet.

Suchen Sie nach einem der folgenden Indikatoren, um festzustellen, ob Sie dieses Limit erreichen:

  • Prüfen Sie den Messwert kubernetes.io/container/cpu/core_usage_time mit dem Filter container_name=fluentbit-gke, um festzustellen, ob die CPU-Auslastung des Logging-Agents nahe oder bei 100 % liegt.

  • Rufen Sie den Messwert logging.googleapis.com/byte_count gruppiert nach metadata.system_labels.node_name auf, um zu prüfen, ob ein Knoten 100 KiB/s erreicht.

Wenn Sie eine dieser Bedingungen sehen, können Sie das Logvolumen der Knoten reduzieren, indem Sie dem Cluster weitere Knoten hinzufügen. Wenn das gesamte Logvolumen von einem einzelnen Pod stammt, müssen Sie das Volumen von diesem Pod reduzieren.

Weitere Informationen zum Untersuchen und Beheben von Problemen mit GKE-Logging finden Sie unter Fehlerbehebung beim Logging in GKE.

Vorfall ist keiner GKE-Ressource zugeordnet?

Wenn Sie für eine Benachrichtigungsrichtlinie eine Bedingung haben, mit der Messwerte für verschiedene GKE-Ressourcen zusammengefasst werden, müssen Sie die Bedingung der Richtlinie möglicherweise ändern, damit weitere GKE-Hierarchielabels hinzugefügt werden können, um Vorfälle bestimmten Entitäten zuzuordnen.

Sie haben beispielsweise zwei GKE-Cluster, einen für die Produktion und einen für das Staging, und jeder hat eine eigene Kopie des Dienstes lilbuddy-2. Wenn die Bedingung der Benachrichtigungsrichtlinie einen Messwert für mehrere Container in beiden Clustern zusammen erfasst, kann dieser Vorfall im GKE Monitoring-Dashboard nicht eindeutig dem Produktionsdienst oder dem Staging-Dienst zugeordnet werden.

Um dieses Problem zu lösen, muss die Benachrichtigungsrichtlinie auf einen bestimmten Dienst ausgerichtet sein. Fügen Sie im Feld Gruppieren nach der Richtlinie namespace, cluster und location hinzu. Klicken Sie in der Ereigniskarte für die Benachrichtigung auf den Link Benachrichtigungsrichtlinie aktualisieren, um die Seite Benachrichtigungsrichtlinie bearbeiten für die entsprechende Benachrichtigungsrichtlinie zu öffnen. Von hier aus können Sie die Benachrichtigungsrichtlinie mit den zusätzlichen Informationen aktualisieren, sodass das Dashboard die zugehörige Ressource finden kann.

Sobald Sie die Benachrichtigungsrichtlinie aktualisiert haben, kann das GKE Monitoring-Dashboard alle zukünftigen Vorfälle einem eindeutigen Dienst in einem bestimmten Cluster zuordnen. Dadurch erhalten Sie zusätzliche Informationen zur Problemdiagnose.

Je nach Anwendungsfall sollten Sie einige dieser Labels nicht nur dem Feld Gruppieren nach hinzufügen, sondern auch danach filtern. Wenn Sie beispielsweise nur Benachrichtigungen für Ihren Produktionscluster erhalten möchten, können Sie nach cluster_name filtern.

Nächste Schritte

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.