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
- Il blog "Come eseguire la migrazione a OpenTelemetry" di OpenCensus non è applicabile agli utenti di Monitoraggio di Azure.
- Lo shim OpenCensus di OpenTelemetry non è consigliato o supportato da Microsoft.
- Di seguito viene descritto l'unico piano di migrazione per i clienti di Monitoraggio di Azure.
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.
- Documentazione di OpenTelemetry Python
- Documentazione sulla distribuzione di Monitoraggio di Azure sulla configurazione e i dati di telemetria
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.
Supporto tecnico
Per esaminare i passaggi di risoluzione dei problemi, le opzioni di supporto o per fornire commenti e suggerimenti su OpenTelemetry, vedere Risoluzione dei problemi, supporto e feedback di OpenTelemetry per Application Insights per Monitoraggio di Azure.