Övervaka Azure Kubernetes Service (AKS)

När du har kritiska appar och affärsprocesser som använder Azure-resurser är det bra att övervaka resursernas tillgänglighet, prestanda och drift. Den här artikeln beskriver övervakningsdata som genereras av AKS och analyseras med Azure Monitor. Om du inte känner till funktionerna i Azure Monitor som är gemensamma för alla Azure-tjänster som använder den läser du Övervaka Azure-resurser med Azure Monitor.

Viktigt!

Kubernetes är ett komplext distribuerat system med många rörliga delar, så övervakning på flera nivåer krävs. Även om AKS är en hanterad Kubernetes-tjänst krävs fortfarande samma stränghet kring övervakning på flera nivåer. Den här artikeln innehåller information på hög nivå och metodtips för övervakning av ett AKS-kluster. Mer information finns i följande.

Övervaka data

AKS genererar samma typer av övervakningsdata som andra Azure-resurser som beskrivs i Övervaka data från Azure-resurser. Se Övervaka AKS-datareferens för detaljerad information om mått och loggar som skapats av AKS. Andra Azure-tjänster och funktioner samlar in andra data och aktiverar andra analysalternativ enligt följande diagram och tabell.

Diagram of collection of monitoring data from AKS.

Source beskrivning
Plattformsmått Plattformsmått samlas automatiskt in för AKS-kluster utan kostnad. Du kan analysera dessa mått med Metrics Explorer eller använda dem för måttaviseringar.
Prometheus-mått När du aktiverar måttskrapa för klustret samlas Prometheus-mått in av Azure Monitor-hanterad tjänst för Prometheus och lagras på en Azure Monitor-arbetsyta. Analysera dem med fördefinierade instrumentpaneler i Azure Managed Grafana och med Prometheus-aviseringar.
Aktivitetsloggar Aktivitetsloggen samlas in automatiskt för AKS-kluster utan kostnad. Dessa loggar spårar information, till exempel när ett kluster skapas eller har en konfigurationsändring. Skicka aktivitetsloggen till en Log Analytics-arbetsyta för att analysera den med dina andra loggdata.
Resursloggar Kontrollplansloggar för AKS implementeras som resursloggar. Skapa en diagnostikinställning för att skicka dem till Log Analytics-arbetsytan där du kan analysera och avisera dem med loggfrågor i Log Analytics.
Containerinsikter Containerinsikter samlar in olika loggar och prestandadata från ett kluster, inklusive stdout-/stderr-strömmar och lagrar dem på en Log Analytics-arbetsyta och Azure Monitor Metrics. Analysera dessa data med vyer och arbetsböcker som ingår i Container Insights eller med Log Analytics och Metrics Explorer.

Översiktssida för övervakning i Azure-portalen

fliken Övervakningsidan Översikt kan du snabbt komma igång med att visa övervakningsdata i Azure-portalen för varje AKS-kluster. Detta inkluderar grafer med vanliga mått för klustret avgränsat med nodpool. Klicka på någon av dessa diagram för att ytterligare analysera data i Metrics Explorer.

Sidan Översikt innehåller även länkar till Managed Prometheus och Container Insights för det aktuella klustret. Om du inte redan har aktiverat dessa verktyg uppmanas du att göra det. Du kan också se en banderoll överst på skärmen som rekommenderar att du aktiverar andra funktioner för att förbättra övervakningen av klustret.

Screenshot of AKS overview page.

Dricks

Få åtkomst till övervakningsfunktioner för alla AKS-kluster i din prenumeration från menyn Övervakning i Azure-portalen eller för ett enda AKS-kluster från avsnittet ÖvervakaKubernetes-tjänstemenyn .

Integreringar

Följande Azure-tjänster och funktioner i Azure Monitor kan användas för extra övervakning av dina Kubernetes-kluster. Du kan aktivera dessa funktioner när AKS-kluster skapas från fliken Integreringar i Azure-portalen, Azure CLI, Terraform, Azure Policy eller publicera klustret till dem senare. Var och en av dessa funktioner kan medföra kostnader, så se prisinformationen för var och en innan du aktiverade dem.

