AKS托管Prometheus无法采集Windows Pod指标问题排查求助
AKS托管Prometheus监控Windows Pod无数据排查指南
以下是针对问题的具体排查步骤,覆盖配置、运行状态、网络、数据链路等核心环节:
1. 检查Prometheus的Windows指标采集规则
- 确认托管Prometheus中已启用Windows节点/Pod的采集Job:
- 通过Azure CLI查看采集规则:
az monitor prometheus rule list --resource-group <你的资源组名> --cluster-name <AKS集群名>,检查是否包含针对Windows节点的scrape配置,重点看目标端口(默认9182)、路径(/metrics)是否正确 - 如果使用自定义采集规则,核对是否遗漏了Windows节点的标签筛选(比如
kubernetes.io/os=windows)
- 通过Azure CLI查看采集规则:
2. 验证Windows节点上的exporter运行状态
- 查看
windows-exporterDaemonSet的运行情况:kubectl get daemonsets -n kube-system ama-windows(对应Azure Monitor的Windows采集组件),确认所有Windows节点上都有Running状态的Pod - 查看Pod日志排查采集错误:
kubectl logs <ama-windows-pod-name> -n kube-system,重点看是否有"failed to collect metrics"类的报错,比如权限不足、组件依赖缺失 - 直接在Windows节点内验证指标输出:通过kubectl exec进入Pod,执行
Invoke-WebRequest -Uri http://localhost:9182/metrics,确认能返回完整的指标文本
3. 排查网络连通性问题
- 测试Prometheus采集端到Windows节点的端口连通性:在集群内的Linux Pod中执行
nc -zv <Windows节点内部IP> 9182,确保能连通 - 检查Windows节点对应的NSG规则:确认入站规则允许9182端口的流量,来源范围包含AKS集群的服务CIDR或Azure Monitor采集服务的IP段
- 检查集群网络策略:如果配置了NetworkPolicy,确认没有阻止Prometheus组件访问Windows节点的9182端口
4. 核对Grafana仪表盘的指标匹配逻辑
- 打开Grafana Windows仪表盘的编辑模式,查看核心查询语句(比如CPU、内存指标的查询)
- 复制查询语句到托管Prometheus的查询界面执行,比如
node_cpu_seconds_total{node_os_name="Windows"},看是否有返回数据 - 检查采集到的Windows指标标签是否和仪表盘预期一致:比如是否存在
kubernetes_namespace、pod等关键标签,避免仪表盘因标签不匹配过滤掉数据
5. 确认托管Prometheus的数据摄入状态
- 登录Azure门户进入托管Prometheus资源,查看"数据摄入"面板,确认有Windows相关的指标流入记录
- 查看Prometheus自身的监控指标:执行
scrape_samples_scraped{job="windows-exporter"}和scrape_samples_post_metric_relabeling{job="windows-exporter"},如果后者远小于前者,说明有大量指标被relabel规则丢弃,需要核对标签重写配置
6. 检查AKS集群的基础配置
- 确认Windows节点的OS版本符合要求:必须是Windows Server 2019及以上,且AKS集群版本不低于1.23(对应支持Windows监控的最低版本)
- 检查Azure Monitor Container Insights是否已部署到Windows节点:
kubectl get pods -n kube-system | grep ama-windows,确保每个Windows节点都有对应的采集Pod运行
内容的提问来源于stack exchange,提问作者mattb
相关产品推荐
相关产品推荐

