Dela via


Aktivera övervakning för AKS-kluster

Som beskrivs i Kubernetes-övervakning i Azure Monitor fungerar flera funktioner i Azure Monitor tillsammans för att tillhandahålla fullständig övervakning av dina AkS-kluster (Azure Kubernetes Service). Den här artikeln beskriver hur du aktiverar följande funktioner för AKS-kluster:

  • Prometheus mätvärden
  • Hanterad Grafana
  • Containerloggning
  • Kontrollplansloggar

Förutsättningar

Skapa arbetsytor

I följande tabell beskrivs de arbetsytor som krävs för att stödja de Azure Monitor-funktioner som är aktiverade i den här artikeln. Om du inte redan har en befintlig arbetsyta av varje typ kan du skapa dem som en del av registreringsprocessen. Se Designa en Log Analytics-arbetsytearkitektur för vägledning om hur många arbetsytor som ska skapas och var de ska placeras.

Egenskap Arbetsyta Anteckningar
Hanterad Prometheus Azure Monitor-arbetsyta Om du inte anger en befintlig Azure Monitor-arbetsyta vid registrering används standardarbetsytan för resursgruppen. Om det inte redan finns någon standardarbetsyta i klustrets region skapas en med ett namn i formatet DefaultAzureMonitorWorkspace-<mapped_region> i en resursgrupp med namnet DefaultRG-<cluster_region>.

Contributor behörighet räcker för att aktivera tillägget för att skicka data till Azure Monitor-arbetsytan. Du behöver Owner nivåbehörighet för att länka din Azure Monitor-arbetsyta för att visa mått i Azure Managed Grafana. Detta krävs eftersom användaren som kör registreringssteget måste kunna ge rollen Azure Managed Grafana System Identity Monitoring Reader på Azure Monitor-arbetsytan för att kunna köra frågor mot måtten.
Containerloggning
Kontrollplansloggar
Log Analytics-arbetsyta Du kan koppla ett kluster till en Log Analytics-arbetsyta i en annan Azure-prenumeration i samma Microsoft Entra-klientorganisation, men du måste använda Azure CLI eller en Azure Resource Manager-mall. Du kan för närvarande inte utföra den här konfigurationen med Azure Portal.

Om du ansluter ett befintligt kluster till en Log Analytics-arbetsyta i en annan prenumeration måste resursprovidern Microsoft.ContainerService vara registrerad i prenumerationen med Log Analytics-arbetsytan. Mer information finns i Registrera en resursprovider.

Om du inte anger en befintlig Log Analytics-arbetsyta används standardarbetsytan för resursgruppen. Om det inte redan finns någon standardarbetsyta i klustrets region skapas en med ett namn i formatet DefaultWorkspace-<GUID>-<Region>.

En lista över mappningspar som stöds som ska användas för standardarbetsytan finns i Regionmappningar som stöds av Container Insights. Mer information om hur du konfigurerar arbetsytan med nätverkssäkerhetsperimeter finns i Konfigurera Azure Monitor med nätverkssäkerhetsperimeter .
Hanterad Grafana Azure Grafana-hanterad arbetsyta Länka grafana-arbetsytan till din Azure Monitor-arbetsyta för att göra Prometheus-måtten som samlats in från klustret tillgängliga för Grafana-instrumentpaneler.

Aktivera Prometheus-mått och containerloggning

När du aktiverar Prometheus och containerloggning på ett kluster installeras en containerbaserad version av Azure Monitor-agenten i klustret. Du kan konfigurera dessa funktioner samtidigt i ett nytt eller befintligt kluster eller aktivera varje funktion separat.

Aktivera Managed Grafana för klustret samtidigt som du aktiverar insamling av Prometheus-mått. Se Länka en Grafana-arbetsyta för alternativ för att ansluta din Azure Monitor-arbetsyta och Azure Managed Grafana-arbetsyta.

Förutsättningar

  • Klustret måste använda hanterad identitetsautentisering.
  • Följande resursprovidrar måste registreras i prenumerationen på klustret och Azure Monitor-arbetsytan:
    • Microsoft.ContainerService
    • Microsoft.Insights
    • Microsoft.AlertsManagement (meddelandehantering)
    • Microsoft.Monitor
  • Följande resursprovidrar måste registreras i prenumerationen för Grafana-arbetsytan:
    • Microsoft Dashboard

