CloudMonitor通過安裝在阿里雲主機(ECS執行個體)和非阿里雲主機上的CloudMonitor外掛程式,為您採集豐富的作業系統層面的監控指標,您可以為作業系統監控指標設定警示規則。當某個監控指標達到警示條件時,會給您發送警示通知,以便您及時關注其動態。
前提條件
請確保您已在阿里雲主機(ECS執行個體)和非阿里雲主機上安裝CloudMonitor外掛程式。具體操作,請參見安裝CloudMonitor外掛程式。
監控指標說明
作業系統監控指標的資料擷取頻率為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
不支援設定警示。