文档

如何使用Prometheus监控Windows

更新时间:

本文介绍如何使用Prometheus监控Windows。

前提条件

已将VPC实例接入可观测监控 Prometheus 版。具体操作,请参见Prometheus实例 for ECS

使用限制

目前仅Prometheus实例 for ECS类型实例支持该组件接入。

Windows Metric监控参考模型

这里以Metric采集、监控大盘、告警规则三个维度定义Windows Metric监控的参考模型,以实现对Windows全方位的监控。

Metric采集

Windows基础监控指标主要包含CPU、内存、磁盘、网络和进程等。

CPU指标

CPU作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,您可以关注以下主要指标。

指标名称

指标级别

指标来源

指标说明

CPU使用率(%)

Critical

WMI(PercentProcessorTime)

若长时间CPU使用率达到100%,表示资源已达瓶颈。此时结合处理器队列的长度指标,即可以确定机器工作负载是否太高。

高CPU使用率和处理器队列长度的峰值意味着操作系统缺乏足够的计算资源来完成任务。

线程上下文切换次数

Major

WMI(ContextSwitchesPersec)

当处理器完成任务执行(或在完成前中断)并切换到新任务时,就会发生上下文切换。上下文切换的具体操作步骤,请参见上下文切换

上下文切换次数高通常表示CPU资源竞争,且达到瓶颈。但是,如果由于某些要求苛刻的硬件设备(中断率相应增加)而发生上下文切换,则可能是其驱动程序问题。

等待线程队列长度

Critical

WMI(ProcessorQueueLength)

处理器队列中的线程已就绪且可运行,但由于其他线程正在使用处理器,导致当前线程无法运行。对于多处理器的系统,如果当前指标值持续大于2倍CPU核数,则意味着CPU已到瓶颈。更多详情,请参考Microsoft文档

中断导致延迟的任务数

Major

WMI(DPCsQueuedPersec)

延迟过程调用(DPC)在Windows系统上提供了一种低优先级中断机制:某些硬件要求实时、不受限制地访问CPU,以确保在需要时执行高优先级的工作(如键盘输入)。

中断提供了一种设备可以中断处理器并强制其执行所请求的操作(触发处理器执行上下文切换)的方法。这样导致,一些设备上的工作可能会被推迟到以后才执行。

通过DPC,实时进程(如设备驱动程序)可以在处理高优先级中断后安排低优先级任务再执行。DPC由内核创建,只能由内核模式程序调用。过高或接近恒定数量的DPC可能会意味着低级别系统软件问题。

特权模式的CPU使用率(%)

Major

WMI(PercentPrivilegedTime )

PrivilegedTime是CPU处理内核模式程序指令的时间。通常系统都有一些规律性的中断触发上下文切换,进而需要特权模式来处理,所以当前指标始终会有一个较小的值(通常不超过10%)。

如果当前指标持续大于30%,需要先检查DPCTime和中断时间,如果任一值超过20%,则很可能是硬件问题。则可以使用Xperf等工具来深入分析有问题的过程。

延迟过程调用的CPU使用率(%)

Major

WMI(PercentDPCTime )

DPCTime是CPU处理延迟过程调用的时间。通常您还需要结合Privileged和Interrupt进行分析。

中断消耗的CPU使用率(%)

Major

WMI(PercentInterruptTime)

中断时间是CPU处理中断的时间。通常还需要结合Privileged和DPC进行分析。

内存指标

内存可用于存储CPU中的运算数据、存储与硬盘等外部存储器交换的数据,您可以关注以下主要指标。

指标名称

指标级别

指标来源

指标说明

可用物理内存(MB)

Critical

WMI(AvailableMBytes)

多个进程之间对RAM的争用将不可避免地导致分页,进而导致性能下降。为了保证机器继续运转,需要确保机器有足够的RAM来处理日常的工作负载。

持续的低内存可用性很可能导致分段错误和其他严重问题,此时建议您增加系统中的物理内存量,并配置适当的内存分页组合。

提交的虚拟内存量(Bytes)

Major

WMI(CommittedBytes)

CommittedBytes表示虚拟内存的实际需求。已分配的内存(无论是物理RAM还是页面文件)将计入已提交的字节总数。当提交字节数接近或超过系统的物理内存时,就会触发磁盘分页,影响到系统整体性能。

