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.
Verifique seu contexto usando o seguinte comando:
kubectl config current-context
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:
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
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
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.
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
Reinstale usando o comando a seguir:
istioctl install -f myOperatorFile.yaml
Exclua o pod de destino para que ele seja recriado com dumps de núcleo de proxy ativados.
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
Encontre o PID do contêiner envoy:
ps aux | grep -i envoy
Use o PID para interromper o processo de envoy, o que gera um dump de núcleo:
kill -3 PID
Aguarde a reinicialização do contêiner (ou use o comando
kill
).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