Recopila registros de Cloud Service Mesh

En las siguientes secciones, se explica cómo recopilar los distintos registros de la malla de servicios de Cloud para solucionar problemas o comunicarse con el equipo de Atención al cliente de Google.

Recopila registros con la herramienta de informes de errores

Cloud Service Mesh proporciona una herramienta automatizada deinforme de erroress que recopila la información registros de diagnóstico y te permite adjuntarlos a un ticket de Atención al cliente de Google.

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

Inicia la recopilación de registros

Plano de control administrado

  1. Descarga la herramienta de solución de problemas.

  2. Ejecuta la herramienta de informe de errores para recopilar registros:

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

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME: Es el nombre de tu membresía.
    • MEMBERSHIP_LOCATION: Es la región de tu membresía.
    • PROJECT_NAME: Nombre del proyecto.

Plano de control en el clúster

  1. Descarga la herramienta de solución de problemas.

  2. Ejecuta la herramienta de informes de errores para recopilar 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 . Puedes desempaquetar el archivo y usar las guías de solución de problemas para de solucionar los problemas por tu cuenta. Sin embargo, si tienes un paquete de asistencia, puedes comunicarte con el equipo de Asistencia de Google Cloud, que te brindará más pasos para subir tu archivo de registro de forma segura.

Recopila de forma manual los registros de Cloud Service Mesh

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

Registros de acceso de Envoy

Los registros de acceso al proxy de Envoy contienen información detallada que es útil para la solución de problemas. Sin embargo, debes habilitarlos y configurar el nivel de detalle correcto.

Si deseas obtener detalles para interpretar el contenido del registro, consulta Interpreta los registros de Envoy.

Habilita o inhabilita los registros de Envoy

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

Aumenta el detalle del registro

Para aumentar temporalmente el nivel de detalle de los registros, usa el siguiente comando. Esta configuración 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 establecer el nivel de detalle de los registros en la configuración predeterminada, 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

Escribe los registros de Envoy en una carpeta

Para recopilar 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

Consulta Obtén los registros de acceso de Envoy. para obtener más información.

Registros de Kubernetes

Kubernetes genera varios registros que contienen información sobre el comportamiento de los componentes de Istio, como istiod, puerta de enlace de entrada y proxies. Puedes revisar estos registros para ver si hay errores, lo que podría reducir el permiso de las posibles causas de un problema.

(Solo en el plano de control del clúster) Captura 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 la puerta de enlace de entrada de Istio con el siguiente comando:

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

Captura los registros del proxy de Istio 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 sin 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 de memoria de Envoy

Los volcados de memoria de Envoy no suelen ser útiles para los usuarios finales. Sin embargo, es posible que el equipo de Atención al cliente de Google te solicite que los recopiles como parte del proceso de solución de problemas con los siguientes pasos.

Para configurar el kernel a fin de escribir volcados de núcleo de Envoy en un directorio con permisos de escritura, haz lo siguiente:

  1. Agrega la etiqueta sidecar.istio.io/enableCoreDump=true a un pod.

  2. Reinicia el Pod para habilitar los volcados principales de Envoy.

  3. Copia el volcado del núcleo del Pod.

Configura el proxy de Envoy

La configuración detallada del proxy Envoy contiene detalles adicionales que podrían ser útiles para solucionar problemas. Puedes recopilar esta información con el siguiente comando. En este ejemplo, ENDPOINT es uno de los siguientes (se muestra en 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