Tjänst/funktion beskrivning
Containerinsikter Använder en containerbaserad version av Azure Monitor-agenten för att samla in stdout-/stderr-loggar och Kubernetes-händelser från varje nod i klustret, vilket stöder en mängd olika övervakningsscenarier för AKS-kluster. Du kan aktivera övervakning för ett AKS-kluster när det skapas med hjälp av Azure CLI, Azure Policy, Azure-portalen eller Terraform. Om du inte aktiverar containerinsikter när du skapar klustret kan du läsa Aktivera containerinsikter för AKS-kluster (Azure Kubernetes Service) för andra alternativ för att aktivera det.

Container insights lagrar de flesta av sina data på en Log Analytics-arbetsyta, och du använder vanligtvis samma log analytics-arbetsyta som resursloggarna för klustret. Se Designa en Log Analytics-arbetsytearkitektur för vägledning om hur många arbetsytor du ska använda och var du hittar dem.
Azure Monitor-hanterad tjänst för Prometheus Prometheus är en molnbaserad måttlösning från Cloud Native Compute Foundation och det vanligaste verktyget som används för att samla in och analysera måttdata från Kubernetes-kluster. Azure Monitor-hanterad tjänst för Prometheus är en fullständigt hanterad Prometheus-kompatibel övervakningslösning i Azure. Om du inte aktiverar hanterad Prometheus när du skapar klustret kan du läsa Samla in Prometheus-mått från ett AKS-kluster för andra alternativ för att aktivera det.

Azure Monitor-hanterad tjänst för Prometheus lagrar sina data på en Azure Monitor-arbetsyta, som är länkad till en Grafana-arbetsyta så att du kan analysera data med Azure Managed Grafana.
Azure Managed Grafana Fullständigt hanterad implementering av Grafana, som är en datavisualiseringsplattform med öppen källkod som ofta används för att presentera Prometheus-data. Flera fördefinierade Grafana-instrumentpaneler är tillgängliga för övervakning av Kubernetes och fullständig stack-felsökning. Om du inte aktiverar hanterad Grafana när du skapar klustret kan du läsa Länka en Grafana-arbetsyta med information om hur du länkar den till din Azure Monitor-arbetsyta så att den kan komma åt Prometheus-mått för klustret.

Mått

Mått spelar en viktig roll i klusterövervakning, identifiering av problem och optimering av prestanda i AKS-kluster. Plattformsmått samlas in med hjälp av den färdiga måttservern som är installerad i kube-systemnamnområdet, som regelbundet skrapar mått från alla Kubernetes-noder som hanteras av Kubelet. Du bör också aktivera Azure Managed Prometheus-mått för att samla in containermått och Kubernetes-objektmått, till exempel objekttillstånd för distributioner. Se Samla in Prometheus-mått från ett AKS-kluster för att skicka data till Azure Managed Service för Prometheus.

Screenshot of enabling Managed Prometheus for existing cluster.

Loggar

AKS-kontrollplan/resursloggar

Kontrollplansloggar för AKS-kluster implementeras som resursloggar i Azure Monitor. Resursloggar samlas inte in och lagras förrän du skapar en diagnostikinställning för att dirigera dem till en eller flera platser. Du skickar dem vanligtvis till en Log Analytics-arbetsyta, där de flesta data för Container Insights lagras.

Se Skapa diagnostikinställningar för den detaljerade processen för att skapa en diagnostikinställning med hjälp av Azure-portalen, CLI eller PowerShell. När du skapar en diagnostikinställning anger du vilka kategorier av loggar som ska samlas in. Kategorierna för AKS visas i AKS-övervakningsdatareferensen.

Viktigt!