Förutsättningar

  • Hanterad identitetsautentisering är standard i CLI version 2.49.0 eller senare.
  • Aks-preview-tillägget måste avinstalleras från AKS-kluster med hjälp av kommandot az extension remove --name aks-preview.

Prometheus mätvärden

Använd -enable-azure-monitor-metrics alternativet med az aks create eller az aks update beroende på om du skapar ett nytt kluster eller uppdaterar ett befintligt kluster för att installera tilläggsprogrammet för metrik som skrapar Prometheus-metrik. Då används konfigurationen som beskrivs i standardkonfigurationen för Prometheus-mått i Azure Monitor. För att ändra den här konfigurationen, se Anpassa insamling av Prometheus-metrik i Azure Monitor-hanterad tjänst för Prometheus .

Se följande exempel.

### Use default Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group>

### Use existing Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <workspace-name-resource-id>

### Use an existing Azure Monitor workspace and link with an existing Grafana workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <azure-monitor-workspace-name-resource-id> --grafana-resource-id  <grafana-workspace-name-resource-id>

### Use optional parameters
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --ksm-metric-labels-allow-list "namespaces=[k8s-label-1,k8s-label-n]" --ksm-metric-annotations-allow-list "pods=[k8s-annotation-1,k8s-annotation-n]"

Exempel

az aks create/update --enable-azure-monitor-metrics --name "my-cluster" --resource-group "my-resource-group" --azure-monitor-workspace-resource-id "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/microsoft.monitor/accounts/my-workspace"

Valfria parametrar

Vart och ett av kommandona ovan tillåter följande valfria parametrar. Parameternamnet är olika för varje, men deras användning är densamma.

Parameter Namn och beskrivning
Anteckningsnycklar --ksm-metric-annotations-allow-list

Kommaavgränsad lista över Kubernetes-annoteringar som används i resursens kube_resource_annotations mått. Till exempel är kube_pod_annotations annoteringsmetrik för poddresursen. Som standard innehåller det här måttet endast namn- och namnområdesetiketter. Om du vill inkludera fler anteckningar anger du en lista över resursnamn i pluralform och Kubernetes-anteckningsnycklar som du vill tillåta för dem. En enskild * kan tillhandahållas för varje resurs för att tillåta eventuella anteckningar, men detta har allvarliga prestandakonsekvenser. Exempel: pods=[kubernetes.io/team,...],namespaces=[kubernetes.io/team],...
Nycklar för etiketter --ksm-metric-labels-allow-list

Kommaavgränsad lista över fler Kubernetes-etikettnycklar som används i kube_resource_labels mått för resursen. Till exempel är kube_pod_labels den etikettmetrik för poddresursen. Som standard innehåller det här måttet endast namn- och namnområdesetiketter. Om du vill inkludera fler etiketter anger du en lista med resursnamn i pluralform och Kubernetes-etikettnycklar som du vill tillåta för dem En enda * kan tillhandahållas för varje resurs för att tillåta etiketter, men det här har allvarliga prestandakonsekvenser. Exempel: pods=[app],namespaces=[k8s-label-1,k8s-label-n,...],...
Inspelningsregler --enable-windows-recording-rules

Gör att du kan aktivera de inspelningsregelgrupper som krävs för att Windows-instrumentpanelerna ska fungera korrekt.

Containerloggar

Använd --addon monitoring-alternativet med az aks create för ett nytt kluster eller az aks enable-addon för att uppdatera ett befintligt kluster för att aktivera insamlingen av containerloggar. Se nedan för att ändra loggsamlingsinställningarna.

Se följande exempel.

### Use default Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name>

### Use existing Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id>

### Use custom log configuration file
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id> --data-collection-settings dataCollectionSettings.json

### Use legacy authentication
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id> --enable-msi-auth-for-monitoring false

Exempel

az aks enable-addons --addon monitoring --name "my-cluster" --resource-group "my-resource-group" --workspace-resource-id "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"

Loggkonfigurationsfil

Om du vill anpassa loggsamlingsinställningarna för klustret kan du ange konfigurationen som en JSON-fil med följande format. Om du inte anger någon konfigurationsfil används standardinställningarna i tabellen nedan.

{
  "interval": "1m",
  "namespaceFilteringMode": "Include",
  "namespaces": ["kube-system"],
  "enableContainerLogV2": true, 
  "streams": ["Microsoft-Perf", "Microsoft-ContainerLogV2"]
}

Var och en av inställningarna i konfigurationen beskrivs i följande tabell.

