Observabilidad

El uso de una malla de servicios te permite observar el tráfico hacia los servicios, y desde ellos, lo que permite una mejor supervisión y depuración sin cambios de código en el servicio. En la arquitectura de proxy de sidecar que usa Traffic Director, el proxy es el componente que procesa las solicitudes y proporciona la información de telemetría necesaria. La información de telemetría debe recopilarse y almacenarse en una ubicación centralizada para su uso posterior, como el análisis de datos, las alertas y la solución de problemas.

En esta guía, se muestra cómo generar seguimiento y registro para el proxy Envoy. En esta guía, también se muestra cómo exportar la información a Cloud Trace y Cloud Logging.

Configuración de demostración

En esta guía, se usa la siguiente configuración para demostrar el seguimiento y el registro:

  • Una sola aplicación que escucha en el puerto HTTP y muestra el nombre de host de la VM que entregó la solicitud. En el diagrama, esta aplicación se encuentra en la esquina superior derecha, con la etiqueta Servicios HTTP (10.10.10.10.80). Una o más VM pueden proporcionar este servicio.
  • Una sola VM de Compute Engine que ejecuta un consumidor de este servicio. En el diagrama, tiene la etiqueta VM de demostración de Compute Engine.
  • Un proxy de sidecar de Envoy instalado y configurado por Traffic Director. En el diagrama, tiene la etiqueta Envoy.
  • Una aplicación de consumidor de servicios, que se muestra en el cuadro gris, es el consumidor del servicio HTTP que se ejecuta en 10.10.10.10:80.
Aplicación de demostración de la supervisión y el registro de Stackdriver para Envoy (haz clic para ampliar)
Aplicación de demostración de la supervisión y el registro de Stackdriver para Envoy (haz clic para ampliar)
  1. Traffic Director configura el proxy de Envoy a fin de balancear las cargas de tráfico del servicio 10.10.10.10:80, almacenar información de registro de acceso de cada solicitud emitida para este servicio y generar información de seguimiento destinada al servicio.
  2. Después de que el consumidor envía una solicitud a 10.10.10.10, el proxy de sidecar enruta la solicitud al destino correcto.
  3. El proxy de sidecar también genera la información de telemetría necesaria:
    1. Agrega una entrada al registro de acceso en el disco local con información adicional sobre la solicitud.
    2. Genera una entrada de seguimiento y la envía a Trace mediante el seguimiento de OpenCensus de Envoy.
  4. El agente de registro exporta estos datos a la API de Cloud Logging para que estén disponibles en la interfaz de Cloud Logging.

Requisitos previos

Asegúrate de que ocurra lo siguiente:

  1. La API de Traffic Director esté habilitada y se cumplan otros requisitos previos, como se describe en Prepara la configuración de Traffic Director.
  2. La cuenta de servicio que usa la VM de Compute Engine tenga la función Agente de Cloud Trace configurada. Consulta la página de Control de acceso de Trace para obtener más información.
  3. La cuenta de servicio que usa la VM de Compute Engine tenga configurada la función de Escritor de registros. Consulta la página Control de acceso de registros para obtener más información.

Configura el servicio de demostración y Traffic Director

En esta guía, se usan varias secuencias de comandos de shell para realizar los pasos necesarios a fin de configurar el servicio de demostración. Revisa las secuencias de comandos para comprender los pasos específicos que realizan.

  1. Inicia una VM de Compute Engine y configura el servicio HTTP en la VM.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh
    chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
    

    La secuencia de comandos setup_demo_service.sh crea una plantilla de VM que inicia apache2 cuando se inicia una VM y un grupo de instancias administrado que usa esta plantilla. La secuencia de comandos inicia una instancia única sin el ajuste de escala automático habilitado.

  2. Configura el enrutamiento para el servicio 10.10.10.10 mediante Traffic Director

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh
    chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
    

    La secuencia de comandos setup_demo_trafficdirector.sh configura los parámetros necesarios para el servicio administrado de Traffic Director, similar a la configuración descrita en Configura Traffic Director para Compute Engine con VM.

  3. Inicia una VM de Compute Engine que ejecute un consumidor del servicio HTTP, con el proxy de sidecar instalado y configurado en la VM. En el siguiente comando, reemplaza la variable gcp_project_id por el ID del proyecto al que se debe enviar la información de Trace. Por lo general, este es el mismo proyecto al que pertenece tu VM.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh
    chmod 755 setup_demo_client.sh && ./setup_demo_client.sh my_gcp_project_id
    

    La secuencia de comandos setup_demo_client.sh crea una VM de Compute Engine que tiene un proxy de Envoy preconfigurado para usar Traffic Director. Esto es similar a la configuración que se describe en Configura Traffic Director para Compute Engine con VM.

