Raccolta dei log di Cloud Service Mesh
Le sezioni seguenti spiegano come raccogliere i vari log di Cloud Service Mesh per risolvere i problemi o contattare l'assistenza Google.
Raccogliere i log utilizzando lo strumento per le segnalazioni di bug
Cloud Service Mesh fornisce uno strumento automatico per la segnalazione di bug che raccoglie i log di diagnostica pertinenti e ti consente di allegarli a un ticket dell'Assistenza Google.
Prima di iniziare, assicurati che il contesto kubeconfig sia impostato sul cluster di destinazione.
Verifica il contesto utilizzando il seguente comando:
kubectl config current-context
Avvia la raccolta dei log
Per avviare la raccolta dei log, esegui lo strumento bug-report utilizzando il seguente comando:
istioctl bug-report
Carica l'archivio di debug
Lo strumento crea un archivio dei log e della configurazione del mesh nella directory di lavoro. Puoi decomprimere l'archivio e utilizzare le guide alla risoluzione dei problemi per tentare di risolvere il problema autonomamente. Tuttavia, se hai un pacchetto di assistenza, puoi contattare l'assistenza Google Cloud, che ti fornirà ulteriori passaggi per caricare in sicurezza l'archivio dei log.
Raccogliere manualmente i log di Cloud Service Mesh
Anziché utilizzare lo strumento per la segnalazione di bug di Cloud Service Mesh, questa sezione spiega come raccogliere manualmente tutti i log pertinenti.
Log di accesso di Envoy
I log di accesso del proxy Envoy contengono informazioni dettagliate utili per la risoluzione dei problemi. Tuttavia, devi attivarli e impostare il livello di dettaglio corretto.
Per informazioni dettagliate su come interpretare i contenuti dei log, consulta Interpreta i log di Envoy.
Attivare o disattivare i log di Envoy
Per abilitare i log di accesso del proxy Envoy, configura un file overlay per Cloud Service Mesh nel cluster o un ConfigMap per Cloud Service Mesh gestito.
Aumentare il dettaglio del logging
Per aumentare temporaneamente il livello di dettaglio dei log, utilizza il seguente comando. Questa impostazione viene annullata quando il pod viene ricreato.
kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=debug
Per ripristinare il livello di dettaglio predefinito dei log, utilizza il seguente comando:
kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=info
Scrivere i log di Envoy in una cartella
Per raccogliere i log di accesso del proxy Envoy e archiviarli in una cartella, utilizza il seguente comando:
kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH
Per ulteriori informazioni, consulta la sezione Ottenere i log di accesso di Envoy.
Log di Kubernetes
Kubernetes genera diversi log che contengono informazioni sul comportamento dei componenti Istio, come istiod
, Ingress Gateway e i proxy. Puoi esaminare questi log per rilevare eventuali errori, il che potrebbe restringere l'ambito delle possibili cause di un problema.
Acquisisci i log istiod
utilizzando il seguente comando:
kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log
Acquisisci i log di Istio Ingress Gateway utilizzando il seguente comando:
kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH
Acquisisci i log di Istio Proxy utilizzando il seguente comando:
kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log
Dump della configurazione di Kubernetes
Queste informazioni consentono agli utenti senza accesso diretto al cluster di visualizzare lo stato di varie risorse e identificare possibili problemi di configurazione. Il comando seguente scrive la configurazione di Kubernetes in un file YAML:
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
Dump del core di Envoy
I dump del core di Envoy in genere non sono utili per gli utenti finali, ma l'Assistenza Google potrebbe chiederti di raccoglierli nell'ambito della procedura di risoluzione dei problemi, seguendo i passaggi che seguono.
Per configurare il kernel in modo che scriva i dump del core di Envoy in una directory scrivibile:
Aggiungi l'etichetta
sidecar.istio.io/enableCoreDump=true
a un pod.Riavvia il pod per attivare i dump del core di Envoy.
Copia il dump del core dal pod.
Configura il proxy Envoy
La configurazione dettagliata del proxy Envoy contiene ulteriori dettagli che potrebbero essere utili per la risoluzione dei problemi. Puoi raccogliere queste informazioni utilizzando il seguente comando. In questo esempio, ENDPOINT è uno dei seguenti (mostrati in ordine di importanza):
- /certs
- /clusters
- /listeners
- /config_dump
- /memory
- /server_info
- /stats/prometheus
- /runtime
kubectl exec -i POD_NAME -c istio-proxy -n NAMESPACE curl 127.0.0.1:15000/ENDPOINT > out.log