Namn Beskrivning
interval Avgör hur ofta agenten samlar in data. Giltiga värden är 1–30 m i 1m intervall Om värdet ligger utanför det tillåtna intervallet är det standardvärdet 1 m.

Förvalt: 1 m.
namespaceFilteringMode Inkludera: Samlar endast in data från värdena i fältet namnområden .
Exkludera: Samlar in data från alla namnområden förutom värdena i fältet namnområden .
Av: Ignorerar val av namnområde och samlar in data på alla namnområden.

Standard: Av
namespaces Matris med kommaavgränsade Kubernetes-namnområden för att samla in inventerings- och perf-data baserat på namnområdetFilteringMode.
Till exempel samlar namnrymder = ["kube-system", "default"] med inställningen Inkludera endast dessa två namnområden. Med inställningen Exkludera samlar agenten in data från alla andra namnområden förutom kube-system och standard. Med en Av-inställning samlar agenten in data från alla namnområden, inklusive kube-system och standard. Ogiltiga och okända namnområden ignoreras.

Ingen.
enableContainerLogV2 Boolesk flagga för att aktivera ContainerLogV2-schema. Om värdet är true matas stdout-/stderr-loggarna in i tabellen ContainerLogV2 . Annars matas containerloggarna in i tabellen ContainerLog , om inget annat anges i ConfigMap. När du anger enskilda strömmar måste du inkludera motsvarande tabell för ContainerLog eller ContainerLogV2.

Standard: Sant
streams En matris med tabellströmmar. Se Stream-värden för en lista över giltiga strömmar och deras motsvarande tabeller.

Förvald: ContainerLogV2, KubeEvents, KubePodInventory

Strömma värden

När du anger vilka tabeller som ska samlas in med HJÄLP av CLI eller ARM anger du ett dataströmnamn som motsvarar en viss tabell på Log Analytics-arbetsytan. I följande tabell visas dataströmnamnet för varje tabell.

Anteckning

Om du är bekant med strukturen för en datainsamlingsregel anges dataströmnamnen i den här tabellen i avsnittet Dataflöden i DCR.

Strömning Tabell för containerinsikter
Microsoft-ContainerInventory Behållarinventarie
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft -ContainerLogV2-HighScale ContainerLogV2 (högskalat läge)1
Microsoft-ContainerNodeInventory Inventeringslista för Containernoder
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

1 Använd inte både Microsoft-ContainerLogV2 och MicrosoftContainerLogV2-HighScale tillsammans. Detta resulterar i dubbletter av data.

Tillämpliga tabeller och mått

Inställningarna för insamlingsfrekvens och namnområdesfiltrering gäller inte för alla loggdata. I följande tabeller visas tabellerna i Log Analytics-arbetsytan tillsammans med de inställningar som gäller för var och en.

Tabellnamn Intervall? Namnområden? Anmärkningar
Behållarinventarie Yes Yes
Inventeringslista för Containernoder Yes Nej Datainsamlingsinställningen för namnområden är inte tillämplig eftersom Kubernetes Node inte är en resurs med namnområdesomfång
KubeNodeInventory Yes Nej Datainsamlingsinställningen för namnområden är inte tillämplig Kubernetes Node är inte en resurs med namnområdesomfång
KubePodInventory Yes Yes
KubePVInventory Yes Yes
KubeServices Yes Yes
KubeEvents Nej Yes Datainsamlingsinställning för intervall gäller inte för Kubernetes-händelser
Perf Yes Yes Datainsamlingsinställningen för namnområden gäller inte för Kubernetes Node-relaterade mått eftersom Kubernetes-noden inte är ett namnområdesomfångsobjekt.
InsightsMetrics Yes Yes Datainsamlingsinställningar gäller endast för mått som samlar in följande namnområden: container.azm.ms/kubestate, container.azm.ms/pv och container.azm.ms/gpu

Anteckning

Namnområdesfiltrering gäller inte för ama-logs-agentposter. Även om kube-system-namnområdet visas bland undantagna namnområden kommer poster som är associerade med ama-logs-agentcontainern fortfarande att matas in.

Metrisk namnrymd Intervall? Namnområden? Anmärkningar
Insikter.container/noder Yes Nej Noden är inte en resurs med namnområdesomfång
Insights.container/poddar Yes Yes
Insights.behållare/behållare Yes Yes
Insights.container/persistentvolumes Yes Yes

Särskilda scenarier

Kontrollera referenserna nedan för konfigurationskrav för specifika scenarier.

Aktivera kontrollplansloggar

