从 Managed Prometheus 插件容器的版本 6.4.0-main-02-22-2023-3ee44b9e 开始,已启用 Windows 指标收集功能用于 AKS 群集。 加入 Azure Monitor 指标附加组件可使 Windows 守护进程集 pod 在节点池上开始运行。 支持 Windows Server 2019 和 Windows Server 2022。 按照以下步骤使 Pod 能够从 Windows 节点池收集指标。
注释
没有 CPU/内存限制windows-exporter-daemonset.yaml
,因此可能会超额分配 Windows 节点。 有关详细信息,请参阅 资源预留
在部署工作负载时,请对容器设置资源内存和 CPU 限制。 这也会从 NodeAllocatable 中扣减,并且可以帮助群集范围的计划程序确定将哪些 pod 放置在哪些节点上。 在没有限制的情况下调度 Pod 可能会导致 Windows 节点过度配置,并且在极端情况下可能会导致节点不健康。
安装 Windows 导出程序
通过部署 windows-exporter-daemonset YAML 文件,在 AKS 节点上手动安装 windows 导出程序以访问 Windows 指标。 启用以下收集器:
[defaults]
container
memory
process
cpu_info
有关更多收集器,请参阅 用于 Windows 系统度量指标的 Prometheus 导出器。
部署 windows-exporter-daemonset YAML 文件。 如果在节点中应用了任何污点,则需要应用适当的容忍度。
kubectl apply -f windows-exporter-daemonset.yaml
应用 ConfigMap
将 ama-metrics-settings-configmap 应用到群集。 将 windowsexporter
和 windowskubeproxy
布尔值设置为 true
。 有关详细信息,请参阅指标加载项设置 configmap。
启用录制规则
启用开箱即用仪表板所需的录制规则:
- 如果使用 CLI 载入,请包含选项
--enable-windows-recording-rules
。 - 如果使用 ARM 模板、Bicep 或 Azure Policy 载入,在参数文件中将
enableWindowsRecordingRules
设置为true
。 - 如果群集已载入,使用此 ARM 模板和此参数文件以创建规则组。 这会添加所需的记录规则,这不是在集群上的 ARM 操作,不会影响集群目前的监控状态。
为已启用 Arc 的群集添加抓取作业
如果要为启用了 ARC 的群集启用托管版 Prometheus,则可以配置该群集中的 Linux 节点上运行的托管版 Prometheus,从运行在 Windows 节点上的终结点抓取指标。 将以下抓取任务添加到 ama-metrics-prometheus-config-configmap.yaml,并将 configmap 应用到集群。
scrape_configs:
- job_name: windows-exporter
scheme: http
scrape_interval: 30s
label_limit: 63
label_name_length_limit: 511
label_value_length_limit: 1023
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__meta_kubernetes_node_name]
target_label: instance
- action: keep
source_labels: [__meta_kubernetes_node_label_kubernetes_io_os]
regex: windows
- source_labels:
- __address__
action: replace
target_label: __address__
regex: (.+?)(\:\d+)?
replacement: $$1:9182
Windows 群集与 Linux 群集之间的差异
监视 Windows Server 群集与监视 Linux 群集相比,主要差异包括:
- Windows 没有内存 RSS 指标。 因此它不适用于 Windows 节点和容器。 工作集指标已可用。
- 磁盘存储容量信息不适用于 Windows 节点。
- 仅监视 Pod 环境,不监视 Docker 环境。
- 使用预览版时,最多支持 30 个 Windows Server 容器。 此限制不适用于 Linux 容器。
注释
容器见解对 Windows Server 2022 操作系统的支持目前为预览版。
容器化 Linux 代理 (replicaset pod) 向群集内 Kubelet 安全端口 (10250) 上的所有 Windows 节点进行 API 调用,以收集与节点和容器性能相关的指标。 应在群集的虚拟网络中针对入站和出站打开 Kubelet 安全端口 (:10250),以便正常收集 Windows 节点和容器性能相关指标。
如果你有一个包含 Windows 节点的 Kubernetes 群集,请查看并配置网络安全组和网络策略,确保在群集的虚拟网络中针对入站和出站打开 Kubelet 安全端口 (:10250)。
kubectl apply -f ama-metrics-prometheus-config-configmap.yaml