Dela via


Automatisk instrumentering för Azure Kubernetes Service (förhandsversion)

Viktigt!

Se kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure för juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet.

Den här guiden beskriver hur du aktiverar arbetsbelastningar i Azure Monitor Application Insights för Azure Kubernetes Service (AKS) utan att ändra källkoden.

Vi går igenom hur du installerar Azure CLI-tillägget aks-preview, registrerar funktionsflaggan AzureMonitorAppMonitoringPreview, förbereder ett kluster, registrerar distributioner och startar om distributioner. De här stegen resulterar i automatisk instrumentering som matar in Azure Monitor OpenTelemetry Distro i programpoddar för att generera telemetri. Mer information om autoinstrumentation och dess fördelar finns i Vad är autoinstrumentation för Azure Monitor Application Insights?.

Förutsättningar

Varning

  • Den här funktionen är inte kompatibel med både Windows -nodpooler (valfri arkitektur) och Linux Arm64-nodpooler.

Installera Azure CLI-tillägget aks-preview

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

aks-preview Installera tillägget:

az extension add --name aks-preview

Uppdatera till den senaste versionen av tillägget:

az extension update --name aks-preview

Kontrollera att den installerade Azure CLI-versionen uppfyller kraven i avsnittet Krav :

az version

Om versionen inte uppfyller kraven följer du stegen som nämndes tidigare för att installera och uppdatera Azure CLI.

Registrera funktionsflaggan 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"

Förbered ett kluster

Kör följande Azure CLI-kommando för att förbereda ett kluster.

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

Tips/Råd

AKS-kluster kan förberedas för den här funktionen när klustret skapas. Mer information finns i Förbereda ett kluster under AKS-klusterskapande.

Införliva distributioner

Distributioner kan registreras på två sätt: namnområdesomfattande eller per distribution. Använd metoden namespace-wide för att registrera alla distributioner i ett namnområde. För selektiv eller variabelt konfigurerad onboarding över flera implementeringar, använd per-implementeringsmetoden.

Namnområdesomfattande registrering

Om du vill registrera alla distributioner i ett namnområde skapar du en anpassad instrumentationsresurs med namnet default i varje namnområde. Uppdatera applicationInsightsConnectionString för att ha anslutningssträngen för Application Insights-resursen.

Tips/Råd

Du kan hämta anslutningssträngen från översiktssidan för application insights-resursen.

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/"

Minst krävs följande konfiguration:

  • spec.settings.autoInstrumentationPlatforms: Ett eller flera värden baserat på de språk som poddarna kör.
  • spec.destination.applicationInsightsConnectionString: Anslutningssträngen för en Application Insights-resurs.

Tips/Råd

Registrering per distribution

Använd onboarding per distribution för att säkerställa att distributioner instrumenteras med specifika språk eller för att dirigera telemetri till separata Application Insights-resurser.

  1. Skapa en unik anpassad instrumentationsresurs för varje scenario. Undvik att använda namnet default, som används för registrering i hela namnområdet.

    Skapa anpassade instrumentationsresurser för att konfigurera Application Insights i varje namnområde. Uppdatera applicationInsightsConnectionString för att ha anslutningssträngen för Application Insights-resursen.

    Tips/Råd

    Du kan hämta anslutningssträngen från översiktssidan för application insights-resursen.

    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/"
    

    Minst krävs följande konfiguration:

    • spec.destination.applicationInsightsConnectionString: Anslutningssträngen för en Application Insights-resurs.
  2. Associera varje distribution med lämplig anpassad resurs med hjälp av anteckningar. Anteckningen åsidosätter språket som angetts i den anpassade resursen.

    Viktigt!

    För att undvika att lägga till dem i distributionens anteckningar av misstag lägger du till anteckningar på spec.template.metadata.annotations distributionsnivån.

    Exempel:

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

    Anteckningsplacering bör se ut så här.

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

Tips/Råd