Kontrollplansloggar implementeras som resursloggar i Azure Monitor. Om du vill samla in loggarna skapar du en diagnostikinställning för klustret. Skicka dem till samma Log Analytics-arbetsyta som dina containerloggar.

Använd kommandot az monitor diagnostic-settings create för att skapa en diagnostikinställning med Azure CLI. I dokumentationen för det här kommandot finns beskrivningar av dess parametrar.

I följande exempel skapas en diagnostikinställning som skickar alla Kubernetes-kategorier till en Log Analytics-arbetsyta. Detta inkluderar resursspecifikt läge för att skicka loggarna till specifika tabeller som anges i Resursloggar som stöds för Microsoft.ContainerService/fleets.

az monitor diagnostic-settings create \
--name 'Collect control plane logs' \
--resource  /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ContainerService/managedClusters/<cluster-name> \
--workspace /subscriptions/<subscription ID>/resourcegroups/<resource group name>/providers/microsoft.operationalinsights/workspaces/<log analytics workspace name> \
--logs '[{"category": "karpenter-events","enabled": true},{"category": "kube-audit","enabled": true},
{"category": "kube-apiserver","enabled": true},{"category": "kube-audit-admin","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},{"category": "fleet-member-agent","enabled": true},{"category": "fleet-member-net-controller-manager","enabled": true},{"category": "fleet-mcs-controller-manager","enabled": true}]'
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--export-to-resource-specific true

Verifiera driftsättningen

Använd kommandoradsverktyget kubectl för att kontrollera att agenten har distribuerats korrekt.

Hanterad Prometheus

Kontrollera att DaemonSet har distribuerats korrekt i Linux-nodpoolerna

kubectl get ds ama-metrics-node --namespace=kube-system

Antalet poddar ska vara lika med antalet Linux-noder i klustret. Utdata bör likna följande exempel:

User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-metrics-node   1         1         1       1            1           <none>          10h

Kontrollera att Windows-noder har distribuerats korrekt

kubectl get ds ama-metrics-win-node --namespace=kube-system

Antalet poddar ska vara lika med antalet Windows-noder i klustret. Utdata bör likna följande exempel:

User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME                   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-metrics-win-node   3         3         3       3            3           <none>          10h

Kontrollera att de två Replica Sets har blivit implementerade för Prometheus

kubectl get rs --namespace=kube-system

Utdata bör likna följande exempel:

User@aksuser:~$kubectl get rs --namespace=kube-system
NAME                            DESIRED   CURRENT   READY   AGE
ama-metrics-5c974985b8          1         1         1       11h
ama-metrics-ksm-5fcf8dffcd      1         1         1       11h

Containerloggning

Kontrollera att DaemonSets har distribuerats korrekt i Linux-nodpoolerna

kubectl get ds ama-logs --namespace=kube-system

Antalet poddar ska vara lika med antalet Linux-noder i klustret. Utdata bör likna följande exempel:

User@aksuser:~$ kubectl get ds ama-logs --namespace=kube-system
NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-logs   2         2         2         2            2           <none>          1d

Kontrollera att Windows-noder har distribuerats korrekt

kubectl get ds ama-logs-windows --namespace=kube-system

Antalet poddar ska vara lika med antalet Windows-noder i klustret. Utdata bör likna följande exempel:

User@aksuser:~$ kubectl get ds ama-logs-windows --namespace=kube-system
NAME                   DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR     AGE
ama-logs-windows           2         2         2         2            2       <none>            1d

Verifiera distributionen av containerloggningslösningen

kubectl get deployment ama-logs-rs --namespace=kube-system

Utdata bör likna följande exempel:

User@aksuser:~$ kubectl get deployment ama-logs-rs --namespace=kube-system
NAME          READY   UP-TO-DATE   AVAILABLE   AGE
ama-logs-rs   1/1     1            1           24d

Visa konfiguration med CLI

aks show Använd kommandot för att ta reda på om lösningen är aktiverad, resurs-ID för Log Analytics-arbetsytan och sammanfattningsinformation om klustret.

az aks show --resource-group <resourceGroupofAKSCluster> --name <nameofAksCluster>

Kommandot returnerar JSON-formaterad information om lösningen. Avsnittet addonProfiles bör innehålla information om omsagent som i följande exempel:

"addonProfiles": {
    "omsagent": {
        "config": {
            "logAnalyticsWorkspaceResourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
            "useAADAuth": "true"
        },
        "enabled": true,
        "identity": null
    },
}

Nästa steg