Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migrare a Python OpenTelemetry
Questa guida ti aiuta a migrare le applicazioni Python da X-Ray SDK alla strumentazione. OpenTelemetry Copre approcci di strumentazione sia automatici che manuali, con esempi di codice per scenari comuni.
Soluzioni di strumentazione automatica a codice zero
Con X-Ray SDK, era necessario modificare il codice dell'applicazione per tracciare le richieste. OpenTelemetry offre soluzioni di strumentazione automatica a codice zero per tracciare le richieste. Con OpenTelemetry, hai la possibilità di utilizzare soluzioni di strumentazione automatica a codice zero per tracciare le richieste.
Codice zero con strumentazione automatica basata OpenTelemetry
-
(Facoltativo) È inoltre possibile abilitare CloudWatch Application Signals durante la strumentazione automatica delle applicazioni AWS con la strumentazione automatica ADOT Python per monitorare lo stato attuale delle applicazioni e tenere traccia delle prestazioni delle applicazioni a lungo termine rispetto agli obiettivi aziendali. Application Signals ti offre una visione unificata e incentrata sulle applicazioni di applicazioni, servizi e dipendenze e ti aiuta a monitorare e valutare lo stato delle applicazioni.
Strumenta manualmente le tue applicazioni
È possibile strumentare manualmente le applicazioni utilizzando il comando. pip
Tracciamento dell'inizializzazione della configurazione
Con strumentazione automatica ADOT per Python
Puoi usare la strumentazione automatica ADOT per Python per configurare OpenTelemetry automaticamente le tue applicazioni Python. Utilizzando la strumentazione automatica ADOT, non è necessario apportare modifiche manuali al codice per tracciare le richieste in arrivo o tracciare librerie come i AWS client SDK o HTTP. Per ulteriori informazioni, consulta Tracciamento e metriche con la distribuzione AWS per Python OpenTelemetry Auto-Instrumentation
La strumentazione automatica ADOT per Python supporta:
-
Campionamento remoto a raggi X tramite la variabile di ambiente
export OTEL_TRACES_SAMPLER=xray
-
Propagazione contestuale delle tracce X-Ray (abilitata per impostazione predefinita)
-
Rilevamento delle risorse (il rilevamento delle risorse per gli ambienti Amazon EC2, Amazon ECS e Amazon EKS è abilitato per impostazione predefinita)
-
Le strumentazioni di libreria automatiche per tutte le strumentazioni supportate sono OpenTelemetry abilitate per impostazione predefinita. È possibile disabilitarla in modo selettivo tramite la variabile di ambiente.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
(tutti sono abilitati di default) -
Creazione manuale di Spans
Dai plug-in dei servizi X-Ray ai provider di risorse OpenTelemetry AWS
L'SDK X-Ray fornisce plug-in che è possibile aggiungere per acquisire informazioni specifiche sulla piattaforma dal servizio ospitato come Amazon, EC2 Amazon ECS ed Elastic Beanstalk. xray_recorder
È simile ai Resource Providers in quanto acquisisce le informazioni come attributi di risorse. OpenTelemetry Sono disponibili più Resource Provider per diverse AWS piattaforme.
-
Inizia installando il pacchetto di AWS estensione,
pip install opentelemetry-sdk-extension-aws
-
Configura il rilevatore di risorse desiderato. L'esempio seguente mostra come configurare il provider di EC2 risorse Amazon in 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)
Tracciamento delle richieste in arrivo
AWS Strumentazione SDK
Strumentazione delle chiamate HTTP in uscita tramite richieste
Supporto alla strumentazione per altre librerie
Puoi trovare l'elenco completo delle strumentazioni di libreria supportate per OpenTelemetry Python in Librerie supportate, framework, server
In alternativa, puoi cercare OpenTelemetry nel Registro per scoprire se supporta la strumentazione. OpenTelemetry Consulta il Registro
Creazione manuale di dati di traccia
Puoi creare segmenti e sottosegmenti usando la nella xray_recorder
tua applicazione Python. Per ulteriori informazioni, consulta Strumentazione manuale del codice Python. Puoi anche aggiungere manualmente annotazioni e metadati ai dati di traccia.
Creazione di intervalli con SDK OpenTelemetry
Usa l'start_as_current_span
API per avviare un intervallo e impostala per la creazione di intervalli. Per esempi sulla creazione di intervalli, consulta Creazione di intervalli.SERVER
tipo vengono convertite in segmenti a raggi X, mentre le altre vengono convertite in sottosegmenti a raggi 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
Aggiungere annotazioni e metadati alle tracce con SDK OpenTelemetry
L'X-Ray Python SDK fornisce informazioni separate APIs e consente di aggiungere annotazioni put_annotation
e put_metadata
metadati a una traccia. In OpenTelemetry SDK, le annotazioni e i metadati sono semplicemente attributi su un intervallo, aggiunti tramite l'API. set_attribute
Gli attributi Span che desideri siano annotazioni su una traccia vengono aggiunti sotto la chiave riservata il aws.xray.annotations
cui valore è un elenco di coppie di annotazioni chiave-valore. Tutti gli altri attributi span diventano metadati sul segmento o sottosegmento convertito.
Inoltre, se si utilizza il collettore ADOT, è possibile configurare quali attributi span devono essere convertiti in annotazioni X-Ray specificando nella configurazione del collettore. indexed_attributes
L'esempio seguente mostra come aggiungere annotazioni e metadati a una traccia utilizzando 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")
Strumentazione Lambda
Per monitorare le tue funzioni lambda su X-Ray, abiliti X-Ray e hai aggiunto le autorizzazioni appropriate al ruolo di invocazione della funzione. Inoltre, se stai tracciando le richieste downstream della tua funzione, dovresti strumentalizzare il codice con X-Ray Python SDK.
Con OpenTelemetry for X-Ray, si consiglia di utilizzare il livello lambda CloudWatch Application Signals con Application Signals disattivato. Questo strumenterà automaticamente la tua funzione e genererà intervalli per l'invocazione della funzione e qualsiasi richiesta derivante dalla tua funzione. Oltre al tracciamento, se sei interessato a utilizzare Application Signals per monitorare lo stato della tua funzione, consulta Abilitare le tue applicazioni su Lambda.
-
Trova l'ARN del layer Lambda richiesto per la tua funzione da AWS Lambda Layer for e aggiungilo. OpenTelemetry ARNs
-
Imposta le seguenti variabili di ambiente per la tua funzione.
-
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument
— Questo carica la strumentazione automatica per la funzione -
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false
— Ciò disabiliterà il monitoraggio dei segnali applicativi
-
Creazione manuale di campate con la strumentazione Lambda
Inoltre, puoi generare intervalli personalizzati all'interno della tua funzione per tenere traccia del lavoro. È possibile farlo utilizzando solo il opentelemetry-api
pacchetto in combinazione con la strumentazione automatica del livello lambda di Application Signals.
-
Includili
opentelemetry-api
come dipendenza nella tua funzione -
Il seguente frammento di codice è un esempio per generare intervalli personalizzati
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 }