La siguiente configuración adicional habilita el seguimiento y el registro:

  • Las variables de metadatos del nodo de arranque TRAFFICDIRECTOR_ACCESS_LOG_PATH y TRAFFICDIRECTOR_ENABLE_TRACING habilitan el registro y el seguimiento, como se describe en Configura atributos adicionales para proxies de sidecar.
  • La configuración de arranque estático permite exportar información de seguimiento a Trace mediante OpenCensus.

NOTA: Puedes agregar y modificar parámetros de seguimiento adicionales mediante la configuración del entorno de ejecución de Envoy.

Después de ejecutar estas secuencias de comandos, puedes acceder a la VM td-observability-demo-client y al servicio HTTP disponible en 10.10.10.10.

curl http://10.10.10.10

En este punto, Envoy genera información de registro de acceso y seguimiento. En la siguiente sección, se describe cómo exportar la información de seguimiento y registro.

Configura la exportación de seguimiento a Cloud Trace

La configuración de arranque de Envoy que creaste cuando ejecutaste la secuencia de comandos setup-demo-client.sh es suficiente para generar información de seguimiento. Todas las demás configuraciones son opcionales. Si deseas configurar parámetros adicionales, consulta la página de configuración de OpenCensus de Envoy y modifica las opciones de seguimiento en la configuración de arranque de Envoy.

Después de emitir una solicitud de muestra al servidor de demostración (curl 10.10.10.10), ve a la interfaz de Trace (Trace > Lista de seguimientos) en Google Cloud Console. Verás un registro de seguimiento correspondiente a la solicitud que emitiste.

Para obtener más información sobre cómo usar Trace, consulta su documentación.

Configura la exportación de registros de acceso a Logging

En esta etapa, Envoy debe registrar la información de registro de acceso en el disco local de la VM en la que se ejecuta. Para exportar estos registros a Logging, debes instalar el agente de Logging de forma local. Esto requiere que instales y configures el agente de Logging.

Instala el agente de Logging

Instala el agente de Logging en la VM desde la que se exporta la información de registro. Para esta configuración de ejemplo, la VM es td-observability-demo-vm.

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

Para obtener más información sobre la instalación del agente de Logging, consulta la guía Instala el agente.

Configura el agente de Logging

Puedes exportar los registros de Envoy como texto estructurado o sin estructurar.

Exporta los registros de Envoy como texto sin estructurar

Con esta opción, se exportan los registros de acceso a Cloud Logging como texto sin procesar. Cada entrada en el registro de acceso se exporta como una única entrada a Logging. Esta configuración es más fácil de instalar, ya que se basa en un analizador que se distribuye con la versión actual del agente de Logging, pero es más difícil filtrar y procesar entradas de registro de texto sin procesar mediante esta opción.

  1. Descarga y, luego, instala el archivo de configuración de exportación sin estructurar del registro de acceso de Envoy.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf
    sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  2. Reinicia el agente. Los cambios se aplicarán cuando se inicie el agente.

    sudo service google-fluentd restart
    

Exporta los registros de Envoy en un formato estructurado

  1. Instala el analizador de registros de acceso de Envoy desde GitHub.

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. Descarga y, luego, instala el archivo de configuración para exportar los registros de acceso de Envoy en un formato estructurado:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf
    sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  3. Reinicia el agente. Los cambios se aplicarán cuando se inicie el agente.

    sudo service google-fluentd restart
    

Para obtener más información sobre la configuración del agente de Logging, consulta Configura el agente.

Verificación

  1. Desde la VM del proxy de sidecar, genera una solicitud para el servicio de demostración. Esto crea un nuevo registro local. Por ejemplo, puedes ejecutar curl 10.10.10.10:
  2. Ve a Logging > Visor de registros en Cloud Console. En el menú desplegable, selecciona el tipo de registro envoy-access. Verás una entrada de registro para la solicitud más reciente en formato sin estructurar o estructurado, según el tipo de configuración que elegiste antes.

Soluciona problemas

Si la configuración está completa, pero no ves las entradas de registro o seguimiento disponibles, verifica lo siguiente:

  1. Las cuentas de servicio para la VM de Compute Engine tienen los permisos necesarios de IAM de Trace y Logging, como se especifica en los requisitos previos. Para obtener más información sobre los permisos de IAM de Trace, consulta Control de acceso. Para obtener información sobre los permisos de Logging, consulta Control de acceso.
  2. Para Logging: asegúrate de que no haya errores en /var/log/google-fluentd/google-fluentd.log.
  3. Para Logging: asegúrate de que las entradas nuevas aparezcan en el archivo de registro de acceso local cuando se emiten solicitudes.