全部產品
Search
文件中心

CloudMonitor:作業系統監控

更新時間:Oct 25, 2024

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

    不支援設定警示。

查看作業系統的監控資料

  1. 登入CloudMonitor控制台

  2. 在左側導覽列,選擇雲資源監控 > 主機監控

  3. 主機監控頁面,單擊目標主機的執行個體名稱連結,或單擊目標主機對應操作列的監控圖表

    作業系統監控頁簽,您可以查看目標主機的作業系統監控資料,還可以為監控指標設定警示規則,並查看警示。具體操作,請參見為主機建立警示規則查看警示

相關文檔