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.
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.
- Per i problemi relativi al supporto di Azure, aprire un ticket di supporto tecnico di Azure.
- Per i problemi relativi a OpenTelemetry, contattare direttamente la community .NET di OpenTelemetry.
- Per un elenco dei problemi aperti relativi all'utilità di esportazione di Monitoraggio di Azure, vedere la pagina Problemi di GitHub.
Feedback su OpenTelemetry
Per inviare un feedback:
- Compilare il questionario feedback clienti della community OpenTelemetry.
- Raccontare di sé a Microsoft unendosi alla Community Early Adopter di OpenTelemetry.
- Interagire con altri utenti di Monitoraggio di Azure nella Microsoft Tech Community.
- Inviare una richiesta relativa alle funzionalità nel forum feedback di Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per