Vai al contenuto

Collegamento con Application Insights in modalità “not Local auth” con OpenTelemetry

Scopri come utilizzare OpenTelemetry per connetterti ad Application Insights senza autenticazione locale.

Nel panorama attuale delle applicazioni web e delle funzioni app basate su Azure, è comune la necessità di interfacciarsi con Application Insights per registrare vari livelli di log. Questi dati possono poi essere esaminati e filtrati all’interno di Log Analytics Workspace. Con l’avanzare della tecnologia, è fondamentale adottare metodi di autenticazione e monitoraggio sempre più sicuri e aggiornati. Questo articolo esplora come utilizzare OpenTelemetry per connettere le applicazioni a Application Insights quando la funzionalità ‘Local Authentication’ è disabilitata.

Panoramica

Il monitoraggio delle applicazioni attraverso Application Insights è una prassi consolidata per molte aziende che utilizzano Azure. Tuttavia, con la crescente consapevolezza della cyber security, molte aziende hanno scelto di disabilitare la `Local Authentication` per aumentare la sicurezza dei loro dati. In questo contesto, emerge la necessità di utilizzare strumenti come OpenTelemetry, in grado di offrire una soluzione moderna e supportata a lungo termine. Vale la pena notare che il pacchetto OpenCensus non sarà più supportato dopo settembre 2024.

Utilizzando OpenTelemetry

La comunità degli sviluppatori sta gradualmente spostandosi verso OpenTelemetry, considerata l’alternativa futuribile e supportata da Microsoft. Per cominciare, l’integrazione con Application Insights senza utilizzare l’autenticazione locale può essere realizzata tramite Managed Identity. Questa scelta non solo incrementa la sicurezza, ma garantisce anche una maggiore compatibilità futura.

Passo 1: Abilitazione dell’Identità Gestita

Per prima cosa, è necessario configurare l’applicazione Azure (sia essa una Web App o una Function App) per utilizzare una Managed Identity. In questo esempio, utilizzeremo un’identità gestita assegnata dal sistema.

Nel “Role Assignment”, sarà necessario aggiungere il ruolo di “Monitoring Metrics Publisher” alla risorsa Application Insights di destinazione. Questo garantisce che l’identità gestita abbia i permessi necessari per accedere ai dati di monitoraggio.

Passo 2: Configurazione del Codice

Per implementare questa configurazione a livello di codice, possiamo utilizzare l’architettura Python della Function App. La configurazione può essere fatta sia per versioni V1 che V2 della Function App.

Ecco un esempio del file requirements.txt:

# Method 2: opentelemetryazure-monitor-opentelemetryazure-identity

Nell’implementazione Python, possiamo utilizzare il seguente codice:

# Method 2: opentelemetryfrom azure.monitor.opentelemetry import configure_azure_monitorfrom logging import INFO, getLoggerfrom azure.identity import ManagedIdentityCredentialcredential = ManagedIdentityCredential()configure_azure_monitor(    connection_string='InstrumentationKey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;IngestionEndpoint=https://XXXXXX-X.in.applicationinsights.azure.com/;LiveEndpoint=https://XXXXXX.livediagnostics.monitor.azure.com/;ApplicationId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',    credential=credential)# Method 2: opentelemetrylogger2 = getLogger(__name__)logger2.setLevel(INFO)logger2.info("Method 2: opentelemetry")logger2.handlers.clear()

La stringa di connessione (connection_string) può essere ottenuta dalla pagina di overview di Application Insights.

Passo 3: Deployment e Test

Dopo aver completato il deployment della Function App, è possibile utilizzare lo strumento online Code+Test disponibile nel portale Azure per verificare che i log siano correttamente inviati a Application Insights.

Una volta configurato, sarà possibile visualizzare i log direttamente all’interno di Application Insights, confermando il corretto funzionamento della configurazione.

Riferimenti