Anthos Service Mesh-Logs erfassen

In den folgenden Abschnitten wird erläutert, wie Sie die verschiedenen Arten von Anthos Service Mesh-Logs erfassen, um Probleme zu beheben oder sich an den Google-Support zu wenden.

Logs mit dem Tool für Fehlerberichte erfassen

Anthos Service Mesh bietet ein automatisiertes Tool für Fehlerberichte, das die relevanten Diagnoselogs erfasst und es ermöglicht, die Logs an ein Support-Ticket für den Google-Support anzuhängen.

Bevor Sie beginnen, prüfen Sie, ob Ihr kubeconfig-Kontext auf den Zielcluster gesetzt ist.

  1. Prüfen Sie den Kontext mit dem folgenden Befehl:

    kubectl config current-context
  2. Das Verfahren zum Herunterladen und Verwenden des Tools für Fehlerberichte hängt von der Version des von Ihnen verwendeten Anthos Service Mesh ab. Anhand der folgenden Tabelle können Sie herausfinden, ob Ihre aktuelle Version von istioctl ausreicht oder ob Sie eine eigenständige Version des Tools herunterladen müssen.

Anthos Service Mesh-/Istio-Version Tool für Fehlerberichte
Anthos Service Mesh 1.7* und höher istioctl bug-report
Anthos Service Mesh 1.6* Standalone-Modell
Anthos Service Mesh 1.5* Standalone-Modell
Istio 1.7* Standalone-Modell
Istio 1.6* Standalone-Modell
Istio 1.5* Standalone-Modell

So laden Sie die eigenständige Version des Tools für Fehlerberichte herunter:

  1. Wählen Sie die Distribution aus der Liste aus, die Ihrer Betriebssystemumgebung entspricht:

    • https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_386-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_amd64-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_arm-v2
  2. Verwenden Sie curl, um die ausgewählte Distribution herunterzuladen. Beispiel:

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. Legen Sie Berechtigungen für das Tool für Fehlerberichte fest, bei dem es sich um ein Binärprogramm handelt, damit es ausgeführt werden kann. Beispiel:

    chmod +x bug-report_darwin_amd64-v1

Mit dem Erfassen von Logs beginnen

Führen Sie das Tool für Fehlerberichte aus und übergeben Sie die Konfigurationsdatei als Parameter, um mit dem Erfassen von Logs zu starten. Es stehen zusätzliche Laufzeitoptionen zur Verfügung, um die Konfiguration bei Bedarf zu überschreiben. Sie können diese mit der Option --help aufrufen.

Wenn bei Ihrer Version von Anthos Service Mesh das Tool für Fehlerberichte bereits in istioctl enthalten ist, verwenden Sie den folgenden Befehl:

istioctl bug-report

Wenn Sie die eigenständige Version des Tools für Fehlerberichte benötigen, benennen Sie das Tool um und führen es wie die folgenden Befehle aus, die die Darwin-Distribution als Beispiel verwenden:

mv ./bug-report_darwin_amd64-v1 ./bug-report
./bug-report

Debug-Archiv hochladen

Platzieren Sie Ihr Debug-Logarchiv im Arbeitsverzeichnis des Tools für Fehlerberichte. Sie können das Archiv entpacken und die Anleitungen zur Fehlerbehebung verwenden, um selbst zu versuchen, das Problem zu beheben. Wenn Sie jedoch ein Supportpaket haben, können Sie sich an den Google Cloud-Support wenden und erfahren, mit welchen weiteren Schritten Sie das Logarchiv sicher hochladen.

Anthos Service Mesh-Logs manuell erfassen

In diesem Abschnitt wird erklärt, wie Sie alle relevanten Logs manuell erfassen, anstatt das Tool für Fehlerberichte von Anthos Service Mesh zu verwenden.

Envoy-Zugriffslogs

Envoy-Proxy-Zugriffslogs enthalten detaillierte Informationen, die für die Fehlerbehebung hilfreich sind. Sie müssen diese jedoch aktivieren und die richtige Detailebene festlegen.

Informationen zum Interpretieren der Loginhalte finden Sie unter Envoy-Logs interpretieren.

Envoy-Logs aktivieren bzw. deaktivieren

Zum Aktivieren der Envoy-Proxy-Zugriffslogs verwenden Sie istioctl install, wie im folgenden Beispiel:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="/dev/stdout" \
    --set meshConfig.accessLogEncoding="JSON"

Der Befehl istioctl install bietet die folgenden Optionen zum Konfigurieren der Logs:

Wert Beschreibung
accessLogFile Definiert die Dateiadresse für das Proxyzugriffslog (z. B. /dev/stdout). Ein leerer Wert deaktiviert das Zugriffs-Logging.
accessLogFormat Definiert das Format für das Proxyzugriffslog. Ein leerer Wert legt das standardmäßige Format für Proxyzugriffslogs fest.
accessLogEncoding Die Codierung für das Proxyzugriffslog ("TEXT" oder "JSON"). Der Standardwert ist "TEXT".

Setzen Sie accessLogFile auf einen leeren String, um die Logs zu deaktivieren:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="" \
    --set meshConfig.accessLogEncoding="TEXT"

Detailebene für Logging erhöhen

Verwenden Sie den folgenden Befehl, um die Detailebene der Logs vorübergehend zu erhöhen: Diese Einstellung wird rückgängig gemacht, wenn der Pod neu erstellt wird.

kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=info

Envoy-Logs in einen Ordner schreiben

Verwenden Sie den folgenden Befehl, um die Envoy-Proxy-Zugriffs-Logs zu erfassen und in einem Ordner zu speichern:

kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH

Weitere Informationen finden Sie unter Getting Envoy's Access Logs.

Kubernetes-Logs

Kubernetes generiert mehrere Logs, die Informationen zum Verhalten von Istio-Komponenten wie Istiod, dem Ingress-Gateway und zu Proxys enthalten. Sie können diese Logs auf Fehler prüfen, wodurch sich eventuell die Anzahl der möglichen Ursachen eines Problems einschränken lässt.

Erfassen Sie Istiod-Logs mit folgendem Befehl:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log

Erfassen Sie Istio-Ingress-Gateway-Logs mit dem folgenden Befehl:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH

Erfassen Sie Istio-Proxy-Logs mit dem folgenden Befehl:

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

Dump der Kubernetes-Konfiguration

Mit dieser Information können Nutzer ohne direkten Zugriff auf den Cluster den Status verschiedener Ressourcen aufrufen und mögliche Konfigurationsprobleme identifizieren. Mit dem folgenden Befehl wird die Kubernetes-Konfiguration in eine YAML-Datei geschrieben:

for namespace in "istio-system" "ns1" "ns2"; do kubectl get -oyaml deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io > ./LOGS_FOLDER/kubernetes.log; done

Envoy-Core Dump

Envoy-Core Dumps sind für Endnutzer normalerweise nicht hilfreich. Der Google-Support kann Sie jedoch dazu auffordern, diese im Rahmen der Fehlerbehebung zu erfassen. Gehen Sie dazu so vor:

  1. Aktivieren Sie Core Dumps für alle Proxys in Ihrem Mesh-Netzwerk, indem Sie Ihrer IstioOperator-Konfiguration Folgendes hinzufügen:

    spec:
    values:
    global:
      proxy:
        enableCoreDumps: true
  2. Verwenden Sie zum Neuinstallieren folgenden Befehl:

    istioctl install -f myOperatorFile.yaml
  3. Löschen Sie Ihren Ziel-Pod, damit er mit aktivierter Proxy-Core Dumps-Funktion neu erstellt wird.

  4. Führen Sie den Prozess aus und lösen Sie den Core Dump aus, sobald das Problem auftritt. Führen Sie dazu den folgenden Befehl im Container istio-proxy aus:

    kubectl exec -it POD_NAME -c istio-proxy
  5. Rufen Sie die Produkt-ID (PID) für den Envoy-Container ab:

    ps aux | grep -i envoy
  6. Beenden Sie mit der PID den Envoy-Prozess, wodurch ein Core Dump generiert wird:

    kill -3 PID
  7. Warten Sie, bis der Container neu gestartet wurde, oder verwenden Sie den Befehl kill.

  8. Führen Sie den folgenden Befehl aus, um den Core Dump in das aktuelle Verzeichnis zu extrahieren:

    kubectl cp PID:/var/lib/istio/data/core.proxy -c istio-proxy ./core.proxy

Envoy-Proxy-Konfiguration

Die ausführliche Envoy-Proxy-Konfiguration enthält zusätzliche Details, die für die Fehlerbehebung hilfreich sein können. Sie können diese Informationen mit dem folgenden Befehl erfassen. In diesem Beispiel entspricht ENDPOINT einem der folgenden Werte, die in der Reihenfolge ihrer Wichtigkeit aufgeführt sind: * /certs * /clusters * /listeners * /config_dump * /memory * /server_info * /stats/prometheus * /runtime

kubectl exec -i POD_NAME -c istio-proxy curl 127.0.0.1:15000/ENDPOINT > out.log