Esta página está diseñada para desarrolladores de aplicaciones que deseen recopilar datos de Cloud Trace para aplicaciones de Python mediante OpenTelemetry. OpenTelemetry es un framework de instrumentación independiente del proveedor que puedes usar para recopilar datos de seguimiento y de métricas. Para obtener información sobre cómo instrumentar tu código, consulta Instrumentación y observabilidad.
- Instala los paquetes de OpenTelemetry.
- Configura la aplicación para exportar intervalos a Cloud Trace.
- Configura tu plataforma.
Para obtener información de la versión, consulta lo siguiente:
Para obtener contenido de referencia de OpenTelemetry, consulta lo siguiente:
Si quieres obtener los detalles más recientes sobre OpenTelemetry para Python, junto con documentación y ejemplos adicionales, consulta OpenTelemetry.
Antes de comenzar
- Debes usar Python 3.6 o una versión posterior.
-
En el panel de navegación de la consola de Google Cloud, selecciona APIs y servicios, haz clic en Habilitar APIs y servicios y, luego, habilita la API de Cloud Trace:
Si aparece API habilitada, la API ya está habilitada. De lo contrario, haz clic en el botón Habilitar.
Instala los paquetes de OpenTelemetry
Para instalar los paquetes de OpenTelemetry requeridos, haz lo siguiente:
(Opcional) Actualiza a la versión más reciente de
pip
:pip install --upgrade pip
Instala los siguientes paquetes de OpenTelemetry con
pip
:pip install opentelemetry-api \ opentelemetry-sdk \ opentelemetry-exporter-gcp-trace
Cómo importar paquetes de seguimiento
Actualiza tu aplicación para importar los siguientes paquetes y clases:
trace
CloudTraceSpanExporter
TracerProvider
BatchSpanProcessor
, que es un procesador de intervalos de exportación que envía intervalos mediante un proceso en segundo plano.Si quieres vincular intervalos, importa la clase
Link
(opcional).
En el siguiente ejemplo, se ilustran estas sentencias de importación:
Configura la exportación de intervalos a Cloud Trace
Si deseas enviar intervalos a Cloud Trace, modifica tu aplicación para usar el exportador CloudTraceSpanExporter
. En el siguiente ejemplo, se muestran los pasos necesarios:
Cómo agregar atributos a un intervalo
Para agregar un atributo a un intervalo, llama al método set_attribute
del intervalo.
Por ejemplo, el siguiente código agrega varios atributos al intervalo llamado foo_with_attribute
:
Cómo agregar eventos a un intervalo
Para agregar un evento a un intervalo, llama al método add_event
del intervalo.
Por ejemplo, el siguiente código agrega un evento al intervalo llamado foo_with_event
:
Intervalos de vínculos
Para vincular dos intervalos, importa la clase Link
y, luego, usa el campo links
en el método start_as_current_span
. Cuando vinculas dos intervalos, puedes incluir atributos en el campo links
.
En el siguiente código, se muestran dos formas diferentes de vincular un intervalo llamado link_target
:
Aplicación de muestra de Flask
La instrumentación de Flask de OpenTelemetry está diseñada para simplificar la captura de contenido de seguimiento relacionado con solicitudes HTTP. Esto significa que no necesitas agregar instrumentación específica a tus rutas para estas solicitudes:
- Flask usa el propagador configurado para extraer el contexto de intervalo de las solicitudes HTTP entrantes.
- Flask crea automáticamente intervalos con atributos que describen la solicitud y la respuesta.
Para ver un ejemplo de extremo a extremo con Flask y OpenTelemetry, consulta flask_e2e. El archivo README de Git incluye información para instalar, configurar y ejecutar el ejemplo.
En esta sección, se destacan los pasos de configuración específicos de Flask que se incluyen en el archivo server.py
de ejemplo. El archivo cliente, client.py
, usa la instrumentación Requests
para habilitar el seguimiento de las solicitudes HTTP realizadas por la biblioteca de solicitudes.
Importación y configuración
Para usar la instrumentación de Flask de OpenTelemetry, debes importar el FlaskInstrumentor
.
Cuando quieras asegurarte de que los intervalos creados por diferentes productos de Google Cloud estén asociados con el mismo seguimiento, debes configurar el propagador con el propagador de Cloud Trace. Este propagador especifica el uso del encabezado X-Cloud-Trace-Context
. Si no configuras un propagador, OpenTelemetry usa el predeterminado. En este caso, los intervalos creados por diferentes productos de Google Cloud, como Cloud Run y App Engine, se encuentran en seguimientos separados.
En el siguiente ejemplo, se ilustran las declaraciones necesarias de importación y configuración, y la configuración del propagador de Cloud Trace:
No es necesario agregar ninguna declaración específica de Flask cuando configuras el exportador CloudTraceSpanExporter
. La configuración que se muestra en Configura la exportación de intervalos a Cloud Trace es suficiente.
Inicializa Flask
Configura el FlaskInstrumentor
para instrumentar tu aplicación.
En el siguiente ejemplo, se muestra cómo realizar este paso:
Cómo configurar tu plataforma
Puedes usar Cloud Trace en Google Cloud y otras plataformas.
Ejecuta en Google Cloud
Cuando tu aplicación se ejecuta en Google Cloud, no necesitas proporcionar credenciales de autenticación en el formato de una cuenta de servicio a la biblioteca cliente. Sin embargo, debes asegurarte de que tu plataforma de Google Cloud tenga habilitado el permiso de acceso a la API de Cloud Trace.
Para obtener una lista de los entornos de Google Cloud compatibles, consulta Compatibilidad de entornos.
Para las siguientes opciones de configuración, la configuración predeterminada del permiso de acceso habilita la API de Cloud Trace:
- Entorno flexible de App Engine
Entorno estándar de App Engine
Google Kubernetes Engine (GKE)
Compute Engine
Cloud Run
Si usas permisos de acceso personalizados, debes asegurarte de que el permiso de acceso a la API de Cloud Trace esté habilitado:
Si quieres obtener información para configurar los permisos de acceso de tu entorno mediante la consola de Google Cloud, consulta Configura tu proyecto de Google Cloud.
Para los usuarios de
gcloud
, especifica los niveles de acceso con la marca--scopes
y, también, incluye el permiso de acceso a la API de Cloud Tracetrace.append
. Por ejemplo, para crear un clúster de GKE solo con la API de Cloud Trace habilitada, sigue estos pasos:gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append
Ejecuta de forma local y en otros lugares
Si tu aplicación se ejecuta fuera de Google Cloud, debes proporcionar credenciales de autenticación en forma de una cuenta de servicio a la biblioteca cliente. La cuenta de servicio debe contener la función de agente de Cloud Trace. Para obtener más instrucciones, consulta Cómo crear una cuenta de servicio.
Las bibliotecas cliente de Google Cloud usan las credenciales predeterminadas de la aplicación (ADC) para encontrar las credenciales de tu aplicación.
Puedes proporcionar estas credenciales de una de estas tres maneras:
Ejecución
gcloud auth application-default login
Coloca la cuenta de servicio en una ruta predeterminada para tu sistema operativo. A continuación, se enumeran las rutas de acceso predeterminadas para Windows y Linux:
Windows:
%APPDATA%/gcloud/application_default_credentials.json
Linux:
$HOME/.config/gcloud/application_default_credentials.json
Establece la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
como la ruta a tu cuenta de servicio:
Linux/macOS
export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"
Ver seguimientos
En el panel de navegación de la consola de Google Cloud, selecciona Trace y, luego, Explorador de seguimiento:
Ve al Explorador de seguimiento
Soluciona problemas
Para obtener información sobre cómo solucionar problemas con Cloud Trace, ve a la página de solución de problemas.
Recursos
- https://opentelemetry.io/
- Repositorio de GitHub de OpenTelemetry/opentelemetry-python
- Repositorio de GitHub de Google Cloud opentelemetry-operations-python.