Como coletar registros do Cloud Service Mesh
As seções a seguir explicam como coletar os diversos 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 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
Iniciar a coleta de registros
Para iniciar a coleta de registros, execute a ferramenta de relatórios de bugs usando o seguinte comando:
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 exec POD_NAME -c istio-proxy -- 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 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 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.
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
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:
Adicione o rótulo
sidecar.istio.io/enableCoreDump=true
a um pod.Reinicie o pod para ativar o despejo de núcleo do Envoy.
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 exec -i POD_NAME -c istio-proxy -n NAMESPACE curl 127.0.0.1:15000/ENDPOINT > out.log