Det kan finnas betydande kostnader vid insamling av resursloggar för AKS, särskilt för kube-granskningsloggar . Överväg följande rekommendationer för att minska mängden data som samlas in:

  • Inaktivera kube-audit-loggning när det inte behövs.
  • Aktivera insamling från kube-audit-admin, vilket exkluderar granskningshändelserna för get och list.
  • Aktivera resursspecifika loggar enligt beskrivningen nedan och konfigurera AKSAudit tabellen som grundläggande loggar.

Se Övervaka Kubernetes-kluster med hjälp av Azure-tjänster och molnbaserade verktyg för ytterligare rekommendationer och kostnadsoptimering och Azure Monitor för ytterligare strategier för att minska dina övervakningskostnader.

Screenshot of AKS diagnostic setting dialog box.

AKS stöder antingen Azure-diagnostikläge eller resursspecifikt läge för resursloggar. Detta anger tabellerna på Log Analytics-arbetsytan där data skickas. Azure-diagnostikläget skickar alla data till tabellen AzureDiagnostics, medan resursspecifikt läge skickar data till AKS-granskning, AKS-granskningsadministratör och AKS-kontrollplan enligt tabellen i Resursloggar.

Resursspecifikt läge rekommenderas för AKS av följande skäl:

  • Data är lättare att fråga eftersom de finns i enskilda tabeller som är dedikerade till AKS.
  • Stöder konfiguration som grundläggande loggar för betydande kostnadsbesparingar.

Mer information om skillnaden mellan samlingslägen, inklusive hur du ändrar en befintlig inställning, finns i Välj samlingsläge.

Kommentar

Möjligheten att välja samlingsläge är inte tillgänglig i Azure-portalen i alla regioner ännu. För de regioner där den ännu inte är tillgänglig använder du CLI för att skapa diagnostikinställningen med ett kommando, till exempel följande:

az monitor diagnostic-settings create --name AKS-Diagnostics --resource /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myresourcegroup/providers/Microsoft.ContainerService/managedClusters/my-cluster --logs '[{""category"": ""kube-audit"",""enabled"": true}, {""category"": ""kube-audit-admin"", ""enabled"": true}, {""category"": ""kube-apiserver"", ""enabled"": true}, {""category"": ""kube-controller-manager"", ""enabled"": true}, {""category"": ""kube-scheduler"", ""enabled"": true}, {""category"": ""cluster-autoscaler"", ""enabled"": true}, {""category"": ""cloud-controller-manager"", ""enabled"": true}, {""category"": ""guard"", ""enabled"": true}, {""category"": ""csi-azuredisk-controller"", ""enabled"": true}, {""category"": ""csi-azurefile-controller"", ""enabled"": true}, {""category"": ""csi-snapshot-controller"", ""enabled"": true}]'  --workspace /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.operationalinsights/workspaces/myworkspace --export-to-resource-specific true

Exempelloggfrågor

Viktigt!

När du väljer Loggar på menyn för ett AKS-kluster öppnas Log Analytics med frågeomfånget inställt på det aktuella klustret. Det innebär att loggfrågor endast innehåller data från den resursen. Om du vill köra en fråga som innehåller data från andra kluster eller data från andra Azure-tjänster väljer du LoggarAzure Monitor-menyn . Mer information finns i Log query scope and time range in Azure Monitor Log Analytics (Loggfrågeomfång och tidsintervall i Azure Monitor Log Analytics ).

Om diagnostikinställningen för klustret använder Azure-diagnostikläge lagras resursloggarna för AKS i tabellen AzureDiagnostics . Du kan särskilja olika loggar med kolumnen Kategori . En beskrivning av varje kategori finns i AKS-referensresursloggar.