如果CommittedBytes的值接近于系统的最大内存,而运行任务中却报内存不足, 则此时需要增加可用的物理内存量或分页文件的大小。通常如果该指标呈持续上升趋势,则还需要持续关注并分析确认原因。

非分页池的内存量(Bytes)

Major

WMI(PoolNonpagedBytes)

Windows内核和硬件设备需要抢占其他线程来执行其时间敏感的工作。出于效率因素,内核和这些设备直接访问物理内存,而不是像用户模式进程那样通过虚拟内存方式。这些特殊的内存池不受磁盘分页的影响。

如果使用这些非分页池内存的组件出现问题可能会对系统造成致命影响。例如,使用非分页池的驱动程序中的内存泄漏可能会导致系统完全挂死,因为用户模式进程的内存要求被转储到磁盘。

页错误(次/秒)

Critical

WMI(PageFaultsPersec)

当进程请求内存中找不到的页面时,就会发生以下页面错误。

  • 软页面错误:表示在内存中的其他位置找到了该页面。

  • 硬页面错误:表示必须从磁盘检索页面。

当前指标包括软错误和硬错误。软页面错误的代价较小,操作系统可以容忍较多的软页面错误。但硬页面错误的代价较大,通常会导致延迟。

如果发现硬页面错误激增,则建议增加系统内存。在重负载情况下,操作系统将不断调整进程的工作内存,导致频繁的页面错误。

从磁盘读取的页数(页/秒)

Major

WMI(PagesInputPersec)

表示从磁盘读取的页面数,以解决硬页面错误。通常结合PagesInputSec和PageFaultsPersec,可以清楚地了解发生的故障类型。PagesInputSec的高值表示硬页面错误,否则就是软页面错误。

当发生硬页面错误时,Windows会尝试将多个连续页面读取到内存中,以期望最大化每次读取所执行的工作。但这反过来可能会影响页面错误的性能,因为读取了可能不需要的页面,却消耗更多的磁盘带宽。此时通过将页面文件放在单独的物理磁盘上,或增加系统可用的RAM数量,可以避免这些问题。

分页文件空间占用率(%)

Recommend

WMI(PagingFile.PercentUsage)

与Linux的交换分区类似,分页文件是Windows系统文件夹中的一个隐藏文件,用于将不经常访问的内存页存储在磁盘上,以释放RAM给其他进程使用。

由于分页文件位于磁盘上,因此对它的读/写不仅会影响整个系统性能,而且还会受到碎片的影响,这会进一步降低系统性能。

默认情况下,Windows管理分页文件,即文件大小可以增加或减少,而无需任何用户介入。但是,在某些情况下,可能您还需要手动设置文件大小,如果分页文件空间被占满,则会导致进程因系统内存不足而无法运行。

磁盘指标

磁盘是计算机外部存储设备的总称,常见的磁盘有传统硬盘HDD混合硬盘HHD固态硬盘SSD,您可以关注以下主要指标。

指标名称

指标级别

指标来源

指标说明

剩余磁盘空间(%)

Critical

WMI(PercentFreeSpace)

操作系统需要保持足够的可用磁盘空间。除了需要磁盘的常规进程之外,核心系统进程还在磁盘上存储日志和其他类型的数据。如果可用磁盘空间下降到15%以下,Windows将发出警告。

磁盘空闲时间(%)

Major

WMI(PercentIdleTime)

表示磁盘空闲的时间百分比。如果将页面文件托管在与操作系统驱动器独立的驱动器上,则应该在OS主驱动器和页面文件的驱动器上明确跟踪、警告此指标。

当磁盘空闲时间持续处于低位,表示磁盘持续繁忙地进行读写操作,此时您需要重点关注该指标。

通常,页面文件磁盘上的高I/O可以认为是内存页访问次数的增加,内存映射到页面文件的任何应用程序都会受此影响。因此建议您将分页文件转移到未使用的驱动器或更快的驱动器(例如SSD)。除了分页文件之外,大量使用磁盘的应用程序(例如数据库)性能会受到长时间高I/O的严重影响。

磁盘读/写操作的平均耗时(秒)

Major

WMI(AvgDisksecPerRead /AvgDisksecPerWrite)

表示磁盘读/写操作所花费的平均时间。通常,大于约30毫秒的值表示相对较高的延迟,您可以通过切换到速度更快的磁盘(例如SSD)来降低延迟。

