全部产品
Search
文档中心

云监控:基础监控和操作系统监控说明

更新时间:Jul 07, 2026

ECS 针对 CPU 使用率、磁盘等监控提供了基础监控和操作系统监控两类监控指标。基础监控由云服务器 ECS 在宿主机上采集,无需安装探针,属于无代理指标(外部视角);操作系统监控由云监控通过安装在 ECS 实例上的云监控插件采集操作系统内部监控指标,属于代理指标(内部视角)。本文详细介绍这两类指标的采集方式、适用场景及具体指标含义。

基础监控和操作系统监控区别

对比维度

基础监控

操作系统监控

监控位置

虚拟化平台

虚拟机操作系统内部

采集频率

1分钟/次

1秒钟/次

聚合输出

每秒采样一次,每15秒聚合生成一个数据点,分别输出最小值(min)、平均值(avg)和最大值(max)三个指标。

安装要求

无需探针,开箱即用。

需安装云监控探针。

优点

  • 无额外资源开销。

  • 适用范围广,不受实例内运行负载过高影响。

  • 数据精度更高。

  • 可关联进程,能诊断“Steal Time”等问题。

缺点

  • 精度低,无法识别突发的CPU波动场景。

  • 无法关联具体进程开销。

  • 需安装维护,有资源开销。

  • VM夯机或开关机异常时,可能导致数据缺失。

典型场景

实例的基础监控不受虚拟机运行状态影响,适用于实例夯机、宕机等故障场景的排查。然而,由于其采样频率较低,不适用于需要捕捉快速性能波动的场景。

应用性能诊断、实时监控告警。

Q:为什么基础监控和操作系统监控的数据(如连接数、CPU 使用率)不一致?应以哪个为准?

A:数据不一致属于正常现象,原因如下:

  1. 采集视角不同:基础监控在宿主机(虚拟化平台)层面采集,属于外部视角;操作系统监控由 Agent 插件在虚拟机内部采集,属于内部视角。

  2. 采集频率不同:基础监控每 1 分钟采集一次,仅输出均值;操作系统监控每 1 秒采样一次、每 15 秒聚合一个数据点,分别输出最大值、最小值和平均值,精度更高。

  3. 统计方式不同:基础监控仅提供平均值;操作系统监控提供最大值、最小值和平均值。

建议:排查实例内部性能问题或设置精准告警时,建议以操作系统监控数据为准;实例宕机、夯机等故障排查场景适合使用基础监控数据。

Q:配置 ECS CPU 或内存告警规则时,应选择基础监控还是操作系统监控指标?

A:取决于您的监控需求:

  • 推荐优先选择操作系统监控指标(以「(Agent)」开头):数据精度更高,支持最大值、最小值和平均值统计,可关联进程进行诊断,适合精准告警和实时性能监控。需提前在 ECS 实例上安装云监控插件。

  • 选择基础监控指标(以「(ECS)」开头):无需安装任何插件,开箱即用,适合实例夯机、宕机等故障场景的基础资源监控,但精度较低,无法关联具体进程。

通常推荐优先使用操作系统监控以获得更准确的实例内部状态。

基础监控

由 ECS 在宿主机层面采集实例监控数据。 无需客户安装操作系统内插件,开箱即用。

采集和上报说明

采集探针是在宿主机层面对实例进行1分钟一个计数点的计数采集,只能产出这 1 分钟内的用量均值。

监控指标说明

阿里云主机(ECS实例)的基础监控数据采集粒度为1分钟,包含的监控指标如下表所示。

说明

若图表中展示的粒度是 1 分钟 1个点,则Maximum、Minimum、Average 的值是一样的。

监控指标名称

监控指标含义

单位

MetricName

Dimensions

Statistics

(ECS)CPU使用率

CPU使用率

%

CPUUtilization

userId、instanceId

Maximum、Minimum、Average

(ECS)经典网络公网流入带宽

公网入流量平均速率

bit/s

InternetInRate

userId、instanceId

Maximum、Minimum、Average

(ECS)内网流入带宽

私网入流量平均速率

bit/s

IntranetInRate

userId、instanceId

Maximum、Minimum、Average

(ECS)经典网络公网流出带宽

公网出流量平均速率

bit/s

InternetOutRate

userId、instanceId

Maximum、Minimum、Average

(ECS)内网流出带宽

私网出流量平均速率

bit/s

IntranetOutRate

userId、instanceId

Maximum、Minimum、Average

(ECS)所有磁盘读取BPS

系统磁盘每秒读取字节总数

