Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migrar a OpenTelemetry Python
Esta guía le ayuda a migrar las aplicaciones de Python del SDK de X-Ray a la OpenTelemetry instrumentación. Abarca los enfoques de instrumentación automática y manual, con ejemplos de código para escenarios comunes.
Soluciones de instrumentación automática sin código
Con el SDK de X-Ray, tenías que modificar el código de tu aplicación para rastrear las solicitudes. OpenTelemetry ofrece soluciones de autoinstrumentación sin código para rastrear las solicitudes. Con OpenTelemetry, tiene la opción de utilizar soluciones de autoinstrumentación sin código para rastrear las solicitudes.
Código cero con instrumentaciones automáticas basadas OpenTelemetry
-
Uso de la AWS distribución para la instrumentación automática OpenTelemetry (ADOT) para Python: para obtener información sobre la instrumentación automática para aplicaciones de Python, consulte Seguimiento y métricas con la distribución para la AWS instrumentación
automática de Python. OpenTelemetry (Opcional) También puede habilitar CloudWatch Application Signals al instrumentar automáticamente sus aplicaciones AWS con la instrumentación automática de ADOT Python para monitorear el estado actual de las aplicaciones y realizar un seguimiento del rendimiento de las aplicaciones a largo plazo en comparación con sus objetivos comerciales. Application Signals le proporciona una visión unificada y centrada en las aplicaciones de sus aplicaciones, servicios y dependencias y lo ayuda a supervisar y evaluar el estado de las aplicaciones.
Instrumente sus aplicaciones manualmente
Puede instrumentar manualmente sus aplicaciones mediante el pip
comando.
Inicialización de la configuración de rastreo
Con la instrumentación automática de ADOT para Python
Puede utilizar la instrumentación automática de ADOT para Python para configurar automáticamente OpenTelemetry sus aplicaciones de Python. Al utilizar la instrumentación automática de ADOT, no es necesario realizar cambios manuales en el código para rastrear las solicitudes entrantes ni para rastrear bibliotecas como el AWS SDK o los clientes HTTP. Para obtener más información, consulte Seguimiento y métricas con la AWS distribución para la instrumentación automática de OpenTelemetry Python
La autoinstrumentación de ADOT para Python admite:
-
Muestreo remoto de rayos X a través de la variable de entorno
export OTEL_TRACES_SAMPLER=xray
-
Propagación del contexto de trazas de rayos X (habilitada de forma predeterminada)
-
Detección de recursos (la detección de recursos para los entornos de Amazon EC2, Amazon ECS y Amazon EKS está habilitada de forma predeterminada)
-
Las instrumentaciones de biblioteca automáticas para todas las OpenTelemetry instrumentaciones compatibles están habilitadas de forma predeterminada. Puede desactivarlas de forma selectiva a través de la variable de entorno.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
(todas están activadas por defecto) -
Creación manual de tramos
Desde complementos del servicio de X-Ray hasta proveedores de OpenTelemetry AWS recursos
El SDK de X-Ray incluye complementos que se pueden añadir xray_recorder
para capturar la información específica de la plataforma desde el servicio hospedado, como Amazon EC2, Amazon ECS y Elastic Beanstalk. Es similar a los proveedores de recursos, ya OpenTelemetry que captura la información como atributos de recursos. Hay varios proveedores de recursos disponibles para diferentes AWS plataformas.
-
Comience por instalar el paquete AWS de extensión,
pip install opentelemetry-sdk-extension-aws
-
Configure el detector de recursos deseado. El siguiente ejemplo muestra cómo configurar el proveedor de EC2 recursos de Amazon en el OpenTelemetry SDK.
from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.extension.aws.resource.ec2 import ( AwsEc2ResourceDetector, ) from opentelemetry.sdk.resources import get_aggregated_resources provider = TracerProvider( active_span_processor=span_processor, resource=get_aggregated_resources([ AwsEc2ResourceDetector(), ])) trace.set_tracer_provider(provider)
Rastreo de las solicitudes entrantes
AWS Instrumentación del SDK
Instrumentar las llamadas HTTP salientes mediante solicitudes
Soporte de instrumentación para otras bibliotecas
Puede encontrar la lista completa de instrumentaciones de biblioteca compatibles para OpenTelemetry Python en Bibliotecas, marcos, servidores de aplicaciones
También puedes buscar en el OpenTelemetry Registro si es OpenTelemetry compatible con la instrumentación. Consulte el Registro
Creación manual de datos de rastreo
Puede crear segmentos y subsegmentos utilizando xray_recorder
la aplicación Python. Para obtener más información, consulte Instrumentación manual del código Python. También puede añadir manualmente anotaciones y metadatos a los datos de rastreo.
Creación de tramos con el SDK OpenTelemetry
Usa la start_as_current_span
API para iniciar un intervalo y configúralo para crearlo. Para ver ejemplos sobre la creación de intervalos, consulta Cómo crearSERVER
tipo se convierten en segmentos de rayos X, mientras que otros se convierten en subsegmentos de rayos X.
from opentelemetry import trace from opentelemetry.trace import SpanKind import time tracer = trace.get_tracer("my.tracer.name") # Create a new span to track some work with tracer.start_as_current_span("parent", kind=SpanKind.SERVER) as parent_span: time.sleep(1) # Create a nested span to track nested work with tracer.start_as_current_span("child", kind=SpanKind.CLIENT) as child_span: time.sleep(2) # the nested span is closed when it's out of scope # Now the parent span is the current span again time.sleep(1) # This span is also closed when it goes out of scope
Añadir anotaciones y metadatos a las trazas con el SDK OpenTelemetry
El SDK de Python de X-Ray proporciona anotaciones put_annotation
y metadatos independientes APIs put_metadata
para añadir anotaciones y metadatos a una traza. En el OpenTelemetry SDK, las anotaciones y los metadatos son simplemente atributos de un intervalo que se agregan a través de la set_attribute
API.
Los atributos de intervalo que desee que sean anotaciones en un rastreo se agregan bajo la clave reservada, aws.xray.annotations
cuyo valor es una lista de pares de anotaciones clave-valor. Todos los demás atributos del intervalo se convierten en metadatos del segmento o subsegmento convertido.
Además, si utiliza el recopilador ADOT, puede configurar qué atributos de tramo deben convertirse en anotaciones de X-Ray especificándolos indexed_attributes
en la configuración del recopilador.
El siguiente ejemplo muestra cómo añadir anotaciones y metadatos a un rastreo mediante el SDK. OpenTelemetry
with tracer.start_as_current_span("parent", kind=SpanKind.SERVER) as parent_span: parent_span.set_attribute("TransactionId", "qwerty12345") parent_span.set_attribute("AccountId", "1234567890") # This will convert the TransactionId and AccountId to be searchable X-Ray annotations parent_span.set_attribute("aws.xray.annotations", ["TransactionId", "AccountId"]) with tracer.start_as_current_span("child", kind=SpanKind.CLIENT) as child_span: # The MicroTransactionId will be converted to X-Ray metadata for the child subsegment child_span.set_attribute("MicroTransactionId", "micro12345")
Instrumentación Lambda
Para monitorear sus funciones lambda en X-Ray, habilite X-Ray y agregue los permisos adecuados al rol de invocación de la función. Además, si está rastreando las solicitudes posteriores de su función, estaría instrumentando el código con el SDK de Python de X-Ray.
En OpenTelemetry el caso de X-Ray, se recomienda utilizar la capa lambda de CloudWatch Application Signals con Application Signals desactivada. Esto instrumentará automáticamente su función y generará intervalos para la invocación de la función y cualquier solicitud posterior de su función. Además del rastreo, si está interesado en usar Application Signals para monitorear el estado de su función, consulte Habilitar sus aplicaciones en Lambda.
-
Busque el ARN de la capa Lambda necesario para su función en AWS Lambda Layer for y agréguelo. OpenTelemetry ARNs
-
Defina las siguientes variables de entorno para su función.
-
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument
— Esto carga la instrumentación automática de la función -
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false
— Esto deshabilitará el monitoreo de las señales de la aplicación
-
Creación manual de tramos con instrumentación Lambda
Además, puede generar intervalos personalizados dentro de su función para realizar un seguimiento del trabajo. Puede hacerlo utilizando solo el opentelemetry-api
paquete junto con la autoinstrumentación de la capa lambda de Application Signals.
-
Incluya el
opentelemetry-api
como una dependencia en su función -
El siguiente fragmento de código es un ejemplo para generar intervalos personalizados
from opentelemetry import trace # Get the tracer (auto‑configured by the Application Signals layer) tracer = trace.get_tracer(__name__) def handler(event, context): # This span is a child of the layer's root span with tracer.start_as_current_span("my-custom-span") as span: span.set_attribute("key1", "value1") span.add_event("custom-event", {"detail": "something happened"}) # Any logic you want to trace result = some_internal_logic() return { "statusCode": 200, "body": result }