平均读/写请求队列长度

Major

WMI(AvgDiskQueueLength)

通常,如果平均磁盘读/写队列长度超过驱动器数量的2倍,则表示磁盘已经到达瓶颈。

磁盘读/写操作率(操作/秒)

Major

WMI(DiskTransfersPersec)

如果您的服务器承载了要求及时响应的应用程序(例如数据库),则需要重点监控磁盘I/O速率。

DiskTransfersPerSec是按磁盘标记的读(DiskReadsPerSec)和写(DiskWritesPerSec)活动的集合。

持续的高磁盘I/O可能会导致服务降级和系统不稳定,尤其是在RAM和页面文件使用率较高的情况下。您可以通过增加磁盘数量、使用更快的磁盘(例如SSD)、增加为文件系统缓存所保留的RAM等方式来解决。

内存中文件系统缓存(Bytes)

Recommend

WMI(CacheBytes)

表示文件系统缓存占用的RAM内存大小。分页文件用于将内存内容存储在磁盘上,而文件缓存则将磁盘内容存储在RAM中,以实现更快的访问性能。

如果缓存太小,则访问文件的速度较慢;如果缓存太大,程序最终可能会将内存分页到磁盘,从而降低速度。默认情况下,Windows会自动处理该问题。但某些场景下,您可能需要手动调整文件缓存(例如CacheSet工具)。

如果您正在打开许多大型文件(例如文件大小大于1GB),且调用CreateFile时设置了FILE_FLAG_RANDOM_ACCESS标志,此标志会导致缓存管理器将先前查看的内存页保留在缓存中。当累积的缓存大小超过物理内存量时,系统性能将受到严重影响。

网络指标

计算机网络可以实现计算机之间进行实时互通,通常是基于TCP/IP协议构建的,您可以关注以下主要指标。

指标名称

指标级别

指标来源

指标说明

网络发送/接收速率(字节/秒)

Major

WMI(BytesSentPersec/BytesReceivedPersec)

通过这两个指标,您可以判断网络接口的总网络吞吐量。当吞吐量超过网口带宽的80%时,就会出现网络饱和,此时您可以通过硬件升级来解决。

目前,大多数硬件都是千兆或更高的NIC,所以通常机器网络本身不太可能成为瓶颈,而网络交换节点、网络服务提供商给定的带宽很可能是瓶颈。

网络连接数

Major

WMI

网络连接数包括Listen、Total、Established、Non_Established的连接数据。通过这些数据的绝对值和关系的对比,则可以明确网络连接是否过载(即Established/Non_Established过多)、连接泄露(即Non_Established持续增多)等问题。

TCP重传率(次/秒)

Critical

WMI(SegmentsRetransmittedPersec)

TCP重传发生在传输的消息段在TCP超时窗口内未被确认时,该段被重新发送。导致重传率高的典型场景是网络拥塞和网络硬件故障。

通常该指标值应该是5%以内,因此您需要重点关注该指标并配置告警。

进程指标

进程是操作系统进行资源分配和调度的基本单位,也是操作系统结构的基础,您可以关注以下主要指标。

指标名称

指标级别

指标来源

指标说明

进程CPU占用时间

Major

WMI(PercentPrivilegedTime/PercentUserTime)

该指标可以直观体现进程占用CPU情况,因此您需要重点关注耗用CPU高或突变的进程异动。

进程句柄数

Recommend

WMI(HandleCount)

进程申请各种各样的资源(例如窗口、图标、光标等)时,Windows在创建这些资源时会为其分配内存,并返回标示这些资源的序号,即句柄。

由于Windows对进程拥有的句柄数量有限制,如果进程存在句柄泄露问题,当申请句柄数超过上限时,进程将无法获得资源。

进程线程数

Recommend

WMI(ThreadCount)

一个进程包含n个线程。该指标可以判断指定进程的线程数是否符合预期。

进程内存工作集(Bytes)

Major

WMI(WorkingSet)

进程的工作集是进程的虚拟地址空间中当前驻留在物理内存中的一组页面。 工作集仅包含可分页内存分配,不包含不可分页的内存分配。

进程I/O总量(Bytes)

Major

WMI(IODataBytesPerSec)

