Como coletar registros do Cloud Service Mesh

As seções a seguir explicam como coletar os vários registros do Cloud Service Mesh para solucionar problemas ou entrar em contato com o Suporte do Google.

Coletar registros usando a ferramenta de relatórios de bugs

O Cloud Service Mesh oferece uma ferramenta automatizada de relatórios de bugs que coleta os registros de diagnóstico relevantes e permite anexar esses registros a um tíquete de suporte do Google.

Antes de começar, verifique se o contexto kubeconfig do cluster está disponível no arquivo kubeconfig.

Iniciar a coleta de registros

Plano de controle gerenciado

  1. Faça o download da ferramenta de solução de problemas.

  2. Execute a ferramenta de relatórios de bugs para coletar registros:

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

    Substitua:

    • MEMBERSHIP_NAME: o nome da assinatura.
    • MEMBERSHIP_LOCATION: a região da assinatura.
    • PROJECT_NAME: o nome do projeto

Plano de controle no cluster

  1. Faça o download da ferramenta de solução de problemas.

  2. Execute a ferramenta de relatórios de bugs para coletar registros:

    istioctl bug-report

Fazer upload do arquivo de depuração

A ferramenta cria um arquivo dos registros e da configuração da malha no diretório de trabalho. É possível descompactar o arquivo e usar os guias para tentar realizar a solução de problemas por conta própria. No entanto, se você tiver um pacote de suporte, entre em contato com o Suporte do Google Cloud, que fornecerá outras etapas para fazer upload do arquivo de registros com segurança.

Coletar manualmente os registros do Cloud Service Mesh

Em vez de usar a ferramenta de relatório de bugs do Cloud Service Mesh, esta seção explica como coletar manualmente todos os registros relevantes.

Registros de acesso do Envoy

Os registros de acesso do proxy Envoy contêm informações detalhadas que são úteis para solução de problemas. No entanto, você precisa ativá-los e definir o nível de detalhe correto.

Para detalhes sobre como interpretar o conteúdo do registro, consulte Interpretar registros do Envoy.

Ativar ou desativar registros do Envoy

Para ativar os registros de acesso do proxy Envoy, configure um arquivo de sobreposição para o Cloud Service Mesh no cluster ou um ConfigMap para o Cloud Service Mesh gerenciado.

Aumentar detalhes da geração de registros

Para aumentar temporariamente o nível de detalhes dos registros, use o comando a seguir. Essa configuração é desfeita quando o pod é recriado.

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

Para definir o nível de detalhe dos registros de volta ao padrão, use este comando:

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=info

Gravar registros do Envoy em uma pasta

Para coletar os registros de acesso do proxy Envoy e armazená-los em uma pasta, use o seguinte comando:

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

Consulte Como receber os registros de acesso do Envoy para mais informações.

Registros do Kubernetes

O Kubernetes gera vários registros com informações sobre o comportamento dos componentes do Istiod, como o istiod, o gateway de Entrada e os proxies. Analise esses registros em busca de erros, o que pode restringir o escopo das possíveis causas de um problema.

(Somente plano de controle no cluster) Capture registros istiod usando o seguinte comando:

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

(Somente plano de controle no cluster) Capture os registros do gateway de entrada do Istio usando o seguinte comando:

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

Capture os registros do Istio Proxy usando o seguinte comando:

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

Dump de configuração do Kubernetes

Essas informações permitem que usuários sem acesso direto ao cluster visualizem o estado de vários recursos e identifiquem possíveis problemas de configuração. O comando abaixo grava a configuração do Kubernetes em um arquivo 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 de núcleo Envoy

Os dumps do núcleo Envoy normalmente não são úteis para os usuários finais. No entanto, o Suporte do Google pode solicitar que você os colete como parte do processo de solução de problemas, usando as etapas a seguir.

Para configurar o kernel para gravar despejos de núcleo do Envoy em um diretório gravável:

  1. Adicione o rótulo sidecar.istio.io/enableCoreDump=true a um pod.

  2. Reinicie o pod para ativar o despejo de núcleo do Envoy.

  3. Copie o despejo de núcleo fora do pod.

Configurar o proxy do Envoy

A configuração detalhada do proxy Envoy contém outros detalhes que podem ser úteis para fins de solução de problemas. É possível coletar essas informações usando o seguinte comando. Neste exemplo, ENDPOINT é um dos seguintes (mostrados em ordem de importância):

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