An Azure service that is used to collect, analyze, and act on telemetry data from Azure and on-premises environments.
The behavior being observed matches the documented design for Windows metrics with Azure Monitor managed service for Prometheus on AKS today.
-
windowsexporter = truecontrols scraping, not deployment
For AKS clusters, the Windows metrics section explicitly instructs to manually install windows-exporter:
"Manually install windows-exporter on AKS nodes to access Windows metrics by deploying the
windows-exporter-daemonsetYAML file."
and then:
"Enable Windows metrics Set the
windowsexporterandwindowskubeproxyBooleans totruein your metrics settings ConfigMap and apply it to the cluster."
This shows that:
-
windowsexporter = trueenables the scrape configuration in the Azure Monitor Agent (ama-metrics) so that it scrapes the Windows exporter endpoint. - It does not deploy or run the Windows exporter itself.
- The agent expects a Windows exporter endpoint to already exist on the node (as seen with the scrape to
NODE_IP:9182/metrics).
This matches the observation that metrics only appear after deploying a windows-exporter DaemonSet.
- Manual
windows-exporterDaemonSet is the expected and recommended approach (for AKS)
The AKS guidance states:
"Manually install windows-exporter on AKS nodes to access Windows metrics by deploying the
windows-exporter-daemonsetYAML file."
and provides the official YAML and required collectors:
- Use the upstream
windows-exporter-daemonset.yamlfromprometheus-community/windows_exporter. - Enable collectors:
[defaults],container,memory,process,cpu_info. - Deploy via:
kubectl apply -f windows-exporter-daemonset.yaml - Apply tolerations if Windows nodes are tainted.
So for Azure Managed Prometheus on AKS:
- Yes, it is expected that Managed Prometheus does not automatically deploy
windows-exporter. - Manual deployment of a
windows-exporterDaemonSet is the recommended and documented approach to expose Windows node metrics.
- Officially supported images/configurations
The documentation for AKS and Arc-enabled clusters points to the prometheus-community/windows_exporter project and its DaemonSet manifest as the supported configuration:
- AKS / Arc guidance both reference:
-
windows-exporter-daemonset.yamlfromprometheus-community/windows_exporter. - Collectors to enable (
container,memory,process,cpu_info, and defaults).
-
Additionally, AKS Windows best practices state:
"Windows Exporter is installed on all Windows nodes in certain regions. To view regional rollout, see AKS Github. With Managed Prometheus and Grafana, you can monitor default collectors included in Windows Exporter on AKS."
and list the default collectors and port:
"The default collectors included in Windows Exporter on AKS are: cpu, cpu_info, cs, container, logical_disk, memory, net, os, process, service, system, textfile. The metrics are exposed on port 19182 on the windows node."
This indicates two modes depending on region/rollout:
- In regions where AKS has built-in Windows Exporter rollout, the exporter is pre-installed on Windows nodes and exposes metrics on port 19182.
- For Managed Prometheus integration, the documented path is still to deploy the
windows-exporter-daemonsetand configure scraping viawindowsexporter = true.
- Why
windowsexporter = truedoes not provision the exporter
From the AKS and Arc docs, the responsibilities are clearly separated:
- Exporter lifecycle (deployment, versioning, resource limits) is left to the cluster/operator (via DaemonSet or platform rollout).
- Scraping and forwarding to Azure Monitor is handled by the Azure Monitor Metrics add-on (Managed Prometheus) and controlled via the metrics settings ConfigMap.
Thus, windowsexporter = true is designed to:
- Turn on the scrape job for Windows exporter endpoints.
- Not manage or provision the exporter itself.
- Planned/"native" support vs Linux
The current documented state:
- For Arc-enabled Kubernetes with the Prometheus solution, the Windows exporter is part of the solution stack:
"As part of the Prometheus solution in AKS enabled by Arc, the following components are deployed and automatically configured: ... Windows exporter. Once you deploy the Prometheus solution, ... the Windows exporter runs on each Windows node."
- For Managed Prometheus on AKS, Windows metrics are described as Preview, with explicit manual steps:
"Windows metric collection is enabled for AKS clusters as of version ... Onboarding to the Azure Monitor Metrics add-on enables the Windows DaemonSet pods to start running on your node pools. ... Manually install windows-exporter on AKS nodes ... Set the
windowsexporterandwindowskubeproxyBooleans totrue... Enable the recording rules ..."
The documentation does not state that Managed Prometheus will automatically deploy and manage Windows exporter in the same way as Linux node metrics. Instead, it documents manual deployment plus configuration flags and recording rules as the supported pattern.
- Recommended best practice for the described scenario
For an AKS cluster with Linux and Windows node pools using Azure Managed Prometheus:
- Deploy Windows exporter:
- Use the official
windows-exporter-daemonset.yamlfromprometheus-community/windows_exporter. - Ensure
hostNetwork: trueand the expected port (e.g., 9182 if that is what ama-metrics is scraping in the environment). - Add tolerations for Windows node taints if required.
- Use the official
- Enable scraping and rules:
- In
ama-metrics-settings-configmap, set:-
windowsexporter = true -
windowskubeproxy = true(if kube-proxy metrics are needed).
-
- Enable Windows recording rules:
- If onboarding via CLI, use
--enable-windows-recording-rules. - If using ARM/Bicep/Policy, set
enableWindowsRecordingRules = trueor deploy the provided Windows recording rules ARM template.
- If onboarding via CLI, use
- In
- Use Managed Grafana dashboards:
- The Windows-specific dashboards listed in AKS best practices (e.g., "Kubernetes / Compute Resources / Node (Windows)") rely on these metrics and recording rules.
This aligns with the behavior being observed and with the current documentation.
References:
- Enable monitoring for AKS clusters
- Enable monitoring for Arc-enabled Kubernetes clusters
- Best practices for Windows containers on Azure Kubernetes Service (AKS)
- Monitor and log data
- Use Prometheus exporters for common workloads with managed service for Prometheus
- Troubleshoot collection of Prometheus metrics in Azure Monitor
- Collect Istio metrics by using managed service for Prometheus