Ö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.
- Detaljerad övervakning av hela Kubernetes-stacken finns i Övervaka Azure Kubernetes Service (AKS) med Azure Monitor
- Information om hur du samlar in måttdata från Kubernetes-kluster finns i Hanterad Azure Monitor-tjänst för Prometheus.
- Information om hur du samlar in loggar i Kubernetes-kluster finns i Containerinsikter.
- Information om datavisualisering finns i Azure-arbetsböcker och Azure Managed Grafana.
Ö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.
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
På fliken Övervakning på sidan Ö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.
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 Övervaka på Kubernetes-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.
AKS exponerar även mått från kritiska kontrollplanskomponenter, till exempel API-server, ETCD, Scheduler via Azure Managed Prometheus. Den här funktionen är för närvarande i förhandsversion och mer information finns här.
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.
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 Loggar på Azure 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 |
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.
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
- Se Övervaka AKS-datareferens för en referens till mått, loggar och andra viktiga värden som skapats av AKS.