Como coletar registros do Anthos Service Mesh

As seções a seguir explicam como coletar os diversos registros do Anthos 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 Anthos Service Mesh oferece uma ferramenta automatizada de relatórios de bugs que coleta os registros de diagnóstico relevantes e permite que você anexe os registros a um tíquete de suporte do Google.

Antes de começar, verifique se o contexto do kubeconfig está definido como o cluster de destino.

  1. Verifique seu contexto usando o seguinte comando:

    kubectl config current-context
  2. O procedimento para fazer o download e usar a ferramenta de relatório de bugs depende da versão do Anthos Service Mesh que você usa. Consulte a tabela a seguir para determinar se a versão atual do istioctl é suficiente ou se é necessário fazer o download de uma versão autônoma da ferramenta.

Versão do Anthos Service Mesh/Istio Ferramenta de relatórios de bugs
Anthos Service Mesh 1.7.* e mais recente istioctl bug-report
Anthos Service Mesh 1.6.* Independente
Anthos Service Mesh 1.5.* Independente
Istio 1.7.* Independente
Istio 1.6.* Independente
Istio 1.5.* Independente

Para fazer o download da versão independente da ferramenta de relatório do bug, use as seguintes etapas:

  1. Escolha uma distribuição na lista que corresponde ao seu ambiente do SO:

    • 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. Use curl para fazer o download da distribuição escolhida, por exemplo:

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. Defina permissões no binário da ferramenta de relatórios de bugs para permitir que ele seja executado. Por exemplo:

    chmod +x bug-report_darwin_amd64-v1

Iniciar a coleta de registros

Para iniciar a coleta de registros, execute a ferramenta de relatórios de bugs e transmita o arquivo de configuração como um parâmetro. Há mais opções ambiente de execução disponíveis para substituir a configuração, se necessário. Elas podem ser visualizadas usando a opção --help.

Se sua versão do Anthos Service Mesh já tiver a ferramenta de relatórios de bugs em istioctl, use o seguinte comando:

istioctl bug-report

Se você precisar da ferramenta autônoma de relatórios de bugs, renomeie a ferramenta e execute-a como os seguintes comandos que usam a distribuição Darwin como exemplo:

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

Fazer upload do arquivo de depuração

Coloque seu arquivo de registros de depuração no diretório de trabalho da ferramenta de relatórios de bugs. É 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 Anthos Service Mesh

Em vez de usar a ferramenta de relatório de bugs do Anthos Service Mesh, veja nesta seção 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, use istioctl install como no exemplo a seguir:

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

O comando istioctl install fornece as seguintes opções para configurar os registros:

Valor Descrição
accessLogFile Define o endereço do arquivo para o registro de acesso ao proxy (por exemplo, /dev/stdout). Um valor vazio desativa a geração de registros de acesso.
accessLogFormat Define o formato do registro de acesso do proxy. Um valor vazio define o formato de registro de acesso padrão do proxy.
accessLogEncoding A codificação do registro de acesso do proxy ("TEXT" ou "JSON"). O valor padrão é "TEXT".

Para desativar os registros, defina accessLogFile como uma string vazia:

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

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 exec POD_NAME -c istio-proxy -- 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 conseguir 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 Istio, o Ingress Gateway e os proxies. Analise esses registros em busca de erros, o que pode restringir o escopo das possíveis causas de um problema.

Capture os registros do Istiod usando o comando a seguir:

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

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 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 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.

  1. Ative os dumps de núcleo para todos os proxies na sua malha adicionando a seguinte configuração à sua configuração IstioOperator:

    spec:
    values:
    global:
      proxy:
        enableCoreDumps: true
  2. Reinstale usando o comando a seguir:

    istioctl install -f myOperatorFile.yaml
  3. Exclua o pod de destino para que ele seja recriado com dumps de núcleo de proxy ativados.

  4. Deixe o processo em execução e, quando ele tiver o problema, acione o dump de núcleo executando o seguinte comando no contêiner istio-proxy:

    kubectl exec -it POD_NAME -c istio-proxy
  5. Encontre o PID do contêiner envoy:

    ps aux | grep -i envoy
  6. Use o PID para interromper o processo de envoy, o que gera um dump de núcleo:

    kill -3 PID
  7. Aguarde a reinicialização do contêiner (ou use o comando kill).

  8. Execute o seguinte comando para extrair o arquivo dump de núcleo para o diretório atual:

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

Configuração de 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 exec -i POD_NAME -c istio-proxy curl 127.0.0.1:15000/ENDPOINT > out.log