Recolha de registos do Cloud Service Mesh

As secções seguintes explicam como recolher os vários registos do Cloud Service Mesh para resolver problemas ou contactar o apoio técnico da Google.

Recolha registos através da ferramenta de relatório de erros

O Cloud Service Mesh oferece uma ferramenta de relatório de erros automatizada que recolhe os registos de diagnóstico relevantes e permite anexar os registos a um pedido de apoio técnico da Google.

Antes de começar, certifique-se de que o contexto do kubeconfig está definido para o cluster de destino.

Valide o seu contexto através do seguinte comando:

kubectl config current-context

Inicie a recolha de registos

Para iniciar a recolha de registos, execute a ferramenta de relatório de erros através do seguinte comando:

istioctl bug-report

Carregue o arquivo de depuração

A ferramenta cria um arquivo dos registos e da configuração da sua malha no diretório de trabalho. Pode descompactar o arquivo e usar os guias de resolução de problemas para tentar resolver os problemas sozinho. No entanto, se tiver um pacote de apoio técnico, pode contactar o apoio técnico do Google Cloud, que lhe indicará mais passos para carregar em segurança o seu arquivo de registos.

Recolha manualmente registos do Cloud Service Mesh

Em vez de usar a ferramenta de relatório de erros do Cloud Service Mesh, esta secção explica como recolher manualmente todos os registos relevantes.

Registos de acesso do Envoy

Os registos de acesso do proxy Envoy contêm informações detalhadas úteis para a resolução de problemas. No entanto, tem de os ativar e definir o nível de detalhe correto.

Para ver detalhes sobre como interpretar o conteúdo do registo, consulte o artigo Interpretar registos do Envoy.

Ative ou desative os registos do Envoy

Para ativar os registos de acesso do proxy Envoy, configure um ficheiro de sobreposição para a malha de serviços do Google Cloud no cluster ou um ConfigMap para a malha de serviços do Google Cloud gerida.

Aumente os detalhes do registo

Para aumentar temporariamente o nível de detalhe dos registos, use o seguinte comando. Esta definição é anulada quando o pod é recriado.

kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=debug

Para repor o nível de detalhe dos registos para o predefinido, use o seguinte comando:

kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=info

Escreva registos do Envoy numa pasta

Para recolher os registos de acesso do proxy Envoy e armazená-los numa pasta, use o seguinte comando:

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

Consulte o artigo Obter registos de acesso do Envoy para mais informações.

Registos do Kubernetes

O Kubernetes gera vários registos que contêm informações sobre o comportamento dos componentes do Istio, como o istiod, o Ingress Gateway e os proxies. Pode rever estes registos para verificar se existem erros, o que pode restringir o âmbito das possíveis causas de um problema.

Capture os registos do istiod através do seguinte comando:

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

Capture os registos do Istio Ingress Gateway através do seguinte comando:

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

Capture os registos do proxy Istio com o seguinte comando:

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

Captura da configuração do Kubernetes

Estas informações permitem que os utilizadores sem acesso direto ao cluster vejam o estado de vários recursos e identifiquem possíveis problemas de configuração. O comando seguinte escreve a configuração do Kubernetes num ficheiro 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

Envoy core dump

Normalmente, os despejos de memória do Envoy não são úteis para os utilizadores finais. No entanto, o apoio técnico da Google pode pedir-lhe que os recolha como parte do processo de resolução de problemas através dos seguintes passos.

Para configurar o kernel para escrever despejos de memória do Envoy num diretório gravável:

  1. Adicione a etiqueta sidecar.istio.io/enableCoreDump=true a um podcast.

  2. Reinicie o pod para ativar os despejos de memória do Envoy.

  3. Copie o despejo de memória do pod.

Configure o proxy Envoy

A configuração detalhada do proxy Envoy contém detalhes adicionais que podem ser úteis para fins de resolução de problemas. Pode recolher estas informações através do seguinte comando. Neste exemplo, ENDPOINT é um dos seguintes (apresentados por 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