云监控通过安装在阿里云主机(ECS实例)和非阿里云主机上的云监控插件,为您采集丰富的操作系统层面的监控指标,您可以为操作系统监控指标设置报警规则。当某个监控指标达到报警条件时,会给您发送报警通知,以便您及时关注其动态。
前提条件
请确保您已在阿里云主机(ECS实例)和非阿里云主机上安装云监控插件。具体操作,请参见安装云监控插件。
监控指标说明
操作系统监控指标的数据采集频率为15秒/次,分类如下:
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
内存相关监控指标
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%。
系统平均负载监控指标
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
文件系统监控指标
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
不支持设置报警。