Starta om distributioner för att inställningarna ska börja gälla.

Introduktion i blandat läge

Använd blandat läge när de flesta distributioner använder en standardkonfiguration och några distributioner måste använda olika konfigurationer.

  1. Implementera namnområdesomfattande registrering för att definiera standardkonfigurationen.
  2. Skapa onboarding-konfigurationer per distribution , vilket åsidosätter standardkonfigurationen för specifika resurser.

Starta om distributionen

Kör följande kommando efter att alla anpassade resurser har skapats och distributioner eventuellt har kommenterats.

kubectl rollout restart deployment <deployment-name> -n mynamespace1

Det här kommandot gör att autoinstrumentation börjar gälla, vilket aktiverar Application Insights. Du kan kontrollera att Application Insights är aktiverat genom att generera trafik och navigera till resursen. Din app representeras som en molnroll i Application Insights-upplevelser. Du kan använda alla Application Insights-upplevelser förutom livemått och application insights-funktioner för kodanalys. Läs mer om tillgängliga Application Insights-upplevelser här.

Ta bort autoinstrumentation i AKS

Se till att du inte har några instrumenterade utplaceringar. För att avinstrumentera en instrumenterad distribution, ta bort den anpassade instrumentationsresursen och kör kubectl rollout restart på distributionen. Kör sedan följande kommando.

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

Anmärkning

Om instrumenterade distributioner kvarstår när funktionen har inaktiverats fortsätter de att instrumenteras tills de distribueras om till sitt ursprungliga oinstrumenterade tillstånd eller tas bort.

Anteckningar

Inaktivera automatisk instrumentering

Följande anteckningar inaktiverar autoinstrumentation för det angivna språket.

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

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

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

Aktivera automatisk instrumentering igen efter inaktivering.

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

Anteckningsplacering bör se ut så här.

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

Aktivera loggar i Application Insights

Du kan välja att samla in loggar i Application Insights som ett tillägg till eller ersättning för Container Insights-loggar.

Aktivering av loggar i Application Insights ger korrelerade loggar så att användarna enkelt kan visa distribuerade spårningar tillsammans med sina relaterade loggar. Dessutom skriver vissa mikrotjänster inte loggar till konsolen så Container Insights kan inte samla in dem och endast Application Insights-instrumentation samlar in dessa loggar.

Application Insights kanske inte kan instrumentera alla mikrotjänster. Till exempel de som använder NGINX eller språk som inte stöds. Användare kanske föredrar att endast förlita sig på containerloggar för sådana mikrotjänster.

Du kan också välja att aktivera båda källorna för loggar om du har flera team för observerbarhet, till exempel infrastrukturtekniker som använder Container Insights och utvecklare som använder Application Insights.

Granska konfigurationerna för konsolloggning i programmets kod för att avgöra om du vill aktivera Application Insights-loggar, containerloggar eller båda. Om du inaktiverar insamling av containerloggar kan du se Filtrera insamling av containerloggar med ConfigMap.

Viktigt!

För att undvika onödig duplicering och ökade kostnader aktiverar du loggar i Application Insights så att funktionen kan samla in programloggar från standardloggningsramverk och skicka dem till Application Insights.

Använd följande kommentar för att aktivera loggar i Application Insights

  • monitor.azure.com/enable-application-logs

Viktigt!

För att undvika att lägga till dem i distributionens anteckningar av misstag lägger du till anteckningar på spec.template.metadata.annotations distributionsnivån.

monitor.azure.com/enable-application-logs: "true"

Förbereda ett kluster när AKS-kluster skapas

AKS-kluster kan förberedas för den här funktionen när klustret skapas. Kör följande Azure CLI-kommando om du föredrar att ha klustret förberett när du skapar det. Programövervakning är inte aktiverat bara för att klustret är förberett. Du måste distribuera ett program och registrera programmet för den här funktionen.

az aks create --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring --generate-ssh-keys

Nästa steg