Condividi tramite


Strumentazione automatica per il servizio Azure Kubernetes (anteprima)

Importante

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Questa guida illustra come abilitare Azure Monitor Application Insights per i carichi di lavoro di Azure Kubernetes Service senza modificare il codice sorgente.

Viene illustrata l'installazione dell'estensione dell'interfaccia della riga di comando di Azure aks-preview, la registrazione del flag di funzionalità AzureMonitorAppMonitoringPreview, la preparazione di un cluster, l'onboarding delle distribuzioni e il riavvio delle distribuzioni. Questi passaggi comportano l'inserimento da parte della strumentazione automatica di Distribuzione di OpenTelemetry di Monitoraggio di Azure nei pod dell'applicazione per generare dati di telemetria. Per altre informazioni sulla strumentazione automatica e sui relativi vantaggi, vedere Che cos'è la strumentazione automatica per Azure Monitor Application Insights?.

Prerequisiti

Avvertimento

  • Questa funzionalità non è compatibile con entrambi i pool di nodi Windows (qualsiasi architettura) e Linux Arm64.

Installare l'estensione dell'interfaccia della riga di comando di Azure aks-preview

Importante

Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Installare l'estensione aks-preview :

az extension add --name aks-preview

Eseguire l'aggiornamento alla versione più recente dell'estensione:

az extension update --name aks-preview

Verificare che la versione dell'interfaccia della riga di comando di Azure installata soddisfi i requisiti nella sezione Prerequisiti :

az version

Se la versione non soddisfa i requisiti, seguire i passaggi indicati in precedenza per installare e aggiornare l'interfaccia della riga di comando di Azure.

Registrare il flag di funzionalità AzureMonitorAppMonitoringPreview

# Log into Azure CLI
az login

# Register the feature flag for Azure Monitor App Monitoring in preview
az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorAppMonitoringPreview"

# List the registration state of the Azure Monitor App Monitoring Preview feature
# It could take hours for the registration state to change from Registering to Registered
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureMonitorAppMonitoringPreview')].{Name:name,State:properties.state}"

# Once the feature shows as Registered in the prior step, re-register the Microsoft.ContainerService provider to apply the new feature settings
az provider register --namespace "Microsoft.ContainerService"

# Check the registration state of the Microsoft.ContainerService provider
az provider show --namespace "Microsoft.ContainerService" --query "registrationState"

Preparare un cluster

Per preparare un cluster, eseguire il comando seguente dell'interfaccia della riga di comando di Azure.

az aks update --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring 

Suggerimento

È possibile preparare i cluster del servizio Azure Kubernetes per questa funzionalità durante la creazione del cluster. Per ulteriori informazioni, vedere Preparare un cluster durante la creazione del cluster AKS.

Distribuzioni a bordo

È possibile inserire le distribuzioni in due modi: a livello di spazio dei nomi o per singola 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 variabile configurato tra più distribuzioni, utilizzare l'approccio per singola distribuzione.

Onboarding a livello di spazio dei nomi

Per eseguire l'onboarding di tutte le distribuzioni all'interno di uno spazio dei nomi, creare in ogni spazio dei nomi una singola risorsa personalizzata Strumentazione denominata default. Aggiorna applicationInsightsConnectionString in modo che contenga la stringa di connessione della tua risorsa di Application Insights.

Suggerimento

È possibile recuperare la stringa di connessione dalla pagina di panoramica della risorsa di Application Insights.

apiVersion: monitor.azure.com/v1
kind: Instrumentation
metadata:
  name: default
  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.settings.autoInstrumentationPlatforms: uno o più valori basati sulle lingue in cui sono in esecuzione i pod.
  • spec.destination.applicationInsightsConnectionString: stringa di connessioni di una risorsa di Application Insights.

Suggerimento

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.

  1. 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 applicationInsightsConnectionString in modo che contenga la stringa di connessione della tua risorsa di Application Insights.

    Suggerimento

    È possibile recuperare la 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: stringa di connessioni di una risorsa di Application Insights.
  2. 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.annotations livello della distribuzione.

    Esempi:

    • Java: instrumentation.opentelemetry.io/inject-java: "cr1"
    • Node.js: instrumentation.opentelemetry.io/inject-nodejs: "cr1"

    Il posizionamento delle annotazioni dovrebbe essere simile al seguente.

    apiVersion: apps/v1
    kind: Deployment
    ...
    spec:
      template:
        metadata:
          annotations:
            instrumentation.opentelemetry.io/inject-nodejs: "cr1"
    

Suggerimento

Riavviare le distribuzioni per rendere effettive le impostazioni.

Onboarding in modalità mista

Usare la modalità mista quando la maggior parte delle distribuzioni usa una configurazione predefinita e alcune distribuzioni devono usare configurazioni diverse.

  1. Implementare l'onboarding a livello di spazio dei nomi per definire la configurazione predefinita.
  2. Creare configurazioni di onboarding per distribuzione, che eseguono l'override della configurazione predefinita per risorse specifiche.

Riavviare la distribuzione

Eseguire il comando seguente dopo la creazione di tutte le risorse personalizzate e le distribuzioni vengono annotate facoltativamente.

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 funzionalità di analisi del codice di Application Insights. Altre informazioni sulle esperienze di Application Insights disponibili sono disponibili qui.

Rimuovere la strumentazione automatica per AKS

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.

Annotazioni

Disabilitazione dell'autoinstrumentazione

Le annotazioni seguenti disabilitano l'strumentazione automatica per la lingua indicata.

  • Java: instrumentation.opentelemetry.io/inject-java

  • Node.js: instrumentation.opentelemetry.io/inject-nodejs

    instrumentation.opentelemetry.io/inject-java: "false"
    

Per riattivare la strumentazione automatica dopo averla disabilitata.

instrumentation.opentelemetry.io/inject-java: "true"

Il posizionamento delle annotazioni dovrebbe essere simile al seguente.

apiVersion: apps/v1
kind: Deployment
...
spec:
  template:
    metadata:
      annotations:
        instrumentation.opentelemetry.io/inject-java: "false"

Abilitazione di log in Application Insights

È possibile scegliere di raccogliere i log in Application Insights come aggiunta o sostituzione dei log di Container Insights.

L'abilitazione dei log in Application Insights fornisce log correlati, consentendo agli utenti di visualizzare facilmente le tracce distribuite insieme ai log correlati. Inoltre, alcuni microservizi non scrivono log nella console in modo che Container Insights non sia in grado di raccoglierli e 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, quelli che usano NGINX o linguaggi non supportati. Gli utenti potrebbero preferire di basarsi sui log di Informazioni dettagliate sui contenitori solo per tali microservizi.

È anche possibile scegliere di abilitare entrambe le origini per i log se sono presenti più team di osservabilità, ad esempio i tecnici infra engineer che usano Container Insights e gli sviluppatori che usano Application Insights.

Esaminare le configurazioni di registrazione della console nel codice dell'applicazione per determinare se si vogliono abilitare i log di Application Insights, i log di Informazioni dettagliate sui contenitori o entrambi. Se si disabilitano i log di Container Insights, vedere Impostazioni di Container Insights.

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 del servizio Azure Kubernetes per questa funzionalità durante la creazione del cluster. Esegui il seguente comando Azure CLI 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

Passaggi successivi