beskrivning Loggfråga
Antal loggar för varje kategori
(Azure-diagnostikläge)
AzureDiagnostics
| where ResourceType == "MANAGEDCLUSTERS"
| summarize count() by Category
Alla API-serverloggar
(Azure-diagnostikläge)
AzureDiagnostics
| where Category == "kube-apiserver"
Alla kube-audit-loggar inom ett tidsintervall
(Azure-diagnostikläge)
let starttime = datetime("2023-02-23");
let endtime = datetime("2023-02-24");
AzureDiagnostics
| där TimeGenerated between(starttime.. sluttid)
| where Category == "kube-audit"
| extend event = parse_json(log_s)
| utöka HttpMethod = tostring(event.verb)
| utöka Användare = tostring(event.user.username)
| extend Apiserver = pod_s
| extend SourceIP = tostring(event.sourceIPs[0])
| project TimeGenerated, Category, HttpMethod, User, Apiserver, SourceIP, OperationName, event
Alla granskningsloggar
(resursspecifikt läge)
AKSAudit
Alla granskningsloggar exklusive get- och listgranskningshändelser
(resursspecifikt läge)
AKSAuditAdmin
Alla API-serverloggar
(resursspecifikt läge)
AKSControlPlane
| where Category == "kube-apiserver"

Om du vill komma åt en uppsättning fördefinierade frågor på Log Analytics-arbetsytan läser du log analytics-frågegränssnittet och väljer resurstypen Kubernetes Services. En lista över vanliga frågor för Container Insights finns i Container Insights-frågor.

AKS-dataplan/Container Insights-loggar

Container Insights samlar in olika typer av telemetridata från containrar och Kubernetes-kluster för att hjälpa dig att övervaka, felsöka och få insikter om dina containerbaserade program som körs i dina AKS-kluster. En lista över tabeller och deras detaljerade beskrivningar som används av Container Insights finns i tabellreferensen för Azure Monitor. Alla dessa tabeller är tillgängliga för loggfrågor.

Med inställningarna för kostnadsoptimering kan du anpassa och kontrollera de måttdata som samlas in via container insights-agenten. Den här funktionen stöder datainsamlingsinställningarna för enskilda tabellval, datainsamlingsintervall och namnområden för att exkludera datainsamlingen via Azure Monitor Data Collection Rules (DCR). De här inställningarna styr inmatningsvolymen och minskar övervakningskostnaderna för containerinsikter. Containerinsikter Insamlade data kan anpassas via Azure-portalen med hjälp av följande alternativ. Om du väljer andra alternativ än Alla (standard) blir containerinsikterna otillgängliga.

Gruppering Tabeller Kommentar
Alla (standard) Alla standardtabeller för containerinsikter Krävs för att aktivera standardvisualiseringar för containerinsikter
Prestanda Perf, InsightsMetrics
Loggar och händelser ContainerLog eller ContainerLogV2, KubeEvents, KubePodInventory Rekommenderas om du har aktiverat hanterade Prometheus-mått
Arbetsbelastningar, distributioner och HPA:er InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
Beständiga volymer InsightsMetrics, KubePVInventory

Screenshot of AKS data plane logs collection configuration page.

Gruppering av loggar och händelser samlar in loggarna från tabellerna ContainerLog eller ContainerLogV2, KubeEvents, KubePodInventory , men inte måtten. Den rekommenderade sökvägen för att samla in mått är att aktivera Azure Monitor-hanterade tjänsten Prometheus för Prometheus från ditt AKS-kluster och att använda Azure Managed Grafana för datavisualisering. Mer information finns i Hantera en Azure Monitor-arbetsyta.

ContainerLogV2-schema

Azure Monitor Container Insights innehåller ett schema för containerloggar som kallas ContainerLogV2, vilket är det rekommenderade alternativet. Det här formatet innehåller följande fält för att underlätta vanliga frågor för att visa data relaterade till AKS- och Azure Arc-aktiverade Kubernetes-kluster:

  • ContainerName
  • PodName
  • PodNamespace