Byte/s

DiskReadBPS

userId、instanceId

Maximum、Minimum、Average

(ECS)所有磁盘写入BPS

系统磁盘每秒写入字节总数

Byte/s

DiskWriteBPS

userId、instanceId

Maximum、Minimum、Average

(ECS)所有磁盘每秒读取次数

所有磁盘读IOPS

次/秒

DiskReadIOPS

userId、instanceId

Maximum、Minimum、Average

(ECS)所有磁盘每秒写入次数

所有磁盘写IOPS

次/秒

DiskWriteIOPS

userId、instanceId

Average、Minimum、Maximum

(ECS)IP维度公网流入带宽

公网流入带宽

bit/s

VPC_PublicIP_InternetInRate

userId、instanceId、ip

Maximum、Minimum、Average

(ECS)IP维度公网流出带宽

公网流出带宽

bit/s

VPC_PublicIP_InternetOutRate

userId、instanceId、ip

Maximum、Minimum、Average

(ECS)IP维度公网流出带宽使用率

公网流出带宽使用率

%

VPC_PublicIP_InternetOutRate_Percent

userId、instanceId、ip

Average

(ECS)经典网络公网流入流量

公网流入流量

Byte

InternetIn

userId、instanceId

Average、Minimum、Maximum、Sum

(ECS)经典网络公网流出流量

公网流出流量

Byte

InternetOut

userId、instanceId

Maximum、Minimum、Average

查看基础监控的监控数据

  1. 登录云监控控制台

  2. 在左侧导航栏,选择云资源监控 > 主机监控

  3. 主机监控页面,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表

  4. 单击基础监控页签。

    基础监控页签,您可以查看目标主机的基础监控数据,还可以为监控指标设置报警规则,并查看报警。具体操作,请参见为主机创建报警规则查看报警

操作系统监控

云监控通过安装在阿里云主机(ECS实例)和非阿里云主机上的云监控插件,为您采集丰富的操作系统层面的监控指标,您可以为操作系统监控指标设置报警规则。当某个监控指标达到报警条件时,会给您发送报警通知,以便您及时关注其动态。

前提条件

请确保您已在阿里云主机(ECS实例)和非阿里云主机上安装云监控插件

采集和上报说明

云监控主机探针每 1s 采样 1 次,上报到服务端会聚合为 15秒 1 个数据点,每次上报会上报 3 个值 min(15s 内的平均值)、max(15s 内的最大值)、avg(15s 内的最小值)。

监控指标说明

操作系统监控指标的数据采集频率为15秒/次,分类如下:

说明

