作者: 颍川
引言
微软 Windows 是以后支流操作系统之一,在桌面和服务端均有较大市场份额。
对于 Linux 操作系统,Prometheus 能够通过 Node Exporter 来进行根底资源(CPU、内存、磁盘、网络等)监控,相似地,对于 Windows 操作系统,咱们也须要对这个 OS 环境下的根底资源进行 Prometheus 监控。
Windows 简介
Windows 是美国微软公司以图形用户界面为根底研发的操作系统。目前罕用的版本 Windows Server 2008R2 和 Desktop Windows 7 及以上。因为 Windows 已广为大家所相熟,本文不再赘述其性能和特点。
Windows Metric 监控参考模型
咱们从指标采集、监控大盘、告警规定等 3 方面定义了 Windows Metric 监控的参考模型,以便实现监控闭环。
指标采集
Windows 根底监控指标次要蕴含 CPU、内存、磁盘、网络和过程等四方面。上面别离介绍各方面的次要指标。
CPU 指标
CPU 是计算机的大脑,作为计算机系统的运算和管制外围,是信息处理、程序运行的最终执行单元。咱们倡议关注如下次要指标。
内存指标
内存是用于暂存 CPU 中的运算数据,以及与硬盘等内部存储器替换的数据。它是磁盘与 CPU 进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体施展的程度。咱们倡议关注如下次要指标。
磁盘指标
艰深来讲,咱们所说的磁盘是计算机内部存储设备的总称,当初常见的有传统硬盘 HDD [5 ]、混合硬盘 HHD [6 ] 和固态硬盘 SSD *[7 ] *。咱们倡议关注如下次要指标。
网络指标
计算机网络是计算机之间进行实时互通的渠道。目前通常是基于 TCP/IP 协定构建的。咱们倡议关注如下次要指标。
过程指标
过程是操作系统进行资源分配和调度的根本单位,是操作系统构造的根底。咱们倡议关注如下次要指标。
监控大盘
参考 Linux 宽泛应用的 Node Exporter 监控大盘,联合 Windows 本身的特点,咱们倡议默认监控大盘至多蕴含以下指标 panel:
- CPU
<!—->
-
- 使用率(%):Windows 失常运行最重要的指标之一。
- DPC 队列长度、期待线程队列长度、上下文切换次数:反馈 Windows 系统调度忙碌水平的重要指标。
- 内存
<!—->
-
- 物理内存使用率(%)、虚拟内存使用率(%):Windows 失常运行最重要的指标之一。
- 分页文件使用率(%)、分页错误率(%)。
- 分页 / 非分页内存量。
- 磁盘
<!—->
-
- 空间使用率(%):显示磁盘残余可用空间。
- 磁盘闲暇率(%):反映磁盘忙碌程序。
- 读写 IOPS、读写队列长度:反馈过程对磁盘的操作状态。
- 网络
<!—->
-
- 流入 / 出速率(bit/s):反映网络忙碌水平的外围指标。
- TCP 连接数(Listen、total、non_established、established):反映过程应用网络的各阶段状态。
- TCP 重传次率:反映 Windows 与外界交互的网络稳定性。
- 过程
<!—->
-
- CPU 使用率(%):展现过程耗用 CPU 的状况。
- 内存使用率(%):展现过程应用内存状况。
- 句柄数。
- IO 字节数:展现过程 IO 读写量。
最初,为了不便运维人员疾速查看所治理 Windows 集群的整体运行状况,咱们还倡议配置 TopN(蕴含 CPU 使用率、磁盘空间使用率、磁盘闲暇率、网络流量等要害指标)大盘。
告警规定
依据后面对各项次要指标的介绍,咱们倡议配置至多如下默认告警规定:
- CPU
<!—->
-
- 使用率:继续 n 分钟超过 x%(参考值:80%),示意 CPU 已成为瓶颈。
- 期待解决线程队列长度:继续 n 分钟过 CPU 核数 *2,示意 CPU 调度已满负荷。
- 内存
<!—->
-
- 物理内存使用率:继续 n 分钟超过 x%(参考值:90%),示意内存资源已有余。
- 磁盘
<!—->
-
- 空间使用率:继续 n 分钟大于 x%(参考值:85%),示意磁盘残余空间有余,零碎行将进入不可知状态。
- 闲暇率:继续 n 分钟小于 x%(参考值:15%),示意磁盘过于忙碌。
- 网络
<!—->
-
- 网络连接数(established):继续 n 分钟大于 x 个,示意网络连接数过多。
- 网络连接数(non_established):继续 n 分钟大于 x 个,示意可能存在网络连接过载或敞开异样。
- TCP 重传率:继续 n 分钟大于 x%(参考值:5%),示意网络负载过重或网络不稳固。
自建 Prometheus 监控 Windows 的痛点
通常咱们以后的 Windows 都是部署在 ECS 上,因而自建 Prometheus 监控 Windows/ECS 时,咱们将面临的典型问题有:
- 因为平安、组织治理等因素,用户业务通常部署在多个互相隔离的 VPC,须要在多个 VPC 内都反复、独立部署 Prometheus,导致部署和运维老本高。
2. 每套残缺的自建监控零碎都须要装置并配置 Prometheus、Grafana、AlertManager 等,过程简单、施行周期长。
- 短少与阿里云 ECS 无缝集成的服务发现(ServiceDiscovery)机制,无奈依据 ECS 标签来灵便定义抓取 targets。如果自行实现相似性能,则须要应用 GOlang 语言开发代码(调用阿里云 ECS POP 接口)、集成进开源 Prometheus 代码、编译打包后部署,实现门槛高、过程简单、版本升级艰难。
- 罕用开源 Grafana Windows 大盘不够业余,短少联合 Windows 原理 / 特色和最佳实际进行深刻优化。
- 短少 Windows 告警指标模板,须要用户自行钻研、配置告警项,工作量大。
Windows 监控场景下,自建 Prometheus 与阿里云 Prometheus 比照
阿里云 Prometheus 监控 *[9 ] * 是一款全面对接开源 Prometheus 生态,反对类型丰盛的组件观测,提供多种开箱即用的预置观测大盘,且提供全面托管的混合云 / 多云 Prometheus 服务。除了反对阿里云容器服务、自建 Kubernetes、Remote Write 外,阿里云 Prometheus 还提供混合云 + 多云 ECS 利用的 metric 观测能力;并且反对多实例聚合观测能力,实现 Prometheus 指标的对立查问,对立 Grafana 数据源和对立告警。
阿里云 Prometheus 与 ECS 无缝集成,默认提供了 Windows 的 CPU、内存、磁盘、网络和过程等 5 方面的外围监控指标采集,同时提供了对应的优化后的监控大盘和告警指标,为用户提供了开箱即用的 Windows 监控能力。
应用阿里云 Prometheus 监控 Windows
上面介绍如何应用阿里云 Prometheus 进行 Windows 的监控,包含接入配置、查看监控大盘和配置告警规定等三方面。
接入 Windows 配置
首先须要用户按部署和配置 Windows Exporter 文档 *[10 ] *,自行在 Windows 机器上装置和配置 exporter,以便将裸露 Metric 给阿里云 Prometheus。
登录阿里云 Prometheus 控制台,拜访 ARMS 接入核心 *[11 ] *,点击组件利用“Windows”的“增加”按钮,在弹出界面抉择 Windows 所部署的环境(目前反对“阿里云 ECS 环境”),抉择 Windows 所在的 Prometheus 实例,而后填写监控接入的配置信息。
- Exporter 名称:以后 Windows 监控惟一命名。
- Exporter 端口:部署 Windows Exporter 时配置的监听端口。
- 采集门路:Prometheus 采集 Windows Exporter 的 http path,默认是 /metrics。
- 采集距离(秒):监控数据采集工夫距离。
- ECS 标签 / 值:已部署 Windows Exporter 的 ECS 标签和标签值,Prometheus 通过此标签进行服务发现(Service Discovery)。
查看 Windows 监控大盘
阿里云 Prometheus 默认提供了 Windows 明细、Windows 过程和 TopN 等三个大盘。
进入 Prometheus 实例的集成核心,点击“Windows”,在弹出界面抉择“大盘”tab 页,点击大盘缩略图,即可查看对应 Grafana 大盘。
Windows 明细大盘
明细大盘展现了指定 Windows 零碎的 CPU、内存、磁盘和网络等四方面的重要指标。
Windows 过程大盘
过程大盘展现各个过程的 CPU、内存、线程和 IO 监控状况,不便咱们对过程级异样进行排查。
Windows TopN 大盘
TopN 大盘别离展现所监控的 Windows 集群中,要害指标(CPU、内存、磁盘和网络)的 Top5 节点,不便咱们对整个 Windows 集群总体衰弱水平疾速把握。
配置 Windows 监控告警
进入 Prometheus 实例的集成核心,点击“Windows”,在弹出界面抉择“告警”tab 页,即可查看 / 新增以后 Prometheus 实例的 Windows 告警规定。目前提供 CPU、内存、磁盘和网络等四方面的 11 个要害告警指标,用户可依据理论状况实例化告警规定。创立 Prometheus 告警的具体操作步骤,详见 Prometheus 告警规定 *[12 ] * 文档。
自定义 Windows 监控项
阿里云 Prometheus 提供的 Windows Exporter 默认配置的采集项有:cpu, cpu_info, memory, process, tcp, cs, logical_disk, net, os, system, textfile, time。Windows Exporter 还提供了 Active Directory、Container、DNS 等 Windows 组件的 Metric 采集,用户可依据理论业务需要,批改 config 配置文件,而后重启 windows_exporter 服务即可失效,详见 Windows Exporter 官网文档 *[13 ] *。
结束语
阿里云 Prometheus 与阿里云容器服务和 ECS 无缝集成,默认提供了 Windows 的 CPU、内存、磁盘、网络和过程等 5 方面的外围监控指标采集,同时提供了对应的优化后的专家级监控大盘和告警指标模板,为用户提供了免运维、开箱即用的 Windows 监控能力。目前反对 ECS 环境的 Windows 监控,行将公布对阿里云容器服务(ACK、注册集群等)的 Windows 节点监控,敬请期待。
相干链接
[1] 参考 Microsoft 指南:
https://learn.microsoft.com/z…
[2] 参考 Microsoft 文档
https://learn.microsoft.com/e…
*[3] 内核模式程序调用
*
https://learn.microsoft.com/z…
[4] xperf
https://learn.microsoft.com/e…
[5] 传统硬盘 HDD
https://en.wikipedia.org/wiki…
[6] 混合硬盘 HHD
https://en.wikipedia.org/wiki…
[7] 固态硬盘 SSD
https://en.wikipedia.org/wiki…
[8] CacheSet 工具
https://learn.microsoft.com/z…
[9] 阿里云 Prometheus 监控
https://help.aliyun.com/docum…
[10] 部署和配置 Windows Exporter 文档
https://help.aliyun.com/docum…
[11] ARMS 接入核心
https://common-buy.aliyun.com…
[12] Prometheus 告警规定
https://help.aliyun.com/docum…
[13] Windows Exporter 官网文档
https://github.com/prometheus…