Condividi tramite


Migrazione da OpenCensus Python SDK e dall'utilità di esportazione OpenCensus di Monitoraggio di Azure per Python alla distribuzione OpenTelemetry Python

Nota

OpenCensus Python SDK è deprecato, ma Microsoft lo supporta fino al ritiro il 30 settembre 2024. È ora consigliabile l'offerta Python basata su OpenTelemetry e fornire indicazioni sulla migrazione.

Seguire questa procedura per eseguire la migrazione delle applicazioni Python alla distribuzione OpenTelemetry di Application Insights di Monitoraggio di Azure.

Avviso

Passaggio 1: disinstallare le librerie OpenCensus

Disinstallare tutte le librerie correlate a OpenCensus, inclusi tutti i pacchetti Pypi che iniziano con opencensus-*.

pip freeze | grep opencensus | xargs pip uninstall -y

Passaggio 2: rimuovere OpenCensus dal codice

Rimuovere tutte le istanze di OpenCensus SDK e l'utilità di esportazione OpenCensus di Monitoraggio di Azure dal codice.

Verificare la presenza di istruzioni di importazione che iniziano con opencensus per trovare tutte le integrazioni, gli esportatori e le istanze dell'API/SDK OpenCensus che devono essere rimosse.

Di seguito sono riportati esempi di istruzioni di importazione che devono essere rimossi.

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

from opencensus.ext.azure.log_exporter import AzureLogHandler

Passaggio 3: acquisire familiarità con API/SDK OpenTelemetry Python

La documentazione seguente fornisce informazioni sui prerequisiti di API/SDK OpenTelemetry Python.

Nota

OpenTelemetry Python e OpenCensus Python hanno aree API diverse, funzionalità di raccolta automatica e istruzioni di onboarding.

Passaggio 4: configurare la distribuzione OpenTelemetry di Monitoraggio di Azure

Seguire la pagina introduttiva per eseguire l'onboarding nella distribuzione OpenTelemetry di Monitoraggio di Azure.

Modifiche e limitazioni

Durante la migrazione da OpenCensus a OpenTelemetry possono verificarsi le modifiche e le limitazioni seguenti.

Supporto di Python < 3.7

Le soluzioni di monitoraggio basate su Python di OpenTelemetry supportano solo Python 3.7 e versioni successive, escluse le versioni di Python 2.7, 3.4, 3.5 e 3.6 supportate in precedenza da OpenCensus. È consigliabile eseguire l'aggiornamento per gli utenti che si trovano nelle versioni precedenti di Python perché, a partire dalla scrittura di questo documento, tali versioni hanno già raggiunto la fine del ciclo di vita. Gli utenti che non vogliono eseguire l'aggiornamento possono comunque usare le soluzioni OpenTelemetry, ma potrebbero riscontrare comportamenti imprevisti o di interruzione non supportati. In ogni caso, l'ultima versione supportata di opencensus-ext-azure esiste sempre e continua a funzionare per tali versioni, ma non vengono eseguite nuove versioni per tale progetto.

Configurazioni

OpenCensus Python ha fornito alcune opzioni di configurazione correlate alla raccolta e all'esportazione dei dati di telemetria. È possibile ottenere le stesse configurazioni e altro ancora usando le API e l'SDK OpenTelemetry Python. La distribuzione OpenTelemetry Python di Monitoraggio di Azure è più un'unica soluzione per le esigenze di monitoraggio più comuni per le applicazioni Python. Poiché la distribuzione incapsula API/SDK di OpenTelemetry, alcune configurazioni per casi d'uso più comuni potrebbero non essere attualmente supportate per la distribuzione. È invece possibile scegliere di eseguire l'onboarding nell'utilità di esportazione OpenTelemetry di Monitoraggio di Azure, che con API/SDK di OpenTelemetry deve essere in grado di soddisfare le esigenze di monitoraggio. Alcune di queste configurazioni includono:

  • Propagatori personalizzati
  • Campionatori personalizzati
  • Aggiunta di intervallo extra/processori di log/lettori di metriche

Coesione con funzioni di Azure

Per fornire funzionalità di traccia distribuita per le applicazioni Python che chiamano altre applicazioni Python all'interno di una funzione di Azure, è stato fornito il pacchetto opencensus-extension-azure-functions per consentire un grafico distribuito connesso.

Attualmente, le soluzioni OpenTelemetry per Monitoraggio di Azure non supportano questo scenario. Come soluzione alternativa, è possibile propagare manualmente il contesto di traccia nell'applicazione Funzioni di Azure, come illustrato nell'esempio seguente.

from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
  TraceContextTextMapPropagator

# Context parameter is provided for the body of the function
def main(req, context):
  functions_current_context = {
    "traceparent": context.trace_context.Traceparent,
    "tracestate": context.trace_context.Tracestate
  }
  parent_context = TraceContextTextMapPropagator().extract(
      carrier=functions_current_context
  )
  token = attach(parent_context)

  ...
  # Function logic
  ...
  detach(token)