云监控流量与带宽相关指标的单位说明:

  • MiB:1024 进制的兆字节(Mebibytes),大写 B 代表字节(Byte)。

  • bit/s:比特每秒(bits per second)。

  • 换算关系:1 MiB = 1,048,576 Byte(1024 × 1024 Byte),1 Byte = 8 bit。

  • CPU相关监控指标

    • Windows

      调用ntdll中的NtQuerySystemInformation函数,获取CPU各个部分所花费时间。间隔两次调用该函数即可获得该时间间隔内CPU各个部分所占比率。

    • Linux

      您可以参考top命令理解下表中监控指标的含义。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    说明(仅用于Linux)

    (Agent)cpu.idle

    当前空闲CPU百分比。

    %

    cpu_idle

    userId、instanceId

    Maximum、Minimum、Average

    当前CPU处于空闲状态的百分比。

    (Agent)cpu.system

    当前内核空间占用CPU百分比。

    %

    cpu_system

    userId、instanceId

    Maximum、Minimum、Average

    系统上下文切换的消耗。如果该监控指标数值比较高,则说明服务器开了太多的进程或线程。

    (Agent)cpu.user

    当前用户空间占用CPU百分比。

    %

    cpu_user

    userId、instanceId

    Maximum、Minimum、Average

    用户进程对CPU的消耗。

    (Agent)cpu.wait

    当前等待IO操作的CPU百分比。

    %

    cpu_wait

    userId、instanceId

    Maximum、Minimum、Average

    如果该监控指标数值比较高,则说明IO操作频繁。

    (Agent)cpu.other

    其他占用CPU百分比。

    %

    cpu_other

    userId、instanceId

    Maximum、Minimum、Average

    其他消耗=Nice+SoftIrq+Irq+Stolen。

    (Agent)cpu.total

    当前消耗的总CPU百分比。

    %

    cpu_total

    userId、instanceId

    Maximum、Minimum、Average

    当前消耗=1-Host.cpu.idle

    说明

    云监控 CPU 使用率(cpu_total)与 top/htop 显示不一致的常见原因:

    1. iowait(wa)计入总使用率cpu_total 包含 iowait(CPU 等待 I/O 的时间占比)。当应用因等待磁盘 I/O 而阻塞时,top/htop 通常不显示具体的高占用进程(等待 I/O 的进程处于不可中断睡眠状态,%CPU 列显示接近 0),但云监控的总 CPU 使用率会因 wa 升高而显示较高值。

    2. 统计周期不同:云监控展示的是采集周期内(15 秒)的聚合值(最大值/平均值),top 默认刷新间隔约为 3 秒,为近实时快照。如需通过 top 捕捉突发波动,建议执行 top -d 0.5 提升刷新频率。

  • 内存相关监控指标

    • Windows

      调用kernel32.dll中的GlobalMemoryStatusEx函数获取Windows 32位操作系统当前物理和虚拟内存的使用情况。

    • Linux

      您可以参考free命令理解下表中监控指标的含义,数据源:/proc/meminfo

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    说明(仅用于Linux)

    (Agent)memory.total.space

    内存总量。

    Byte

    memory_totalspace

    userId、instanceId

    Maximum、Minimum、Average

    服务器的内存总量。

    /proc/meminfo的MemTotal。

    (Agent)memory.free.space

    剩余内存量。

    Byte

    memory_freespace

    userId、instanceId

    Maximum、Minimum、Average

    系统可用内存。

    /proc/meminfo的MemFree。

    (Agent)memory.used.space

    已用内存量。

    Byte

    memory_usedspace

    userId、instanceId

    Maximum、Minimum、Average

    系统已用内存。

    计算方法:total–free。

    (Agent)memory.actualused.space

    用户实际使用的内存。

    Byte

    memory_actualusedspace

    userId、instanceId

    Maximum、Minimum、Average

    计算方法:

    • /proc/meminfo中有MemAvailable时:total-MemAvailable

    • /proc/meminfo中无MemAvailable时:used–buffers-cached

    说明

    当CentOS 7.2与Ubuntu 16.04以上(包含)的系统使用新的Linux内核时,内存估算更准确,MemAvailable的具体含义,请参见commit

    (Agent)memory.free.utilization

    剩余内存百分比。

    %

    memory_freeutilization

    userId、instanceId

    Maximum、Minimum、Average

    计算方法:

    • /proc/meminfo中有MemAvailable时:MemAvailable/total×100%。

    • /proc/meminfo中无MemAvailable时:(total–actualused)/total ×100%。

    (Agent)memory.used.utilization

    内存使用率。

    %

    memory_usedutilization

    userId、instanceId

    Maximum、Minimum、Average

    计算方法:

    • /proc/meminfo中有MemAvailable时:(total-MemAvailable)/total×100%。

    • /proc/meminfo中无MemAvailable时:(total–free-buffers-cached)/total×100%。

    说明

    云监控内存使用率(memory.used.utilization)与 free 命令显示不一致的原因:

    云监控已排除系统缓存(Buffers/Cache)的影响。当 /proc/meminfo 中存在 MemAvailable 字段时,计算公式为:

    内存使用率 = (MemTotal - MemAvailable) / MemTotal × 100%
    

    旧版 free 命令的 Used 列包含 Buffers/Cache,因此显示的已用内存通常高于云监控数值。基于 MemAvailable 的算法更能准确反映系统真实可用内存。

    说明

    云监控是否支持 Linux SWAP 使用率监控?

    云监控底层采集项目前不包含 SWAP 使用率指标。替代方案:

    1. 监控物理内存使用率:SWAP 通常在物理内存不足时才被大量使用,监控 memory.used.utilization 可间接反映系统内存压力。

    2. 精确监控 SWAP:如需精确采集 SWAP(交换分区)使用率,建议通过日志服务(SLS)的主机日志本地采集功能自行统计 SWAP 信息。

  • 系统平均负载监控指标

    • Windows

      无此监控指标。

    • Linux

      您可以参考top命令理解下表中监控指标的含义。监控指标数值越大表示系统越繁忙。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    (Agent)load.1m

    过去1分钟的系统平均负载。

    load_1m

    userId、instanceId

    Maximum、Minimum、Average

    (Agent)load.5m

    过去5分钟的系统平均负载。

    load_5m

    userId、instanceId

    Maximum、Minimum、Average

    (Agent)load.15m

    过去15分钟的系统平均负载。

    load_15m

    userId、instanceId

    Maximum、Minimum、Average

    (Agent)load.1m.percore

    CPU平均每核过去1分钟的系统平均负载。

    load_per_core_1m

    userId、instanceId

    Maximum、Minimum、Average

    (Agent)load.5m.percore

    CPU平均每核过去5分钟的系统平均负载。

    load_per_core_5m

    userId、instanceId

    Maximum、Minimum、Average

    (Agent)load.15m.percore

    CPU平均每核过去15分钟的系统平均负载。

    load_per_core_15m

    userId、instanceId

    Maximum、Minimum、Average

  • 磁盘相关监控指标

    • Windows

      先调用Kernel32.dll中的GetDiskFreeSpaceExA检索磁盘可用空间,获取磁盘的已用存储空间、磁盘使用率、磁盘的剩余存储空间和磁盘存储总量;再调用RegConnectRegistryA函数建立与HKEY_PERFORMANCE_DATA注册表的连接;最后调用RegQueryValueExA函数查询HKEY_PERFORMANCE_DATA注册表中磁盘相关属性(读取次数、写入次数、写入字节数、读取字节数、读取花费时间、写入花费时间和磁盘使用时间)。

    • Linux

      磁盘使用率与inode使用率可以参考df命令,磁盘读写可以参考iostat命令,便于您理解下表中监控指标的含义。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    Host.diskusage.used

    磁盘的已用存储空间。

    Byte

    diskusage_used

    userId、instanceId、device

    Maximum、Minimum、Average

    Host.diskusage.utilization

    普通用户的磁盘使用率。

    %

    diskusage_utilization

    userId、instanceId、device

    Maximum、Minimum、Average

    Host.diskusage.free

    普通用户和超级用户的磁盘剩余存储空间。

    Byte

    diskusage_free

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)disk.usage.avail_device

    普通用户的磁盘剩余存储空间。

    Byte

    diskusage_avail

    userId、instanceId、device

    Maximum、Minimum、Average

    Host.diskusage.total

    磁盘存储总量。

    Byte

    diskusage_total

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)disk.read.bps_device

    磁盘每秒读取的字节数。

    Byte/s

    disk_readbytes

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)disk.write.bps_device

    磁盘每秒写入的字节数。

    Byte/s

    disk_writebytes

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)disk.read.iops_device

    磁盘每秒的读请求数量。

    次/秒

    disk_readiops

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)disk.write.iops_device

    磁盘每秒的写请求数量。

    次/秒

    disk_writeiops

    userId、instanceId、device

    Maximum、Minimum、Average

    说明

    主机监控中"剩余磁盘空间"(diskusage_free,即 Host.diskusage.free)包含文件系统为超级用户预留的空间(Reserved block count),因此可能大于普通用户通过 df 命令查看的可用空间,属正常现象。如需查看预留空间大小,可执行以下命令:

    tune2fs -l <device>
    

    其中 <device> 为设备路径(例如 /dev/vda1)。

  • 文件系统监控指标

    • Windows

      无此监控指标。

    • Linux

      您可以参考df命令理解下表中监控指标的含义。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    说明(仅用于Linux)

    (Agent)fs.inode.utilization_device

    inode使用率。

    %

    fs_inodeutilization

    userId、instanceId、device

    Maximum、Minimum、Average

    Linux系统内部不使用文件名,而使用inode号码来识别文件。当磁盘未存满,但inode已经分配完时,会出现无法在磁盘新建文件的情况,因此需要监控inode使用率。inode数量代表文件系统的文件数量,大量小文件会导致inode使用率过高。

  • 网络相关监控指标

    • Windows

      先调用iphlpapi.dll中的GetAdaptersAddresses来获取本机上的适配器地址;再通过调用GetIfTable来获取各个Interface网络指标,包括每秒接收比特数、每秒发送比特数、每秒接收的数据包数、每秒发送的数据包数、接收错误包数和发送错误包数等。

    • Linux

      • 您可以参考ss命令理解TCP连接数采集。

        说明

        TCP连接数是指ECS主机中所有占用TCP协议的连接。

        TCP连接数默认采集TCP_TOTAL(总连接数)、ESTABLISHED(正常连接状态)和NON_ESTABLISHED(非连接的状态连接数,ESTABLISHED以外的所有状态)。

      • 您可以参考iftop命令理解下表中网络相关监控指标的含义。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    (Agent)network.in.rate_device

    网卡每秒接收的比特数,即网卡的下行带宽。

    bit/s

    networkin_rate

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.out.rate_device

    网卡每秒发送的比特数,即网卡的上行带宽。

    bit/s

    networkout_rate

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.in.packages_device

    网卡每秒接收的数据包数。

    个/秒

    networkin_packages

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.out.packages_device

    网卡每秒发送的数据包数。

    个/秒

    networkout_packages

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.in.errorpackages_device

    设备驱动器检测到的接收错误包的数量。

    个/秒

    networkin_errorpackages

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.out.errorpackages_device

    设备驱动器检测到的发送错误包的数量。

    个/秒

    networkout_errorpackages

    userId、instanceId、device

    Maximum、Minimum、Average

    (Agent)network.tcp.connection_state

    各种状态下的TCP连接数包括:LISTEN、SYN_SENT、ESTABLISHED、SYN_RECV、FIN_WAIT1、CLOSE_WAIT、FIN_WAIT2、LAST_ACK、TIME_WAIT、CLOSING和CLOSED。

    Count

    net_tcpconnection

    userId、instanceId、state

    Maximum、Minimum、Average

  • Top5进程相关监控指标

    • Windows

      • 查询

        先通过调用Kernel32.dll中的OpenProcess函数进入进程,间隔两次调用GetProcessTimes获取CPU各部分消耗的时间来获得在时间间隔内process中CPU各部分所花费的时间比率;再调用RegConnectRegistryA函数建立与HKEY_PERFORMANCE_DATA注册表的连接,调用RegQueryValueExA函数查询HKEY_PERFORMANCE_DATA注册表中进程相关属性(进程ID、进程的父进程号、优先级、虚拟内存、常驻内存、共享内存、进程名、打开文件数、包含线程数、页错误、读取字节和写入字节)。

      • 计数(Host.process.number)

        • 先调用OpenProcess打开需要查询的进程,再调用NTDLL中的NtQueryInformationProcess函数获得进程RTL_USER_PROCESS_PARAMETERS的参数信息,最后通过ReadProcessMemory函数获得进程cmdline,从而获得进程args和运行root路径,即进程当前文件夹路径。

        • 先调用OpenProcessToken获取访问Token的句柄,再调用GetTokenInformation获取Token信息,最后通过LookupAccountSid获得进程的用户名和用户组。

        • 对于每条进程的进程args和运行root路径,与进程当前文件夹路径、用户名和用户组进行匹配,与关键字match的计数+1。

    • Linux

      • 进程的CPU使用率和内存使用率可参考top命令,CPU使用率为多核使用情况。

      • Host.process.openfile可参考lsof命令。

      • Host.process.number可参考ps aux | grep '<关键字>'命令。

    监控指标名称

    监控指标含义

    单位

    MetricName

    Dimensions

    Statistics

    备注

    (Agent)process.cpu_pid

    某个进程消耗的CPU百分比。

    %

    process.cpu

    userId、instanceId、name、pid

    Average

    不支持设置报警。

    (Agent)process.memory_pid

    某个进程消耗的内存百分比。

    %

    process.memory

    userId、instanceId、name、pid

    Average

    不支持设置报警。

    (Agent)process.openfile_pid

    当前进程打开文件数。

    process.openfile

    userId、instanceId、name、pid

    Average

    不支持设置报警。

    (Agent)process.count_processname

    指定关键字的进程数。

    process.number

    userId、instanceId、processName

    Average

    不支持设置报警。

查看操作系统的监控数据

  1. 登录云监控控制台

  2. 在左侧导航栏,选择云资源监控 > 主机监控

  3. 主机监控页面,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表

    操作系统监控页签,您可以查看目标主机的操作系统监控数据,还可以为监控指标设置报警规则,并查看报警。具体操作,请参见为主机创建报警规则查看报警

Q:如何通过 API 获取 ECS 的内存使用率和 CPU 负载指标?

A:根据指标类型,调用不同的 API:

  1. 获取基础监控指标(如 vCPU 使用率):调用 ECS 提供的 DescribeInstanceMonitorData API,该接口直接返回宿主机层面的监控数据,无需安装插件。

  2. 获取操作系统级指标(如内存使用率、CPU 负载):

    • 前提:确保 ECS 实例已安装云监控插件。

    • 接口:调用云监控的 DescribeMetricDataDescribeMetricList API 查询 Agent 指标。

    • 常用指标 MetricName 示例:

    指标说明

    MetricName

    CPU 总使用率

    cpu_total

    内存使用率

    memory_usedutilization

    过去 5 分钟系统平均负载

    load_5m

相关文档