进程读写I/O的总量。如果您发现磁盘响应繁忙、响应慢,那么您需要优先查看进程IO量大的进程是否符合预期。

进程I/O请求数(Bytes)

Major

WMI(IODataOperationsPerSec)

进程IO请求速率。

进程分页文件大小(Bytes)

Recommend

WMI(PageFileBytes)

进程占用分页文件的大小。

监控大盘

这里参考Linux广泛使用的Node Exporter监控大盘,并结合Windows自身的特点,建议服务提供的默认监控大盘至少包含以下指标Panel:

指标分类

指标项

CPU

  • CPU使用率(%):Windows正常运行最重要的指标之一。

  • DPC队列长度、等待线程队列长度、上下文切换次数:反映Windows系统调度繁忙程度的重要指标。

内存

  • 物理内存使用率(%)、虚拟内存使用率(%):Windows正常运行最重要的指标之一。

  • 分页文件使用率(%)、分页错误率(%)。

  • 分页/非分页内存量。

磁盘

  • 磁盘空间使用率(%):显示磁盘剩余可用空间。

  • 磁盘空闲率(%):反映磁盘繁忙程度。

  • 磁盘读写IOPS、磁盘读写队列长度:反映进程对磁盘的操作状态。

网络

  • 网络流入/出速率(bit/s):反映网络繁忙程度的核心指标。

  • TCP连接数(Listen、Total、Non_Established、Established):反映进程使用网络的各阶段状态。

  • TCP重传率(次/秒):反映Windows与外界交互的网络稳定性。

进程

  • 进程CPU使用率(%):展示进程耗用CPU的情况。

  • 进程内存使用率(%):展示进程使用内存情况。

  • 进程句柄数。

  • 进程I/O字节数:展示进程I/O读写量。

为了方便运维人员快速查看所管理Windows集群的整体运行情况,这里还建议服务配置TopN(包括CPU使用率、磁盘空间使用率、磁盘空闲率、网络流量等关键指标)大盘。

告警规则

根据上述对主要指标的介绍,这里建议您至少配置如下的默认告警规则:

指标分类

指标项

CPU

  • CPU使用率:若该指标值持续N分钟超过80%,表示CPU已到达瓶颈。

  • 等待处理线程队列长度:若该指标值持续N分钟超过CPU核数的2倍,表示CPU调度已满负荷。

内存

物理内存使用率:若该指标值持续N分钟超过90%,表示内存资源已不足。

磁盘

  • 磁盘空间使用率:若该指标值持续N分钟超过85%,表示磁盘剩余空间不足,系统即将进入不可知状态。

  • 磁盘空闲率:若该指标值持续N分钟低于15%,表示磁盘过于繁忙。

网络

  • 网络连接数(Established):若该指标值持续N分钟超过某一参考值(参考值可自定),表示网络连接数过多。

  • 网络连接数(Non_Established):若该指标值持续N分钟超过某一参考值(参考值可自定),表示可能存在网络连接过载或关闭异常。

  • TCP重传率:若该指标值持续N分钟超过某一参考值(参考值:5%),表示网络负载过重或网络不稳定。

自建Prometheus监控Windows的痛点

通常您使用的Windows都是部署在ECS上,因此使用自建Prometheus监控Windows或者ECS时,可能面临的典型问题有以下几点:

  1. 由于安全、组织管理等因素,您的业务通常部署在多个相互隔离的VPC,因此这需要您在多个VPC内都重复、独立部署Prometheus,导致部署和运维成本较高。

  2. 每套完整的自建监控系统都需要安装并配置Prometheus、Grafana、AlertManager等,其过程复杂、实施周期长。

  3. 缺少与阿里云ECS快速集成的服务发现(ServiceDiscovery)机制,因此无法根据ECS标签来灵活定义抓取Targets。如果自行实现类似功能,则需要您使用Golang语言开发代码调用阿里云ECS POP接口,以集成开源Prometheus代码,然后通过编译打包后部署,这种方式实现门槛高、过程复杂、且版本升级困难。

  4. 常用开源Grafana Windows大盘无法结合Windows的原理与最佳实践进行深入定制。

  5. 缺少Windows告警项模板,需要您自行配置告警项,导致消耗的工作量较大,且技术实现困难。

自建Prometheus与可观测监控 Prometheus 版对比