Estensioni ed esportazioni

OpenCensus SDK offre modi per raccogliere ed esportare i dati di telemetria rispettivamente tramite integrazioni e utilità di esportazione OpenCensus. In OpenTelemetry le integrazioni sono ora denominate strumentazioni, mentre gli esportatori sono rimasti con la stessa terminologia. Le strumentazioni e le utilità di esportazione OpenTelemetry Python sono un superset di ciò che è stato fornito in OpenCensus, quindi in termini di copertura e funzionalità della libreria, le librerie OpenTelemetry sono un aggiornamento diretto. Per quanto riguarda la distribuzione di OpenTelemetry di Monitoraggio di Azure, include alcune delle più diffuse strumentazioni OpenTelemetry Python predefinite, in modo che non sia necessario alcun codice aggiuntivo. Microsoft supporta completamente queste strumentazioni.

Per quanto riguarda le altre strumentazioni OpenTelemetry Python che non sono incluse in questo elenco, gli utenti possono comunque strumentare manualmente con loro. Tuttavia, è importante notare che la stabilità e il comportamento non sono garantiti o supportati in questi casi. Pertanto, usarli a propria discrezione.

Se si vuole suggerire una libreria di strumentazione della community da includere nella distribuzione, pubblicare o votare un'idea nella community di feedback. Per gli esportatori, la distribuzione di OpenTelemetry di Monitoraggio di Azure viene fornita in bundle con l'utilità di esportazione OpenTelemetry di Monitoraggio di Azure. Se si desidera utilizzare anche altri esportatori, è possibile usarli con la distribuzione, come in questo esempio.

TelemetryProcessors

I processori di telemetria OpenCensus Python sono un potente meccanismo in cui gli utenti possono modificare i dati di telemetria prima che vengano inviati all'utilità di esportazione. Non esiste alcun concetto di TelemetryProcessor nel mondo OpenTelemetry, ma esistono API e classi che è possibile usare per replicare lo stesso comportamento.

Impostazioni del nome del ruolo cloud e l'istanza del ruolo cloud

Seguire le istruzioni riportate qui per impostare il nome del ruolo cloud e l'istanza del ruolo cloud per i dati di telemetria. La distribuzione di Monitoraggio di Azure OpenTelemetry recupera automaticamente i valori dalle variabili di ambiente e riempie i rispettivi campi.

Modifica di intervalli con SpanProcessor

Presto disponibili.

Modifica delle metriche con Visualizzazioni

Presto disponibili.

Contatori delle prestazioni

L'utilità di esportazione di Monitoraggio di Azure OpenCensus Python ha raccolto automaticamente metriche correlate al sistema e alle prestazioni denominate contatori delle prestazioni. Queste metriche vengono visualizzate nell'istanza performanceCounters di Application Insights. In OpenTelemetry queste metriche non vengono più inviate in modo esplicito a performanceCounters. Le metriche correlate alle richieste in ingresso/in uscita sono disponibili nelle metriche standard. Se si vuole che OpenTelemetry raccolga automaticamente le metriche correlate al sistema, è possibile usare la strumentazionedelle metriche di sistema sperimentale, fornita dalla community di OpenTelemetry Python. Questo pacchetto è sperimentale e non ufficialmente supportato da Microsoft.

Risoluzione dei problemi

Passaggio 1: abilitare la registrazione diagnostica

L'utilità di esportazione del Monitoraggio di Azure utilizza EventSource per la registrazione interna. I log dell'utilità di esportazione sono disponibili per qualsiasi EventListener mediante il consenso esplicito all'origine denominata OpenTelemetry-AzureMonitor-Exporter. Per conoscere i passaggi per la risoluzione dei problemi, vedere Risoluzione dei problemi OpenTelemetry su GitHub.

Passaggio 2: testare la connettività tra l'host dell'applicazione e il servizio di inserimento dati

Gli SDK e gli agenti di Application Insights inviano dati di telemetria per l'inserimento, ad esempio chiamate REST, agli endpoint di inserimento dati. Per testare la connettività dal server Web o dal computer host dell'applicazione con gli endpoint del servizio di inserimento dati, usare i comandi cURL o le richieste REST non elaborate da PowerShell. Per altre informazioni, vedere Risolvere i problemi di dati di telemetria mancanti delle applicazioni in Application Insights per Monitoraggio di Azure.

Problemi noti

Gli elementi seguenti sono problemi noti per le utilità di esportazione OpenTelemetry di Monitoraggio di Azure:

  • Nome dell'operazione mancante nei dati di telemetria delle dipendenze. La mancanza del nome dell'operazione causa errori e influisce negativamente sull'esperienza della scheda prestazioni.

  • Modello dispositivo mancante nei dati di telemetria delle richieste e delle dipendenze. La mancanza del modello dispositivo influisce negativamente sull'analisi della coorte del dispositivo.

Supporto tecnico

Selezionare la scheda del linguaggio scelto per scoprire le opzioni di supporto.

Feedback su OpenTelemetry

Per inviare un feedback: