1. 程式人生 > >伺服器效能資源監控工具—atop

伺服器效能資源監控工具—atop

Atop監控工具是我在測試視訊儲存伺服器效能時用到的linux監控工具,個人覺得是一款使用方便,內容顯示全面並且直觀的監控工具,目前已經引入到咱公司效能測試中,並推薦大家使用。
一、Atop簡介

atop是一款用於監控Linux系統資源與程序的監控工具,它以一定的頻率週期記錄系統的執行狀態,所採集的資料資訊包含系統資源(CPU、記憶體、磁碟和網路)使用情況和程序執行情況,並能以日誌檔案的方式儲存在磁碟中,如果在監控過程中某項引數效能出現瓶頸,則會自動變紅警告(如下圖中,系統磁碟IO讀寫頻繁,達到85%,顯然已經成為效能瓶頸)。伺服器出現問題後,我們可獲取相應的atop日誌檔案進行分析。
這裡寫圖片描述


二、atop安裝

針對不同linux版本需要找對應不同版本的安裝包(有原始碼包和rpm包),建議下載rpm安裝包,安裝方便快捷

我司現在大部分伺服器安裝CentOS7.0的系統,我已下載了對應的rpm包,路徑:\fileserver.xdja.com\信大捷安\部門檔案\研發中心\測試團隊\工具\BP\atop-2.1-1.el7.x86_64.rpm ,

rpm包安裝過程如下:

1、將atop-2.1-1.el7.x86_64.rpm 上傳至伺服器,安裝命令:rpm -ivh atop-2.1-1.el7.x86_64.rpm
這裡寫圖片描述
2、安裝完成後,執行命令 atop即可看到監控介面
這裡寫圖片描述


三、系統資源監控欄位含義

上圖中列出了不少欄位以及數值,各欄位的含義是什麼?我們應該怎麼看?以上每個欄位的含義都是相對取樣週期而言的,下面我們先來關注上圖顯示的上半部分。

ATOP列:該列顯示了主機名、資訊取樣日期和時間點

PRC列:該列顯示程序整體執行情況

sys、usr欄位分別指示程序在核心態和使用者態的執行時間
#proc欄位指示程序總數
#zombie欄位指示僵死程序的數量
#exit欄位指示atop取樣週期期間退出的程序數量

CPU列:該列顯示CPU整體(即多核CPU作為一個整體CPU資源)的使用情況,我們知道CPU可被用於執行程序、處理中斷,也可處於空閒狀態(空閒狀態分兩種,一種是活動程序等待磁碟IO導致CPU空閒,另一種是完全空閒)

sys、usr欄位指示CPU被用於處理程序時,程序在核心態、使用者態所佔CPU的時間比例
irq欄位指示CPU被用於處理中斷的時間比例
idle欄位指示CPU處在完全空閒狀態的時間比例
wait欄位指示CPU處在“程序等待磁碟IO導致CPU空閒”狀態的時間比例

CPU列各個欄位指示值相加結果為N00%,其中N為cpu核數。

cpu列:該列顯示某一核cpu的使用情況,各欄位含義可參照CPU列,各欄位值相加結果為100%

CPL列:該列顯示CPU負載情況

avg1、avg5和avg15欄位:過去1分鐘、5分鐘和15分鐘內執行佇列中的平均程序數量
csw欄位指示上下文交換次數
intr欄位指示中斷髮生次數

MEM列:該列指示記憶體的使用情況

tot欄位指示實體記憶體總量
free欄位指示空閒記憶體的大小
cache欄位指示用於頁快取的記憶體大小
buff欄位指示用於檔案快取的記憶體大小
slab欄位指示系統核心佔用的記憶體大小

SWP列:該列指示交換空間的使用情況

tot欄位指示交換區總量
free欄位指示空閒交換空間大小

PAG列:該列指示虛擬記憶體分頁情況

swin、swout欄位:換入和換出記憶體頁數

DSK列:該列指示磁碟使用情況,每一個磁碟裝置對應一列,如果有sdb裝置,那麼增多一列DSK資訊

sda欄位:磁碟裝置標識
busy欄位:磁碟忙時比例
read、write欄位:讀、寫請求數量

NET列:多列NET展示了網路狀況,包括傳輸層(TCP和UDP)、IP層以及各活動的網口資訊

XXXi  欄位指示各層或活動網口收包數目
XXXo 欄位指示各層或活動網口發包數目

程序檢視

為了更全面地展示程序資訊,atop提供了多種程序檢視。

預設檢視(Generic information)

進入atop資訊介面,我們看到的就是程序資訊的預設檢視(上圖下半部分),按g鍵可以從其他檢視跳到預設檢視。
這裡寫圖片描述
從上圖中,我們可以看到PID為8757的rabbitmq程序在退出前在核心模式下佔用了0.02秒CPU時間,在使用者模式下佔用了0.00秒CPU時間,共使用CPU時間為0.02秒,相對10分鐘取樣週期,CPU時間佔用比例忽略為0%,ST列表示程序狀態,N表示該程序是前一個取樣週期新生成的程序,E表示該程序已退出,EXC列指示程序的退出碼。從程序名在“<>”符號中,我們亦可知該程序已退出。

記憶體檢視(Memory consumption)

記憶體檢視展示了程序使用記憶體情況,按m鍵可進入記憶體檢視。
這裡寫圖片描述
上圖下半部分展示了每個程序佔用的虛擬記憶體空間(VSIZE)、記憶體空間(RSIZE)大小,以及在上一個取樣週期中虛擬記憶體和實體記憶體增長大小(VGROW、RGROW),MEM列指示程序所佔實體記憶體大小。

從PAG列的資訊(本圖未展示),我們可以知道此時系統記憶體負載較高,出現頁換出情況,從程序檢視中VGROW和RGROW列可看出VirtualBox程序佔用記憶體量大量增長,部分程序佔用的記憶體減少(VGROW或RGROW欄位為負值)。

命令檢視(Command line)

按c鍵我們可以進入命令檢視,該檢視展示了與每個程序相對應的命令。
這裡寫圖片描述
有時我們某位“馬大哈”同事執行了某個指令碼或命令,使得系統資源佔用率異常飆高,這時,我們可以很容易地通過atop的命令檢視找到導致異常的命令。

atop日誌

每個時間點取樣頁面組合起來就形成了一個atop日誌檔案,我們可以使用”atop -r XXX”命令對日誌檔案進行檢視。那以什麼形式儲存atop日誌檔案呢?

對於atop日誌檔案的儲存方式,我們可以這樣:

每天儲存一個atop日誌檔案,該日誌檔案記錄當天資訊
日誌檔案以"atop_YYYYMMDD"的方式命名
設定日誌失效期限,自動刪除一段時間前的日誌檔案

其實atop開發者已經提供了以上日誌儲存方式,相應的atop.daily指令碼可以在原始碼目錄下找到。在atop.daily指令碼中,我們可以通過修改INTERVAL變數改變atop資訊取樣週期(預設為10分鐘);通過修改以下命令中的數值改變日誌儲存天數(預設為28天):

(sleep 3; find $LOGPATH -name ‘atop_*’ -mtime +28 -exec rm {} \; )&

最後,我們修改cron檔案,每天凌晨執行atop.daily指令碼:

0 0 * * * root /etc/cron.daily/atop.daily

小結

本文對Linux系統資源及程序監控工具atop進行了介紹,對atop所記錄資訊中的部分欄位的含義以及程序檢視進行了分析,最後講述了atop日誌檔案的儲存方式。