Dessutom är det här schemat kompatibelt med dataplanen Basic Logs , som erbjuder ett billigt alternativ till standardanalysloggar. Med den grundläggande loggdataplanen kan du spara på kostnaden för att mata in och lagra utförliga loggar med stora volymer på Log Analytics-arbetsytan för felsökning, felsökning och granskning, men inte för analys och aviseringar. Mer information finns i Hantera tabeller på en Log Analytics-arbetsyta. ContainerLogV2 är den rekommenderade metoden och är standardschemat för kunder som registrerar containerinsikter med hanterad identitetsautentisering med ARM, Bicep, Terraform, Policy och Azure-portalen. Mer information om hur du aktiverar ContainerLogV2 via antingen klustrets datainsamlingsregel (DCR) eller ConfigMap finns i Aktivera ContainerLogV2-schemat.

Visualisering

Datavisualisering är ett viktigt begrepp som gör det enklare för systemadministratörer och drifttekniker att använda den insamlade informationen. I stället för att titta på rådata kan de använda visuella representationer, som snabbt visar data och visar trender som kan vara dolda när man tittar på rådata. Du kan använda Grafana-instrumentpaneler eller interna Azure-arbetsböcker för datavisualisering.

Azure Managed Grafana

Det vanligaste sättet att analysera och presentera Prometheus-data är med en Grafana-instrumentpanel. Azure Managed Grafana innehåller fördefinierade instrumentpaneler för övervakning av Kubernetes-kluster, inklusive flera som presenterar liknande information som Container Insights-vyer. Det finns också olika community-skapade instrumentpaneler för att visualisera flera aspekter av ett Kubernetes-kluster från måtten som samlas in av Prometheus.

Screenshot of Grafana.

Arbetsböcker

Azure Monitor-arbetsböcker är en funktion i Azure Monitor som tillhandahåller en flexibel arbetsyta för dataanalys och skapande av omfattande visuella rapporter. Arbetsböcker hjälper dig att skapa visuella rapporter som hjälper dig med dataanalys. Rapporter i Container Insights rekommenderas direkt för Azure-arbetsböcker. Azure tillhandahåller inbyggda arbetsböcker för varje tjänst, inklusive Azure Kubernetes Service (AKS), som du kan komma åt från Azure-portalen. På Azure Monitor-menyn i Azure-portalen väljer du Containrar. I avsnittet Övervakning väljer du Insikter, väljer ett visst kluster och väljer sedan fliken Rapporter. Du kan också visa dem från arbetsboksgalleriet i Azure Monitor.

Till exempel innehåller klusteroptimeringsarbetsboken flera analysverktyg som ger dig en snabb överblick över hälsotillståndet och prestandan för ditt Kubernetes-kluster. Den har flera analysverktyg som var och en ger olika information som är relaterad till klustret. Arbetsboken kräver ingen konfiguration när Container Insights har aktiverats i klustret. Salient-funktioner omfattar möjligheten att identifiera livenessavsökningsfel och deras frekvenser, identifiera och gruppera händelseavvikelser som indikerar de senaste ökningarna av händelsevolymen för mer tillgänglig analys och identifiera containrar med höga eller låga cpu- och minnesgränser och begäranden, tillsammans med föreslagna gräns- och begärandevärden för dessa containrar som körs i dina AKS-kluster. Mer information om dessa arbetsböcker finns i Rapporter i containerinsikter.

Aviseringar

Azure Monitor-aviseringar hjälper dig att identifiera och åtgärda problem innan användarna märker dem genom att proaktivt meddela dig när Azure Monitor-insamlade data indikerar att det kan finnas ett problem med din molninfrastruktur eller ditt program. Det gör att du kan identifiera och åtgärda problem i systemet innan kunderna märker dem. Du kan ange aviseringar för mått, loggar och aktivitetsloggen. Olika typer av aviseringar har fördelar och nackdelar.

Det finns två typer av måttregler som används av Container Insights baserat på prometheus-mått eller plattformsmått.

Prometheus-måttbaserade aviseringar

När du aktiverar insamling av Prometheus-mått för klustret kan du ladda ned en samling rekommenderade Prometheus-aviseringsregler. Detta omfattar följande regler:

Nivå Aviseringar
Poddnivå KubePodCrashLooping
Jobbet slutfördes inte i tid
Poddcontainern har startats om under den senaste timmen
Redo tillstånd för poddar är mindre än 80 %
Antalet poddar i misslyckat tillstånd är större än 0
KubePodNotReadyByController
KubeStatefulSetGenerationMismatch
KubeJobNotCompleted
KubeJobFailed
Genomsnittlig CPU-användning per container är större än 95 %
Genomsnittlig minnesanvändning per container är större än 95 %
KubeletPodStartUpLatencyHigh
Klusternivå Genomsnittlig PV-användning är större än 80 %
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasMismatch
KubeHpaReplicasMismatch
KubeHpaMaxedOut
KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeVersionMismatch
KubeClientErrors
CPUThrottlingHigh
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
Nodnivå Genomsnittlig processoranvändning för noder är större än 80 %
Arbetsminnet för en nod är större än 80 %
Antalet OOM-avlivade containrar är större än 0
KubeNodeUnreachable
KubeNodeNotReady
KubeNodeReadinessFlapping
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeletPlegDurationHigh
KubeletServerCertificateExpiration
KubeletClientCertificateRenewalErrors
KubeletServerCertificateRenewalErrors
KubeQuotaAlmostFull
KubeQuotaFullyUsed
KubeQuotaExceeded

Plattformsmåttbaserade aviseringar

I följande tabell visas de rekommenderade måttaviseringsreglerna för AKS-kluster. Dessa aviseringar baseras på plattformsmått för klustret.

Villkor beskrivning
Cpu-användning i procent > 95 Utlöses när den genomsnittliga CPU-användningen över alla noder överskrider tröskelvärdet.
Minnesarbetsuppsättning i procent > 100 Utlöses när den genomsnittliga arbetsuppsättningen för alla noder överskrider tröskelvärdet.

Loggbaserade aviseringar

Med loggaviseringar kan du avisera om dina dataplans - och kontrollplansloggar . Kör frågor med fördefinierade intervall och skapa en avisering baserat på resultatet. Du kan söka efter antalet vissa poster eller utföra beräkningar baserat på numeriska kolumner.

Se Skapa loggaviseringar från Container Insights och Så här kör du frågor mot loggar från Container Insights. Loggaviseringar kan mäta två olika saker, som kan användas för att övervaka i olika scenarier:

  • Resultatantal: Räknar antalet rader som returneras av frågan och kan användas för att arbeta med händelser som Windows-händelseloggar, Syslog och programfel.
  • Beräkning av ett värde: Gör en beräkning baserat på en numerisk kolumn och kan användas för att inkludera valfritt antal resurser. Ett exempel är CPU-procent.

Beroende på vilket aviseringsscenario som krävs måste loggfrågor skapas för att jämföra en DateTime med den aktuella tiden med hjälp av operatorn now och gå tillbaka en timme. Information om hur du skapar loggbaserade aviseringar finns i Skapa loggaviseringar från Container Insights.

Nätverksobservabilitet

Nätverksobservabilitet är en viktig del av att upprätthålla ett hälsosamt och högpresterande Kubernetes-kluster. Genom att samla in och analysera data om nätverkstrafik kan du få insikter om hur klustret fungerar och identifiera potentiella problem innan de orsakar avbrott eller prestandaförsämring.

När tillägget Nätverksobservabilitet är aktiverat samlar det in och konverterar användbara mått till Prometheus-format, som kan visualiseras i Grafana. När det här är aktiverat matas de insamlade måtten automatiskt in i Azure Monitor-hanterad tjänst för Prometheus. En Grafana-instrumentpanel är tillgänglig på lagringsplatsen för den offentliga Instrumentpanelen i Grafana för att visualisera de mått för nätverksobservabilitet som samlas in av Prometheus. Mer information finns i Konfiguration av nätverksobservabilitet för detaljerade instruktioner.

Nästa steg