監控系統獲取監控數據的方式

SNMP協議
服務器可以通過SNMP獲取client的系統信息,適用於小型機羣 ,做主動的探測 是採用輪詢的方式,一個一個的訪問 大型集羣的話不能使用,必須裝agent,降低服務器的壓力,讓客戶端主動向服務器發送信息 每30秒向服務器報告一下存活,每2分鐘返回一次service狀態,
SNMP省事不需要裝agent ,網絡設備,路由器不能裝agent,必須用snmp

但爲了學習,在監控項目中還是採用agent的模式
獲取cpu的信息 指令 sar 1 3

user:進程用戶空間執行的時間片的個數
nice:被nice調整過的進程在用戶控件執行的時間片的個數 system:進程在內核空間執行的時間片的個數
idle: 越高,越空閒
iowait: 等待cpu讀寫 如果iowait越高,機器特別慢,有時來了一個大數據,數值會很高,但傳輸完了後,又很低,可能是個震盪的 ,所以對他的閥值設置非常重要,不能一旦出現高值就報警,對待這種瞬間的峯值,採取收斂的方式,
1 比如第一分鐘收到了峯值高了,先不報警,等待五分鐘如果還搞的話,在報警
2 可以在serve端自定義n分鐘內 hit(達到峯值次數)\max(出現的最大的峯值)\average(平均值)\last( 持續值) 通過對比是否達到了預定的閥值
獲取memory的信息
指令

grep 'MemTotal\|MemFree\|Buffers\|^Cached\|SwapTotal\|SwapFree' /proc/meminfo

MemTotal:所有可用內存,不等於物理內存大小,因爲有一部分kernel使用的,直接被劃去了
MemFree:當前空閒的內存,
Buffers:讀寫的緩存,就是內核在調用read()或者write()時候的緩存,也就是文件句柄的緩存,如果讀寫的文件在cache中,那buffer也會對被cache的文件做緩存的
Cached:對文件的緩存
SwapCached:被swap的內存頁,又被交換回內存中的那部分,但是實際上,在swap分區上的這部分信息還未被刪除
獲取負載信息
何爲系統負載呢?
系統平均負載被定義爲在特定時間間隔內運行隊列中的平均進程 數。如果一個進程滿足以下條件則其就會位於運行隊列中:

  1. 它沒有在等待I/O操作的結果
  2. 它沒有主動進入等待狀態(也就是沒有調用’wait’)
  3. 沒有被停止(例如:等待終止)

一般來說,每個CPU內核當前活動進程數不大於3,則系統運行表現良好!當然這裏說的是每個cpu內核,也就是如果你的主機是四核cpu的話,那麼只要uptime最後輸出的一串字符數值小於12即表示系統負載不是很嚴重.當然如果達到20,那就表示當前系統負載非常嚴重,估計打開執行web腳本非常緩慢.
指令 cat /proc/loadavg
前3個數字分別表示一分鐘,五分鐘,十五分鐘內的平均負載,後面的1個分數,分母表示系統進程總數,分子表示正在運行的進程數;最後一個數字表示最近運行的進程ID

發佈了27 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章