引言緩存
Linux以其穩定性,愈來愈多地被用做服務器的操做系統(固然,有人會較真地說一句:Linux只是操做系統內核:)。但使用了Linux做爲底層的操做系統,是否咱們就能保證咱們的服務作到7*24地穩定呢?非也,要知道業務功能是由系統上跑的程序實現的,要實現業務功能的穩定性,選擇Linux只是邁出的第一步,咱們更多地工做是不讓業務程序成爲穩定性的短板。服務器
當咱們的服務器出現問題的時候,外在的表現是業務功能不能正常提供,內在的緣由,從程序的角度看,多是業務程序的問題(程序自身的bug),也多是服務器上人爲的誤操做(不當地執行腳本或命令);從系統資源的角度看,多是CPU搶佔、內存泄漏、磁盤IO讀寫異常、網絡異常等。出現問題後,面對各類各樣可能的緣由,咱們應如何着手進行分析?咱們有什麼工具進行問題定位嗎?網絡
atop簡介工具
本文要介紹的atop就是一款用於監控Linux系統資源與進程的工具,它以必定的頻率記錄系統的運行狀態,所採集的數據包含系統資源(CPU、內存、磁盤和網絡)使用狀況和進程運行狀況,並能以日誌文件的方式保存在磁盤中,服務器出現問題後,咱們可獲取相應的atop日誌文件進行分析。atop是一款開源軟件,咱們能夠從這裏得到其源碼和rpm安裝包。spa
atop使用方法操作系統
在安裝atop以後,咱們在命令行下敲入」atop"命令便可看到系統當前的運行狀況:命令行
安裝:yum install atop日誌
系統資源監控字段含義code
上圖中列出了很多字段以及數值,各字段的含義是什麼?咱們應該怎麼看?以上每一個字段的含義都是相對採樣週期而言的,下面咱們先來關注上圖顯示的上半部分。orm
ATOP列:該列顯示了主機名、信息採樣日期和時間點
PRC列:該列顯示進程總體運行狀況
CPU列:該列顯示CPU總體(即多核CPU做爲一個總體CPU資源)的使用狀況,咱們知道CPU可被用於執行進程、處理中斷,也可處於空閒狀態(空閒狀態分兩種,一種是活動進程等待磁盤IO致使CPU空閒,另外一種是徹底空閒)
CPU列各個字段指示值相加結果爲N00%,其中N爲cpu核數。
cpu列:該列顯示某一核cpu的使用狀況,各字段含義可參照CPU列,各字段值相加結果爲100%
CPL列:該列顯示CPU負載狀況
MEM列:該列指示內存的使用狀況
SWP列:該列指示交換空間的使用狀況
PAG列:該列指示虛擬內存分頁狀況
swin、swout字段:換入和換出內存頁數
DSK列:該列指示磁盤使用狀況,每個磁盤設備對應一列,若是有sdb設備,那麼增多一列DSK信息
NET列:多列NET展現了網絡情況,包括傳輸層(TCP和UDP)、IP層以及各活動的網口信息
進程視圖
爲了更全面地展現進程信息,atop提供了多種進程視圖。
默認視圖(Generic information)
進入atop信息界面,咱們看到的就是進程信息的默認視圖(上圖下半部分),按g鍵能夠從其餘視圖跳到默認視圖。
內存視圖(Memory consumption)
內存視圖展現了進程使用內存狀況,按m鍵可進入內存視圖。
上圖下半部分展現了每一個進程佔用的虛擬內存空間(VSIZE)、內存空間(RSIZE)大小,以及在上一個採樣週期中虛擬內存和物理內存增加大小(VGROW、RGROW),MEM列指示進程所佔物理內存大小。
從上圖的PAG列的信息,咱們能夠知道此時系統內存負載較高,出現頁換出狀況,從進程視圖中VGROW和RGROW列可看出VirtualBox進程佔用內存量大量增加,部分進程佔用的內存減小(VGROW或RGROW字段爲負值),爲VirtualBox進程騰出空間。
命令視圖(Command line)
按c鍵咱們能夠進入命令視圖,該視圖展現了與每一個進程相對應的命令。
有時咱們某位「馬大哈」同事執行了某個腳本或命令,使得系統資源佔用率異常飆高,這時,咱們能夠很容易地經過atop的命令視圖找到致使異常的命令。
atop日誌
每一個時間點採樣頁面組合起來就造成了一個atop日誌文件,咱們可使用"atop -r XXX"命令對日誌文件進行查看。那以什麼形式保存atop日誌文件呢?
對於atop日誌文件的保存方式,咱們能夠這樣:
其實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日誌文件的保存方式。
atop工具會根據終端界面的大小調整所顯示的字段,所以你使用atop時看到的部分字段可能與以上截圖不相同。