Cloud Service Mesh-Logs erfassen
In den folgenden Abschnitten wird erläutert, wie Sie die verschiedenen Arten von Cloud Service Mesh-Logs erfassen, um Probleme zu beheben oder sich an den Google-Support zu wenden.
Logs mit dem Tool für Fehlerberichte erfassen
Cloud 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 der kubeconfig-Kontext für Ihren Cluster in Ihrer kubeconfig-Datei verfügbar ist.
Mit dem Erfassen von Logs beginnen
Verwaltete Steuerungsebene
Führen Sie das Tool für Fehlerberichte 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 Ihrer Mitgliedschaft.MEMBERSHIP_LOCATION
: die Region für Ihre Mitgliedschaft.PROJECT_NAME
ist der Projektname
Clusterinterne Steuerungsebene
Führen Sie das Tool für Fehlerberichte aus, um Protokolle zu erfassen:
istioctl bug-report
Debug-Archiv hochladen
Das Tool erstellt im Arbeitsverzeichnis ein Archiv der Logs und der Konfiguration Ihres Mesh. 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.
Cloud 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 Cloud 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 konfigurieren Sie eine Overlay-Datei für Cloud Service Mesh im Cluster oder eine ConfigMap für verwaltetes 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
Verwenden Sie den folgenden Befehl, um die Detailebene der Protokolle auf die Standardeinstellung zurückzusetzen:
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
Weitere Informationen finden Sie unter 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 clusterinterne Steuerungsebene) 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:
Fügen Sie einem Pod das Label
sidecar.istio.io/enableCoreDump=true
hinzu.Starten Sie den Pod neu, um Envoy-Core Dumps zu aktivieren.
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