Recoger registros de Cloud Service Mesh

En las siguientes secciones se explica cómo recopilar los distintos registros de Cloud Service Mesh para solucionar problemas o ponerse en contacto con el equipo de Asistencia de Google.

Recoger registros con la herramienta de informe de errores

Cloud Service Mesh proporciona una herramienta automatizada de informes de errores que recoge los registros de diagnóstico pertinentes y te permite adjuntarlos a una incidencia de asistencia de Google.

Antes de empezar, asegúrate de que el contexto kubeconfig de tu clúster esté disponible en el archivo kubeconfig.

Iniciar la recogida de registros

Plano de control gestionado

  1. Descarga la herramienta para solucionar problemas.

  2. Ejecuta la herramienta de informe de errores para recoger los registros:

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

    Haz los cambios siguientes:

    • MEMBERSHIP_NAME: el nombre de tu suscripción.
    • MEMBERSHIP_LOCATION: la región de tu suscripción.
    • PROJECT_NAME: el nombre del proyecto.

Plano de control en clústeres

  1. Descarga la herramienta para solucionar problemas.

  2. Ejecuta la herramienta de informe de errores para recoger los registros:

    istioctl bug-report

Sube tu archivo de depuración

La herramienta crea un archivo de los registros y la configuración de tu malla en el directorio de trabajo. Puede descomprimir el archivo y usar las guías para solucionar problemas e intentar resolverlos por su cuenta. Sin embargo, si tienes un paquete de asistencia, puedes ponerte en contacto con el equipo de Asistencia de Google Cloud, que te indicará los pasos que debes seguir para subir de forma segura tu archivo de registro.

Recoger manualmente los registros de Cloud Service Mesh

En lugar de usar la herramienta de informes de errores de Cloud Service Mesh, en esta sección se explica cómo recoger manualmente todos los registros pertinentes.

Registros de acceso de Envoy

Los registros de acceso del proxy Envoy contienen información detallada que resulta útil para solucionar problemas. Sin embargo, debes habilitarlos y definir el nivel de detalle correcto.

Para obtener información sobre cómo interpretar el contenido de los registros, consulta Interpretar registros de Envoy.

Habilitar o inhabilitar los registros de Envoy

Para habilitar los registros de acceso del proxy Envoy, configura un archivo de superposición para Cloud Service Mesh en clúster o un ConfigMap para Cloud Service Mesh gestionado.

Aumentar el nivel de detalle de los registros

Para aumentar temporalmente el nivel de detalle de los registros, usa el siguiente comando. Este ajuste se deshace cuando se vuelve a crear el pod.

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

Para volver a definir el nivel de detalle de los registros como predeterminado, usa el siguiente comando:

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

Escribir registros de Envoy en una carpeta

Para recoger los registros de acceso del proxy de Envoy y almacenarlos en una carpeta, usa el siguiente comando:

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

Para obtener más información, consulta Obtener los registros de acceso de Envoy.

Registros de Kubernetes

Kubernetes genera varios registros que contienen información sobre el comportamiento de los componentes de Istio, como istiod, Ingress Gateway y los proxies. Puedes revisar estos registros para detectar errores, lo que podría reducir el ámbito de las posibles causas de un problema.

(Solo plano de control en clústeres) Captura los registros de istiod con el siguiente comando:

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

(Solo plano de control en el clúster) Captura los registros de Istio Ingress Gateway con el siguiente comando:

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

Captura los registros de Istio Proxy con el siguiente comando:

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

Volcado de configuración de Kubernetes

Esta información permite a los usuarios que no tienen acceso directo al clúster ver el estado de varios recursos e identificar posibles problemas de configuración. El siguiente comando escribe la configuración de Kubernetes en un archivo 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

Volcado principal de Envoy

Por lo general, los volcados de memoria del núcleo de Envoy no son útiles para los usuarios finales. Sin embargo, el equipo de Asistencia de Google puede pedirte que los recojas como parte del proceso de solución de problemas siguiendo estos pasos.

Para configurar el kernel de forma que escriba los volcados de memoria principales de Envoy en un directorio en el que se pueda escribir, sigue estos pasos:

  1. Añade la etiqueta sidecar.istio.io/enableCoreDump=true a un pod.

  2. Reinicia el pod para habilitar los volcados de memoria del núcleo de Envoy.

  3. Copia el volcado del archivo principal del pod.

Configurar el proxy Envoy

La configuración detallada del proxy de Envoy contiene información adicional que puede ser útil para solucionar problemas. Puedes recoger esta información con el siguiente comando. En este ejemplo, ENDPOINT es uno de los siguientes (se muestran por orden de importancia):

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