Cloud Service Mesh-Logs erfassen

In den folgenden Abschnitten wird erläutert, wie Sie die verschiedenen Cloud Service Mesh-Logs für Fehlerbehebung oder wenden Sie sich an den Google-Support.

Logs mit dem Tool für Fehlerberichte erfassen

Cloud Service Mesh bietet ein automatisiertes Tool für Fehlerberichte, das die relevanten Diagnoseprotokolle erstellen und an ein Google-Support-Ticket anhängen.

Prüfen Sie zuerst, ob der kubeconfig-Kontext für Ihren Cluster in verfügbar ist Ihre kubectl-Datei.

Mit dem Erfassen von Logs beginnen

Verwaltete Steuerungsebene

  1. Tool zur Fehlerbehebung herunterladen

  2. Führen Sie das Fehlerberichtstool aus, um Protokolle zu erfassen:

    gcloud beta container fleet mesh debug bug-report \
       --membership=MEMBERSHIP_NAME \
       --location=MEMBERSHIP_LOCATION \
       --project=PROJECT_NAME
    

    Ersetzen Sie Folgendes:

    • MEMBERSHIP_NAME: der Name deiner Mitgliedschaft.
    • MEMBERSHIP_LOCATION: die Region für Ihr Mitgliedschaft.
    • PROJECT_NAME ist der Projektname

Clusterinterne Steuerungsebene

  1. Tool zur Fehlerbehebung herunterladen

  2. Führen Sie das Fehlerberichtstool aus, um Protokolle zu erfassen:

    istioctl bug-report

Debug-Archiv hochladen

Das Tool erstellt ein Archiv der Logs und Konfigurationen Ihres Mesh-Netzwerks in der Arbeitsumgebung -Verzeichnis. Sie können das Archiv entpacken und die Anleitungen zur Fehlerbehebung nutzen, versuchen, die Fehlerbehebung selbst durchzuführen. Wenn Sie jedoch einen Support-Mitarbeiter Paket erhalten, können Sie sich an den Google Cloud-Support wenden. erhalten Sie weitere Schritte zum sicheren Hochladen Ihres Protokollarchivs.

Cloud Service Mesh-Logs manuell erfassen

Anstatt das Cloud Service Mesh-Tool für Fehlerberichte zu verwenden, wird in diesem Abschnitt erläutert, wie Sie alle relevanten Protokolle manuell erfassen.

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 konfigurieren Sie ein Overlay-Datei für clusterinternes Cloud Service Mesh oder eine ConfigMap für das verwaltete Cloud Service Mesh.

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 debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

Mit dem folgenden Befehl können Sie die Detailebene der Logs auf die Standardeinstellung zurücksetzen:

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- 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

Siehe Zugriffslogs von Envoy abrufen .

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.

(Nur clusterinterne Steuerungsebene) Erfassen Sie istiod-Logs mit dem folgenden Befehl:

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

(Nur Steuerungsebene im Cluster) 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 ns in `kubectl get namespaces -o=jsonpath='{.items[*].metadata.name}'` ; do echo "===NAMESPACE===" $ns >> ./LOGS_FOLDER/kubernetes.yaml ;kubectl get -oyaml -n $ns deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io >> ./LOGS_FOLDER/kubernetes.yaml; 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:

So konfigurieren Sie den Kernel so, dass Envoy-Core Dumps in ein beschreibbares Verzeichnis geschrieben werden:

  1. Fügen Sie einem Pod das Label sidecar.istio.io/enableCoreDump=true hinzu.

  2. Starten Sie den Pod neu, um Envoy-Core Dumps zu aktivieren.

  3. Kopieren Sie den Core Dump aus dem Pod.

Envoy-Proxy konfigurieren

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 angezeigt werden:

  • /certs
  • /clusters
  • /listeners
  • /config_dump
  • /memory
  • /server_info
  • /stats/prometheus
  • /runtime
kubectl debug --image istio/base --target istio-proxy -itq POD_NAME -n NAMESPACE -- curl 127.0.0.1:15000/ENDPOINT > out.log