Libreria client di distribuzione Opentelemetry di Monitoraggio di Azure per Python - versione 1.1.1
La distribuzione di Monitoraggio di Azure di Opentelemetry Python offre più componenti installabili disponibili per una soluzione di monitoraggio di Monitoraggio di Azure Opentelemetry. Consente di instrumentare le applicazioni Python per acquisire e segnalare i dati di telemetria a Monitoraggio di Azure tramite gli strumenti di esportazione di Monitoraggio di Azure.
Questa distribuzione installa automaticamente le librerie seguenti:
- Utilità di esportazione OpenTelemetry di Monitoraggio di Azure
- Sottoinsieme di strumentazioni OpenTelemetry supportate ufficialmente, come indicato di seguito.
Strumentazioni ufficialmente supportate
Le strumentazioni OpenTelemetry consentono la raccolta automatica di richieste inviate dalle librerie instrumentate sottostanti. Di seguito è riportato un elenco di strumentazioni OpenTelemetry incluse nella distribuzione di Monitoraggio di Azure. Queste strumentazioni sono abilitate per impostazione predefinita. Per informazioni su come rifiutare esplicitamente queste strumentazioni, vedere la sezione Utilizzo di seguito.
Strumentazione | Nome della libreria supportato | Versioni supportate |
---|---|---|
Azure Core Tracing OpenTelemetry | azure_sdk |
|
Strumentazione Django OpenTelemetry | Django | Link |
Strumentazione FastApi OpenTelemetry | fastapi | Link |
Strumentazione Flask OpenTelemetry | Flask | Link |
Strumentazione Psycopg2 OpenTelemetry | psycopg2 | Link |
Strumentazione richieste OpenTelemetry | requests | Link |
Strumentazione URLLib di OpenTelemetry | urllib | Tutti |
Strumentazione di OpenTelemetry UrlLib3 | urllib3 | Link |
Se si vuole aggiungere il supporto per un'altra strumentazione OpenTelemetry, inviare una richiesta di funzionalità. Nel frattempo, è possibile usare manualmente la strumentazione OpenTelemetry tramite LE API (ad esempio instrument()
) nel codice. Per un esempio, vedere questo esempio.
Concetti chiave
Questo pacchetto aggrega una serie di componenti OpenTelemetry e Monitoraggio di Azure per abilitare la raccolta e l'invio di dati di telemetria a Monitoraggio di Azure. Per la strumentazione MANUAL, usare la configure_azure_monitor
funzione . La strumentazione AUTOMATICA non è ancora supportata.
Gli strumenti di esportazione OpenTelemetry di Monitoraggio di Azure sono i componenti principali per eseguire questa operazione. Sarà possibile usare gli strumenti di esportazione e le relative API direttamente tramite questo pacchetto. Per informazioni sul funzionamento dei componenti openTelemetry e Monitoraggio di Azure per abilitare la raccolta e l'esportazione dei dati di telemetria, vedere la documentazione dell'utilità di esportazione.
Attualmente, tutte le strumentazioni disponibili in OpenTelemetry si trovano in uno stato beta, ovvero non sono stabili e potrebbero avere modifiche di rilievo in futuro. Si stanno facendo sforzi per spingere questi verso uno stato più stabile.
Introduzione
Prerequisiti
Per usare questo pacchetto, è necessario disporre di:
- Sottoscrizione di Azure. Creare un account gratuito
- Monitoraggio di Azure - Come usare Application Insights
- Opentelemetry SDK - Opentelemetry SDK per Python
- Python 3.7 o versione successiva - Installare Python
Installare il pacchetto
Installare la distribuzione Opentelemetry di Monitoraggio di Azure con pip:
pip install azure-monitor-opentelemetry
Utilizzo
È possibile usare configure_azure_monitor
per configurare la strumentazione per l'app in Monitoraggio di Azure. configure_azure_monitor
supporta gli argomenti facoltativi seguenti. Tutti i parametri pass-in hanno la priorità su tutte le variabili di ambiente correlate.
Parametro | Descrizione | Variabile di ambiente |
---|---|---|
connection_string |
Il stringa di connessione per la risorsa di Application Insights. Il stringa di connessione verrà popolato automaticamente dalla APPLICATIONINSIGHTS_CONNECTION_STRING variabile di ambiente se non viene passato in modo esplicito. |
APPLICATIONINSIGHTS_CONNECTION_STRING |
logger_name |
Nome del logger Python in cui vengono raccolti i dati di telemetria. | N/A |
instrumentation_options |
Dizionario annidato che determina quali strumentazioni abilitare o disabilitare. Le strumentazioni vengono definite dai relativi nomi di libreria. Ad esempio, {"azure_sdk": {"enabled": False}, "flask": {"enabled": False}, "django": {"enabled": True}} disabiliterà La traccia di Base di Azure e la strumentazione Flask, ma lasceranno Django e le altre strumentazioni predefinite abilitate. La OTEL_PYTHON_DISABLED_INSTRUMENTATIONS variabile di ambiente illustrata di seguito può essere usata anche per disabilitare le strumentazioni. |
N/A |
È possibile configurare ulteriormente con le variabili di ambiente OpenTelemetry , ad esempio: | Variabile di ambiente | Descrizione | |-------------|----------------------| | OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES | Specifica la risorsa OpenTelemetry associata all'applicazione. | | OTEL_LOGS_EXPORTER
| Se impostato su None
, disabilita la raccolta e l'esportazione dei dati di telemetria di registrazione. | | OTEL_METRICS_EXPORTER
| Se impostato su None
, disabilita la raccolta e l'esportazione dei dati di telemetria delle metriche. | | OTEL_TRACES_EXPORTER
| Se impostato su None
, disabilita la raccolta e l'esportazione dei dati di telemetria di traccia distribuiti. | | OTEL_BLRP_SCHEDULE_DELAY
| Specifica l'intervallo di esportazione della registrazione in millisecondi. Il valore predefinito è 5000. | | OTEL_BSP_SCHEDULE_DELAY
| Specifica l'intervallo di esportazione della traccia distribuita in millisecondi. Il valore predefinito è 5000. | | OTEL_TRACES_SAMPLER_ARG
| Specifica il rapporto tra i dati di telemetria di traccia distribuita da campionare. I valori accettati sono compresi nell'intervallo [0,1]. Il valore predefinito è 1.0, ovvero non viene campionata alcuna telemetria. | | OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
| Specifica quale delle strumentazioni supportate da disabilitare. Le strumentazioni disabilitate non verranno instrumentate come parte di configure_azure_monitor
. Tuttavia, possono comunque essere instrumentati manualmente con instrument()
direttamente. Accetta un elenco delimitato da virgole di nomi di librerie minuscole. Ad esempio, impostare su "psycopg2,fastapi"
per disabilitare le strumentazioni Psycopg2 e FastAPI. L'impostazione predefinita è un elenco vuoto, abilitando tutte le strumentazioni supportate. | | OTEL_EXPERIMENTAL_RESOURCE_DETECTORS
| Variabile di ambiente OpenTelemetry sperimentale usata per specificare i rilevatori di risorse da usare per generare attributi di risorsa. Si tratta di una funzionalità sperimentale e il nome di questa variabile e il relativo comportamento possono cambiare in modo non compatibile con le versioni precedenti. L'impostazione predefinita è "azure_app_service,azure_vm" per abilitare i rilevatori di risorse di Azure per Servizio app di Azure e macchina virtuale di Azure. Per aggiungere o rimuovere rilevatori di risorse specifici, impostare di conseguenza la variabile di ambiente. Per altre informazioni, vedere la documentazione di Rilevamento risorse Python openTelemetry . |
Configurazioni di OpenTelemetry Exporter di Monitoraggio di Azure
È possibile passare i parametri di configurazione dell'utilità di esportazione OpenTelemetry di Monitoraggio di Azure direttamente in configure_azure_monitor
. Vedere altre configurazioni correlate all'esportazione qui.
...
configure_azure_monitor(
connection_string="<your-connection-string>",
disable_offline_storage=True,
)
...
Esempio
Gli esempi sono disponibili qui per illustrare come usare le opzioni di configurazione precedenti.
Monitoraggio in Funzioni di Azure
Correlazione delle tracce
Le richieste in ingresso rilevate provenienti dall'applicazione Python ospitata in Funzioni di Azure non verranno correlate automaticamente con i dati di telemetria rilevati al suo interno. È possibile ottenere manualmente la correlazione di traccia estraendolo TraceContext
direttamente, come illustrato di seguito:
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
Problemi di registrazione
Il ruolo di lavoro Funzioni di Azure invia i dati di telemetria di registrazione senza l'uso dell'SDK di Monitoraggio di Azure (la chiamata a configure_azure_monitor()
). In questo modo è possibile che si verifichino voci di telemetria duplicate durante l'invio dei dati di telemetria di registrazione. Si consiglia ai clienti di usare esclusivamente l'SDK perché consentirà dati di telemetria e funzionalità molto più avanzati rispetto all'uso di quello integrato fornito dal ruolo di lavoro Funzioni di Azure. È possibile disattivare il logger di telemetria Funzioni di Azure cancellando l'elenco dei gestori del logger.
...
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
...
Assicurarsi di chiamare i logger precedenti o la chiamata a configure_azure_monitor()
è configurata.
È anche possibile disabilitare la registrazione tramite Funzioni di Azure configurazione.
v2.x+
...
{
"logging": {
...
"logLevel": {
"default": "None",
...
}
}
}
...
v1.x
...
{
"logger": {
"categoryFilter": {
"defaultLevel": "None",
...
}
}
}
...
Risoluzione dei problemi
L'utilità di esportazione genera eccezioni definite in Azure Core.
Passaggi successivi
Per altre informazioni, vedere la documentazione .
Contributo
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.
Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.
Documentazione aggiuntiva
Azure SDK for Python