Raccolta dei log di Anthos Service Mesh

Le seguenti sezioni spiegano come raccogliere i vari log di Anthos Service Mesh per risolvere i problemi o per contattare l'Assistenza Google.

Raccogli i log utilizzando lo strumento per la segnalazione di bug

Anthos Service Mesh fornisce uno strumento di segnalazione di bug automatizzato 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.

  1. Verifica il contesto utilizzando il seguente comando:

    kubectl config current-context
  2. La procedura per scaricare e utilizzare lo strumento per la segnalazione di bug dipende dalla versione di Anthos Service Mesh in uso. Consulta la tabella seguente per determinare se la tua versione attuale di istioctl è sufficiente o se devi scaricare una versione autonoma dello strumento.

Versione Anthos Service Mesh/Istio Strumento per la segnalazione di bug
Anthos Service Mesh 1.7.* e versioni successive istioctl bug-report
Anthos Service Mesh 1.6.* Autonoma
Anthos Service Mesh 1.5.* Autonoma
Istio 1.7.* Autonoma
Istio 1.6.* Autonoma
Istio 1.5.* Autonoma

Per scaricare la versione autonoma dello strumento per la segnalazione di bug, procedi nel seguente modo:

  1. Scegli dall'elenco una distribuzione che corrisponda all'ambiente del tuo sistema operativo:

    • 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. Utilizza curl per scaricare la distribuzione scelta, ad esempio:

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. Imposta le autorizzazioni sul programma binario dello strumento per la segnalazione di bug per consentirne l'esecuzione, ad esempio:

    chmod +x bug-report_darwin_amd64-v1

Avvia la raccolta di log

Per avviare la raccolta dei log, esegui lo strumento per la segnalazione di bug e trasmetti il file di configurazione come parametro. Sono disponibili opzioni di runtime aggiuntive per sovrascrivere la configurazione, se necessario, che puoi visualizzare utilizzando l'opzione --help.

Se lo strumento per la segnalazione di bug è già contenuto in istioctl nella tua versione di Anthos Service Mesh, utilizza il seguente comando:

istioctl bug-report

Se ti serve lo strumento autonomo per la segnalazione di bug, rinominalo ed eseguilo come nei seguenti comandi che utilizzano la distribuzione darwin come esempio:

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

Caricare l'archivio di debug

Inserisci l'archivio dei log di debug nella directory di lavoro dello strumento per la segnalazione di bug. Puoi decomprimere l'archivio e utilizzare le guide per la risoluzione dei problemi per tentare di eseguire autonomamente la risoluzione dei problemi. Tuttavia, se disponi di un pacchetto di assistenza, puoi contattare l'assistenza Google Cloud, che ti fornirà ulteriori passaggi per caricare in modo sicuro l'archivio di log.

Raccogli manualmente i log di Anthos Service Mesh

Anziché utilizzare lo strumento per la segnalazione di bug di Anthos Service Mesh, in questa sezione viene spiegato come raccogliere manualmente tutti i log pertinenti.

Log di accesso Envoy

I log degli accessi al proxy Envoy contengono informazioni dettagliate utili per la risoluzione dei problemi. Tuttavia, devi attivarle e impostare il livello di dettaglio corretto.

Per informazioni dettagliate su come interpretare i contenuti dei log, vedi Interpretare i log di Envoy.

Abilitare o disabilitare i log di Envoy

Per abilitare i log degli accessi al proxy Envoy, utilizza istioctl install come il seguente esempio:

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

Il comando istioctl install fornisce le seguenti opzioni per configurare i log:

Valore Description
accessLogFile Definisce l'indirizzo del file per il log degli accessi al proxy (ad esempio, /dev/stdout). Un valore vuoto disabilita il logging degli accessi.
accessLogFormat Definisce il formato per il log degli accessi al proxy. Un valore vuoto imposta il formato predefinito del log degli accessi del proxy.
accessLogEncoding La codifica per il log degli accessi al proxy ("TEXT" o "JSON"). Il valore predefinito è "TEXT".

Per disabilitare i log, imposta accessLogFile su una stringa vuota:

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

Aumenta dettagli di logging

Per aumentare temporaneamente il livello di dettaglio dei log, utilizza il comando seguente. 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=info

Scrittura dei log di Envoy in una cartella

Per raccogliere i log degli accessi al proxy Envoy e archiviarli in una cartella, utilizza il comando seguente:

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

Per ulteriori informazioni, vedi Recupero dei log degli accessi di Envoy.

Log di Kubernetes

Kubernetes genera diversi log contenenti informazioni sul comportamento dei componenti Istio, come Istiod, gateway Ingress e proxy. Puoi esaminare questi log per individuare errori, il che potrebbe limitare 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 del gateway di 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 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

Dump del core di Envoy

I core dump di Envoy non sono in genere utili per gli utenti finali, tuttavia l'Assistenza Google potrebbe richiederti di raccoglierli durante la procedura di risoluzione dei problemi, seguendo i passaggi riportati di seguito.

  1. Attiva i core dump per tutti i proxy nel tuo mesh aggiungendo quanto segue alla configurazione di IstioOperator:

    spec:
    values:
    global:
      proxy:
        enableCoreDumps: true
  2. Reinstallalo utilizzando il seguente comando:

    istioctl install -f myOperatorFile.yaml
  3. Elimina il pod di destinazione in modo che venga ricreato con i core dump del proxy abilitati.

  4. Lascia che il processo venga eseguito e, quando si verifica il problema, attiva il dump principale eseguendo questo comando nel container istio-proxy:

    kubectl exec -it POD_NAME -c istio-proxy
  5. Trova il PID per il container envoy:

    ps aux | grep -i envoy
  6. Utilizza il PID per arrestare il processo inviato, che genera un core dump:

    kill -3 PID
  7. Attendi il riavvio del container (o utilizza il comando kill).

  8. Esegui questo comando per estrarre il core dump nella directory attuale:

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

Configurazione proxy Envoy

La configurazione proxy di Envoy dettagliata contiene ulteriori dettagli che potrebbero essere utili per la risoluzione dei problemi. Per raccogliere queste informazioni, puoi utilizzare il comando seguente. In questo esempio, ENDPOINT è uno dei seguenti (in ordine di importanza): * /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