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.

Raccogli i log utilizzando lo strumento di segnalazione di bug

Cloud Service Mesh fornisce uno strumento automatizzato di segnalazione di bug che raccoglie i dati log di diagnostica e consente di allegarli a un ticket dell'Assistenza Google.

Prima di iniziare, assicurati che il contesto kubeconfig per il cluster sia disponibile in del tuo file kubeconfig.

Avvia la raccolta di log

Piano di controllo gestito

  1. Scarica lo strumento per la risoluzione dei problemi.

  2. Esegui lo strumento di segnalazione di bug per raccogliere i log:

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

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME: il nome del tuo abbonamento.
    • MEMBERSHIP_LOCATION: la regione per il tuo .
    • PROJECT_NAME: il nome del progetto.

Piano di controllo in-cluster

  1. Scarica lo strumento per la risoluzione dei problemi.

  2. Esegui lo strumento di segnalazione di bug per raccogliere i log:

    istioctl bug-report

Caricare l'archivio di debug

Lo strumento crea un archivio dei log e della configurazione della rete mesh . Puoi decomprimere l'archivio e utilizzare le guide alla risoluzione dei problemi per provare a risolvere autonomamente il problema. Tuttavia, se hai un'assistenza puoi contattare l'assistenza Google Cloud, che ti fornirà ulteriori passaggi per caricare in modo sicuro l'archivio dei log.

Raccogli manualmente i log di Cloud Service Mesh

Anziché utilizzare lo strumento di 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 proxy Envoy contengono informazioni dettagliate utili per risoluzione dei problemi. Tuttavia, devi abilitarle e impostare il livello di dettaglio corretto.

Per maggiori dettagli su come interpretare i contenuti del log, consulta Interpreta i log di Envoy.

Abilita o disabilita i log di Envoy

Per abilitare i log di accesso proxy Envoy, configura un file overlay per Cloud Service Mesh nel cluster o ConfigMap per Cloud Service Mesh gestito.

Aumenta dettagli di logging

Per aumentare temporaneamente il livello di dettaglio dei log, usa il comando seguente. Questa impostazione viene annullata quando il pod viene ricreato.

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

Scrittura dei log di Envoy in una cartella

Per raccogliere i log di accesso proxy Envoy e archiviarli in una cartella, utilizza la seguente comando:

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

Consulta Ottenere i log di accesso di Envoy per ulteriori informazioni.

Log di Kubernetes

Kubernetes genera diversi log contenenti informazioni sul comportamento Componenti Istio, come istiod, gateway Ingress e proxy. Puoi rivedere per rilevare eventuali errori, il che potrebbe restringere l'ambito delle possibili cause di un problema.

(Solo piano di controllo nel cluster) Acquisisci i log di istiod utilizzando il seguente comando:

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

(Solo piano di controllo nel cluster) Acquisisci i log del gateway Istio Ingress utilizzando il seguente comando:

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

Acquisisci i log del proxy Istio 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 seguente comando 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

Core dump di Envoy

I core dump di Envoy in genere non sono utili per gli utenti finali, ma l'Assistenza Google potrebbe richiedere di raccoglierli nell'ambito della procedura di risoluzione dei problemi, utilizzando i seguenti passaggi.

Per configurare il kernel in modo che scriva i core dump di Envoy in una directory scrivibile:

  1. Aggiungi l'etichetta sidecar.istio.io/enableCoreDump=true a un pod.

  2. Riavvia il pod per abilitare i core dump di Envoy.

  3. Copia il dump principale dal pod.

Configura proxy Envoy

La configurazione dettagliata del proxy Envoy contiene altri dettagli che potrebbero utili per la risoluzione dei problemi. Puoi raccogliere queste informazioni utilizzando il . In questo esempio, ENDPOINT è uno dei seguenti (in ordine di importanza):

  • /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