Recopila registros de Anthos Service Mesh

En las siguientes secciones, se explica cómo recopilar los diversos registros de Anthos Service Mesh para solucionar problemas o comunicarse con el equipo de Atención al cliente de Google.

Recopila registros con la herramienta de informes de errores

Anthos Service Mesh proporciona una herramienta automatizada de informes de errores que recopila los registros de diagnóstico relevantes y te permite adjuntar los registros a un ticket de Atención al cliente de Google.

Antes de comenzar, asegúrate de que tu contexto de kubeconfig esté configurado en el clúster de destino.

  1. Verifica tu contexto con el siguiente comando:

    kubectl config current-context
  2. El procedimiento para descargar y usar la herramienta de informe de errores depende de la versión de Anthos Service Mesh que uses. Consulta la siguiente tabla para determinar si tu versión actual de istioctl es suficiente o si debes descargar una versión independiente de la herramienta.

Versión de Anthos Service Mesh/Istio Herramienta de informe de errores
Anthos Service Mesh 1.7.* y versiones posteriores istioctl bug-report
Anthos Service Mesh 1.6.* Independiente
Anthos Service Mesh 1.5.* Independiente
Istio 1.7.* Independiente
Istio 1.6.* Independiente
Istio 1.5.* Independiente

Para descargar la versión independiente de la herramienta de informes de errores, sigue estos pasos:

  1. Elige una distribución de la lista que coincida con tu entorno de 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
  2. Usa curl para descargar la distribución elegida, por ejemplo:

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. Configura los permisos en el objeto binario de la herramienta de informe de errores para permitir que se ejecute, por ejemplo:

    chmod +x bug-report_darwin_amd64-v1

Inicia la recopilación de registros

Para iniciar la recopilación del registro, ejecuta la herramienta de informe de errores y pasa el archivo de configuración como parámetro. Hay opciones de entorno de ejecución adicionales disponibles para reemplazar la configuración, si es necesario, que puedes ver con la opción --help.

Si tu versión de Anthos Service Mesh ya contiene la herramienta de informe de errores dentro de istioctl, usa el siguiente comando:

istioctl bug-report

Si necesitas la herramienta de informe de errores independiente, cambia el nombre de la herramienta y ejecútala como los siguientes comandos que usan la distribución darwin como ejemplo:

mv ./bug-report_darwin_amd64-v1 ./bug-report
./bug-report

Sube tu archivo de depuración

Coloca el archivo de registro de depuración en el directorio de trabajo de la herramienta del informe de errores. Puedes descomprimir el archivo y usar las guías de solución de problemas para intentar realizar la solución de problemas. 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 manualmente los registros de Anthos Service Mesh

En lugar de usar la herramienta de informe de errores de Anthos 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 al proxy de Envoy, usa istioctl install como en el siguiente ejemplo:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="/dev/stdout" \
    --set meshConfig.accessLogEncoding="JSON"

El comando istioctl install proporciona las siguientes opciones para configurar los registros:

Valor Descripción
accessLogFile Define la dirección del archivo para el registro de acceso del proxy (por ejemplo, /dev/stdout). Un valor vacío inhabilita el registro de acceso.
accessLogFormat Define el formato del registro de acceso del proxy. Un valor vacío configura el formato de registro de acceso predeterminado del proxy.
accessLogEncoding Codificación para el registro de acceso del proxy (“TEXT” o “JSON”). El valor predeterminado es “TEXT”.

Para inhabilitar los registros, configura accessLogFile como una string vacía:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="" \
    --set meshConfig.accessLogEncoding="TEXT"

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 exec POD_NAME -c istio-proxy -- 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.

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

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

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.

  1. Agrega lo siguiente a tu configuración de IstioOperator a fin de habilitar los volcados principales para todos los proxies de tu malla:

    spec:
    values:
    global:
      proxy:
        enableCoreDumps: true
  2. Vuelve a instalarlo con el siguiente comando:

    istioctl install -f myOperatorFile.yaml
  3. Borra el Pod de destino para que se vuelva a crear con volcados de memoria del proxy habilitados.

  4. Permite que se ejecute el proceso y cuando tenga el problema, activa el volcado principal mediante la ejecución del siguiente comando en el contenedor istio-proxy:

    kubectl exec -it POD_NAME -c istio-proxy
  5. Busca el PID del contenedor de Envoy:

    ps aux | grep -i envoy
  6. Usa el PID para detener el proceso de Envoy, que genera un volcado de memoria:

    kill -3 PID
  7. Espera a que el contenedor se reinicie (o usa el comando kill).

  8. Ejecuta el siguiente comando para extraer el volcado de memoria en tu directorio actual:

    kubectl cp PID:/var/lib/istio/data/core.proxy -c istio-proxy ./core.proxy

Configuración del 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 exec -i POD_NAME -c istio-proxy curl 127.0.0.1:15000/ENDPOINT > out.log