Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida illustra come abilitare Monitoraggio di Azure Application Insights per i carichi di lavoro Servizio Azure Kubernetes (AKS) senza modificare il codice sorgente.
Illustra la preparazione di un cluster, l'onboarding delle distribuzioni, il riavvio delle distribuzioni e la visualizzazione delle metriche delle prestazioni dell'applicazione. Questi passaggi strumentano automaticamente i pod dell'applicazione iniettando la distribuzione OpenTelemetry di Monitoraggio di Azure per generare telemetria. Per altre informazioni sulla strumentazione automatica e sui relativi vantaggi, vedere Che cos'è la strumentazione automatica per Application Insights di Monitoraggio di Azure?
Annotazioni
Per partecipare all'anteprima pubblica limitata dell'autoinstrumentazione per .NET o Python, consultare Abilitare l'autoinstrumentazione AKS per Python e .NET (anteprima limitata).
Prerequisiti
- Un cluster AKS che esegue una distribuzione Kubernetes che usa Java o Node.js nel cloud pubblico Azure
- Una risorsa di Application Insights basata sull'area di lavoro.
- interfaccia della riga di comando di Azure 2.60.0 o versione successiva. Per altre informazioni, vedere Come installare l'interfaccia della riga di comando di Azure, Quale versione dell'interfaccia della riga di comando di Azure è installata? e Come aggiornare l'interfaccia della riga di comando di Azure.
Avviso
Questa funzionalità supporta solo i pool di nodi Linux. I pool di nodi Windows non sono supportati.
Preparare un cluster
È possibile preparare un cluster usando il portale di Azure o interfaccia della riga di comando di Azure.
Usare il portale di Azure per preparare un cluster.
Distribuzioni a bordo
È possibile eseguire l'onboarding delle distribuzioni in uno di due modi: a livello di spazio dei nomi o per distribuzione. Usare il metodo a livello di spazio dei nomi per eseguire l'onboarding di tutte le distribuzioni all'interno di uno spazio dei nomi. Per l'onboarding selettivo o configurato in modo variabile su più distribuzioni, utilizzare l'approccio per distribuzione.
Onboarding a livello di spazio dei nomi
- Portale di Azure
- YAML
Utilizzare il portale di Azure per l'onboarding della distribuzione a livello di namespace.
- Nel riquadro Spazi dei nomi selezionare lo spazio dei nomi da strumentare.
- Selezionare Monitoraggio applicazioni.
- Selezionare le lingue da instrumentare.
- Lasciare deselezionata la casella Esegui il riavvio di tutte le implementazioni. È consigliabile riavviare manualmente le distribuzioni in un secondo momento.
-
Seleziona Configura.
- Osservare lo stato di avanzamento del monitoraggio delle applicazioni e attendere il completamento.
Annotazioni
- Le distribuzioni interessate devono essere riavviate prima che le modifiche siano effettive.
- Se si osservano errori di avanzamento, riavviare manualmente le distribuzioni.
- Rivedere la sezione Monitoraggio applicazioni .
- Verificare lo stato "instrumentato" per ciascun spazio dei nomi nella distribuzione.
Onboarding per singola distribuzione
Usare l'onboarding per singola distribuzione per assicurarsi che le distribuzioni siano dotate di linguaggi specifici o per indirizzare i dati di telemetria a risorse separate di Application Insights.
Creare una risorsa personalizzata di Strumentazione univoca per ogni scenario. Evitare di usare il nome
default, che viene utilizzato per l'onboarding a livello di spazio dei nomi.Creare risorse personalizzate Instrumentation per configurare Application Insights in ogni namespace. Aggiorna
applicationInsightsConnectionStringin modo che contenga la stringa di connessione della tua risorsa di Application Insights.Suggerimento
È possibile recuperare il stringa di connessione dalla pagina di panoramica della risorsa di Application Insights.
apiVersion: monitor.azure.com/v1 kind: Instrumentation metadata: name: cr1 namespace: mynamespace1 spec: settings: autoInstrumentationPlatforms: [] destination: # required applicationInsightsConnectionString: "InstrumentationKey=11111111-1111-1111-1111-111111111111;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"Come minimo, è necessaria la configurazione seguente:
-
spec.destination.applicationInsightsConnectionString: la stringa di connessione di una risorsa di Application Insights.
-
Associare ogni distribuzione alla risorsa personalizzata appropriata usando le annotazioni. L'annotazione sostituisce l'impostazione della lingua nella risorsa personalizzata.
Importante
Per evitare di aggiungerli alle annotazioni della distribuzione per errore, aggiungere annotazioni al
spec.template.metadata.annotationslivello della distribuzione.Esempi:
- Java:
instrumentation.opentelemetry.io/inject-java: "cr1" - Node.js:
instrumentation.opentelemetry.io/inject-nodejs: "cr1"
Inserire le annotazioni come indicato di seguito.
apiVersion: apps/v1 kind: Deployment ... spec: template: metadata: annotations: instrumentation.opentelemetry.io/inject-nodejs: "cr1"Suggerimento
Riavviare le distribuzioni per rendere effettive le impostazioni.
- Java:
Onboarding in modalità mista
Usare la modalità mista quando la maggior parte delle distribuzioni usa una configurazione predefinita e alcune distribuzioni richiedono configurazioni diverse.
- Implementare l'onboarding a livello di spazio dei nomi per definire la configurazione predefinita.
- Creare configurazioni di onboarding per singola distribuzione per sostituire la configurazione predefinita per risorse specifiche.
Riavviare la distribuzione
È possibile riavviare una distribuzione usando il portale di Azure o la riga di comando di Kubernetes (kubectl).
Eseguire il comando seguente dopo aver creato tutte le risorse personalizzate e facoltativamente annotare le distribuzioni.
kubectl rollout restart deployment <deployment-name> -n mynamespace1
Questo comando attiva la strumentazione automatica, abilitando Application Insights. È possibile verificare che Application Insights sia abilitato generando traffico e passando alla risorsa. La tua app è rappresentata come un ruolo cloud nelle esperienze di Application Insights. È possibile usare tutte le esperienze di Application Insights, ad eccezione delle metriche attive e delle Code Analysis. Per altre informazioni sulle esperienze di Application Insights disponibili, vedere Esperienze di Application Insights.
Visualizzare le metriche delle prestazioni dell'applicazione in AKS
Quando si strumentano automaticamente i carichi di lavoro, le metriche delle prestazioni dell'applicazione vengono visualizzate direttamente all'interno dei pannelli delle risorse del servizio Azure Kubernetes. È possibile vedere come viene eseguita l'applicazione senza uscire dal cluster. Queste visualizzazioni mostrano un numero ristretto di metriche altamente indicative per il triage. Usare Application Insights per il monitoraggio completo delle prestazioni delle applicazioni.Use Application Insights for full Application Performance Monitoring (APM).
Ogni ambito mostra tre metriche:
- Tempo di risposta del server: latenza e velocità di risposta delle richieste in ingresso.
- Richieste server: carico dell'applicazione e volume di traffico.
- Errori: errori e richieste non riuscite.
Queste metriche vengono visualizzate in tre ambiti:
- Spazio dei nomi: il riquadro Metriche delle prestazioni dell'applicazione nella panoramica dello spazio dei nomi aggrega per carico di lavoro, con il tempo medio di risposta del server superiore, le richieste principali del server e le richieste non riuscite più elevate.
- Carico di lavoro (distribuzione): la panoramica della distribuzione mostra le serie temporali relative a tutti i pod del carico di lavoro, con il collegamento diretto Visualizza in Application Insights per il monitoraggio delle prestazioni applicative completo.
- Pod: la panoramica del pod mostra gli stessi grafici delle serie temporali limitati a un singolo pod.
Visualizzare le metriche nell'ambito dello spazio dei nomi
- Dal cluster del servizio Azure Kubernetes, selezionare nel riquadro di spostamento a sinistra Risorse Kubernetes>Spazi dei nomi.
- Selezionare lo spazio dei nomi che contiene i carichi di lavoro strumentati.
- Individuare il riquadro Metriche delle prestazioni dell'applicazione nella panoramica dello spazio dei nomi.
Visualizzare le metriche nell'ambito del carico di lavoro
- Dal cluster del servizio Azure Kubernetes, selezionare nel riquadro di spostamento a sinistra Carichi di lavoro>Distribuzioni.
- Selezionare una distribuzione instrumentata.
- Esaminare i grafici delle serie temporali nella panoramica della distribuzione: Tempo medio di risposta del server, Richieste server e Richieste non riuscite.
- Selezionare Visualizza in Application Insights per aprire il carico di lavoro nell'esperienza completa di Application Insights.
Visualizzare le metriche nell'ambito pod
- Dalla panoramica della distribuzione, scorrere fino alla sezione Carichi di lavoro e selezionare la scheda Pods.
- Selezionare il nome del pod per aprire la panoramica del pod.
- Esaminare i grafici delle serie temporali nella panoramica del pod, con ambito limitato a tale pod: Tempo medio di risposta del server, Richieste server e Richieste non riuscite.
- Selezionare Visualizza in Application Insights in qualsiasi grafico per aprire il pod nell'esperienza Application Insights completa.
Per un'analisi APM completa, incluse le tracce distribuite, le transazioni end-to-end e i pannelli Errori e Prestazioni, usa la panoramica di Application Insights.
Rimuovere la strumentazione automatica per AKS
È possibile rimuovere l'autoinstrumentazione di AKS usando interfaccia della riga di comando di Azure.
Suggerimento
- La rimozione dell'autoinstrumentazione di AKS tramite interfaccia della riga di comando di Azure la rimuove dall'intero cluster.
- Per rimuovere la strumentazione automatica da un singolo spazio dei nomi, eliminare la risorsa personalizzata di strumentazione associata. Ad esempio:
kubectl delete instrumentation <instrumentation-name> -n <namespace-name>.
Assicurarsi di non avere distribuzioni instrumentate. Per annullare la distribuzione instrumentata, rimuovere la risorsa personalizzata di Strumentazione associata ed eseguire kubectl rollout restart nella distribuzione. Eseguire quindi il comando seguente.
az aks update --resource-group={resource_group} --name={cluster_name} --disable-azure-monitor-app-monitoring
Annotazioni
Se le distribuzioni strumentate rimangono dopo la disabilitazione della funzionalità, continuano a essere strumentate fino alla loro ridistribuzione nello stato originale non strumentato o fino alla loro eliminazione.
Annotations
Le annotazioni consentono di personalizzare il comportamento di strumentazione automatica a livello di distribuzione, inclusa la disabilitazione della strumentazione per distribuzioni specifiche e l'abilitazione della raccolta dei log applicazioni in Application Insights.
Disabilitazione dell'autoinstrumentazione
Le annotazioni seguenti disabilitano l'strumentazione automatica:
Java:
instrumentation.opentelemetry.io/inject-javaNode.js:
instrumentation.opentelemetry.io/inject-nodejsinstrumentation.opentelemetry.io/inject-java: "false"
Per riattivare l'autoinstrumentazione dopo averla disabilitata, aggiungere le annotazioni.
instrumentation.opentelemetry.io/inject-java: "true"
Inserire le annotazioni come indicato di seguito.
apiVersion: apps/v1
kind: Deployment
...
spec:
template:
metadata:
annotations:
instrumentation.opentelemetry.io/inject-java: "false"
Abilitazione di log in Application Insights
È possibile raccogliere i log in Application Insights come aggiunta o sostituzione dei log di Container Insights.
Quando si abilitano i log in Application Insights, si ottengono log correlati, in modo da poter visualizzare facilmente le tracce distribuite insieme ai log correlati. Alcuni microservizi non scrivono log nella console, quindi Container Insights non può raccoglierli. Solo la strumentazione di Application Insights acquisisce questi log.
Al contrario, Application Insights potrebbe non essere in grado di instrumentare tutti i microservizi. Ad esempio, non può instrumentare quelli che usano NGINX o linguaggi non supportati. Potrebbe essere preferibile basarsi sui log dei contenitori solo per tali microservizi.
Se si hanno più team di osservabilità, ad esempio i tecnici dell'infrastruttura che usano Container Insights e gli sviluppatori che usano Application Insights, è possibile scegliere di abilitare entrambe le origini per i log.
Esaminare le configurazioni di registrazione della console nel codice dell'applicazione per determinare se si vogliono abilitare i log di Application Insights, i log dei contenitori o entrambi. Per disabilitare la raccolta di log dei contenitori, vedere Filtrare la raccolta di log dei contenitori con ConfigMap.
Importante
Per evitare duplicazioni non necessarie e costi maggiori, abilitare i log in Application Insights per consentire alla funzionalità di raccogliere i log delle applicazioni dai framework di registrazione standard e inviarli ad Application Insights.
Usare l'annotazione seguente per abilitare i log in Application Insights:
monitor.azure.com/enable-application-logs
Importante
Per evitare di aggiungerli alle annotazioni della distribuzione per errore, aggiungere annotazioni al spec.template.metadata.annotations livello della distribuzione.
monitor.azure.com/enable-application-logs: "true"
Preparare un cluster durante la creazione di un cluster AKS
È possibile preparare i cluster AKS per questa caratteristica durante la creazione del cluster. Esegui il seguente comando interfaccia della riga di comando di Azure se preferisci che il cluster venga preparato durante la creazione. Il monitoraggio delle applicazioni non è abilitato solo perché il cluster è stato preparato. È necessario distribuire un'applicazione ed eseguire l'onboarding dell'applicazione in questa funzionalità.
az aks create --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring --generate-ssh-keys
Domande frequenti sull'autoinstrumentazione AKS
Le domande seguenti riguardano scenari e considerazioni comuni quando si usa la strumentazione automatica del servizio Azure Kubernetes, tra cui il supporto delle metriche personalizzate, la compatibilità con gli SDK esistenti e le procedure consigliate per la sicurezza.
La strumentazione automatica del servizio Azure Kubernetes supporta le metriche personalizzate?
Se si vogliono metriche personalizzate in Node.js, instrumentare manualmente le applicazioni con la distribuzione Monitoraggio di Azure OpenTelemetry Distro.
Java supporta metriche personalizzate con strumentazione automatica. È possibile raccogliere metriche personalizzate aggiornando il codice e abilitando questa funzionalità. Se il tuo codice ha già metriche personalizzate, vengono trasmesse quando è abilitata l'autostrumentazione.
La strumentazione automatica di AKS funziona con le applicazioni strumentate usando un SDK OpenTelemetry di software open source (OSS)?
La strumentazione automatica di AKS può interrompere i dati di telemetria inviati a terze parti da un SDK OpenTelemetry OSS.
Può l'autostrumentazione di AKS coesistere con la strumentazione manuale?
La strumentazione automatica di AKS è progettata per coesistere con entrambe le opzioni di strumentazione manuale: l'API classica SDK e OpenTelemetry Distro di Monitoraggio di Azure.
Impedisce sempre dati duplicati e garantisce il funzionamento delle metriche personalizzate.
Fare riferimento a questo grafico per determinare quando la strumentazione automatica o la strumentazione manuale ha la precedenza.
| Language | Precedenza |
|---|---|
| Node.js | Strumentazione manuale |
| Java | Strumentazione automatica |
Come posso assicurarmi di utilizzare le versioni più recenti e sicure di Monitoraggio di Azure OpenTelemetry Distro?
Il team di sviluppo assegna priorità, corregge e rilascia le correzioni per le vulnerabilità rilevate nella distribuzione Monitoraggio di Azure OpenTelemetry nella versione successiva.
La strumentazione automatica di AKS inserisce la versione più recente di OpenTelemetry Distro di Monitoraggio di Azure all'interno dei pod dell'applicazione ogni volta che si modifica o riavvia la distribuzione.
La distribuzione di OpenTelemetry può diventare vulnerabile nelle distribuzioni che non vengono modificate o riavviate per lunghi periodi di tempo. Per questo motivo, aggiornare o riavviare le distribuzioni settimanali per assicurarsi di usare una versione recente della distribuzione.
Come posso ottenere ulteriori informazioni sulla distro OpenTelemetry di Monitoraggio di Azure?
Questa funzionalità consente di ottenere l'ottimizzazione automatica inserendo OpenTelemetry di Monitoraggio di Azure nei pod dell'applicazione.
Per Java, questa funzionalità integra la distribuzione autonoma di Monitoraggio di Azure OpenTelemetry per Java. Consulta la documentazione della distribuzione di Java per ulteriori informazioni sul binario di strumentazione di Java.
Per Node.js, la funzionalità inserisce un file binario di strumentazione automatica basato sulla distribuzione Monitoraggio di Azure OpenTelemetry per Node.js. Per altre informazioni, vedere la documentazione distro Node.js. Tenere presente che non esiste alcuna strumentazione automatica autonoma per Node.js, quindi la documentazione della distribuzione è orientata alla strumentazione manuale. È possibile ignorare i passaggi di configurazione basati sul codice correlati alla strumentazione manuale. Tuttavia, tutto il resto nella documentazione della distribuzione, ad esempio le impostazioni predefinite e le configurazioni delle variabili di ambiente, è applicabile a questa funzionalità.