可观测监控 Prometheus 版是一款全面对接开源Prometheus生态,支持类型丰富的组件观测,提供多种开箱即用的预置观测大盘,且提供全面托管的混合云及多云Prometheus服务。除了支持阿里云容器服务、自建Kubernetes、Remote Write外,阿里云Prometheus还提供混合云与多云ECS应用结合的Metric观测能力,并且支持多实例聚合观测能力,实现Prometheus指标的统一查询,统一Grafana数据源和统一告警。

阿里云Prometheus与ECS无缝集成,默认提供了Windows的CPU、内存、磁盘、网络和进程的核心监控指标采集,同时提供了对应的监控大盘和告警指标,为您提供了开箱即用的Windows监控能力。

Windows监控场景下,自建Prometheus与可观测监控 Prometheus 版的详细对比如下:

对比项

自建Prometheus

可观测监控 Prometheus 版

部署、维护成本

多个VPC内,需要您自购ECS且需您自行部署Prometheus、Grafana、AlertManager,运维成本高

可观测监控 Prometheus 版、Grafana及告警中心的一体化、全托管、免运维、开箱即用

可用性、性能、数据容量

高可用能力不足、性能低、数据容量规模小

高可用、高性能、大数据容量

服务发现

ECS环境下,通过开源Static_Configs、三方注册中心等方式采集服务发现,使用不便,且维护成本高

内置了aliyun_sd_configs,方便您使用ECS标签进行目标ECS匹配,达到与Kubernetes场景的LabelSelector一致体验,极大简化服务发现的配置和维护复杂度

Grafana大盘

开源Grafana Windows大盘通常较单一,大多只是直接展示采集的Metric,无法结合Windows的原理与最佳实践进行深入定制

提供专业Windows大盘模板,方便您快速、精准掌握Windows运行情况,并定位排查问题

告警规则

缺少Windows的主要告警指标模板,需要您自行研究、配置告警规则

根据Windows监控实践,提供专业、灵活的告警指标模板,您可以白屏化配置各告警项

使用Prometheus监控Windows

使用Prometheus监控Windows的具体操作如下:

步骤一:接入Windows配置

  1. 您需要自行在Windows机器上安装和配置Exporter,以便暴露Metric给可观测监控 Prometheus 版,安装和配置Windows Exporter的具体操作,请参见如何安装和配置Windows Exporter

  2. 登录ARMS控制台

  3. 在左侧导航栏单击接入中心,然后在组件应用区域单击Windows卡片的添加

  4. 在弹出面板的STEP1区域选择阿里云ECS环境作为Windows所部署的环境,然后在STEP2区域选择Windows所在的Prometheus实例。

  5. STEP3区域配置监控接入的参数信息。

    参数

    说明

    Exporter名称

    当前Windows监控唯一命名。

    Exporter端口

    部署Windows Exporter时配置的监听端口。

    采集路径

    可观测监控 Prometheus 版采集Windows Exporter的HTTP路径,默认是/metrics

    采集间隔(秒)

    监控数据采集时间间隔。

    ECS标签(服务发现)

    已部署Windows Exporter的ECS标签和标签值,可观测监控 Prometheus 版通过此标签进行服务发现(ServiceDiscovery)。

    ECS标签值

步骤二:查看Windows监控大盘

可观测监控 Prometheus 版默认提供了Windows明细、Windows进程和Windows TopN这三个大盘。

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的Windows卡片,并在弹出的面板中单击大盘页签,然后单击任一大盘名称超链接,即可跳转至大盘页面查看Windows具体的监控数据。

    ac

    • Windows明细大盘:展示了指定Windows系统的CPU、内存、磁盘和网络的重要指标。fl

    • Windows进程大盘:展示了各个进程的CPU、内存、线程和I/O监控情况,以便您对进程级异常进行排查。wn

    • Windows TopN大盘:展示所监控的Windows集群中,关键指标(CPU、内存、磁盘和网络)的Top 5节点,以便您及时了解整个Windows集群总体健康程度。dk

步骤三:配置Windows监控告警

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的Windows卡片,并在弹出的面板中单击告警页签,查看当前Prometheus实例相关的Windows告警规则。目前可观测监控 Prometheus 版提供CPU、内存、磁盘和网络相关的11个关键告警指标,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则

    ae

步骤四:自定义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