linux故障監控處理必備四款監控軟體
iotop:檢視IO過大的程序。
vmstat:檢視故障.
iostat: -x 檢視硬碟IO.
iftop:可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口資訊等,使用iftop工具查出來是哪些個IP位址在請求主機的帶寬資源,找出耗帶寬的元兇, 找出耗帶寬的IP位址或者段,分析是out方向還是in方向,使用iptables規則來進行控制
1、問題:
叢集中的某台機器 top 看到負載巨高,叢集中的機器硬體配置一樣,部署的軟體都一樣,卻單單這一台負載有問題,初步猜測可能硬體有問題了。
同時,我們還需要把負載有異常的罪魁禍首揪出來,到時候從軟體、硬體層面分别尋找解決方案。
2、排查:
從 top 中可以看到 load average 偏高,%wa 偏高,%us 很低:

從上圖我們大緻可以推斷 IO 遇到了瓶頸,下面我們可以再用相關的 IO 診斷工具,具體的驗證排查下。
PS:如果你對 top 的用法不了解,請參考我去年寫的一篇博文:
<a href="http://my.oschina.net/leejun2005/blog/157910" target="_blank">linux 系統監控、診斷工具之 top 詳解</a>
常用組合方式有如下幾種:
用vmstat、sar、iostat檢測是否是CPU瓶頸
用free、vmstat檢測是否是記憶體瓶頸
用iostat、dmesg 檢測是否是磁盤I/O瓶頸
用netstat檢測是否是網絡帶寬瓶頸
2.1 vmstat
vmstat指令的含義為顯示虛拟記憶體狀态(“Viryual Memor Statics”),但是它可以報告關于程序、記憶體、I/O等系統整體運作狀态。
它的相關字段說明如下:
從 vmstat 中可以看到,CPU大部分的時間浪費在等待IO上面,可能是由于大量的磁盤随機通路或者磁盤的帶寬所造成的,bi、bo 也都超過 1024k,應該是遇到了IO瓶頸。
2.2 iostat
下面再用更加專業的磁盤 IO 診斷工具來看下相關統計資料。
rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/s wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s r/s: 每秒完成的讀 I/O 裝置次數。即 delta(rio)/s w/s: 每秒完成的寫 I/O 裝置次數。即 delta(wio)/s rsec/s: 每秒讀扇區數。即 delta(rsect)/s wsec/s: 每秒寫扇區數。即 delta(wsect)/s rkB/s: 每秒讀K位元組數。是 rsect/s 的一半,因為每扇區大小為512位元組。(需要計算)
可以看到兩塊硬碟中的 sdb 的使用率已經 100%,存在嚴重的 IO 瓶頸,下一步我們就是要找出哪個程序在往這塊硬碟讀寫資料。
2.3 iotop
根據 iotop 的結果,我們迅速的定位到是 flume 程序的問題,造成了大量的 IO wait。
但是在開頭我已經說了,叢集中的機器配置一樣,部署的程式也都 rsync 過去的一模一樣,難道是硬碟壞了?
這得找運維同學來查證了,最後的結論是:
Sdb為雙盤raid1,使用raid卡為“LSI Logic / Symbios Logic SAS1068E”,無cache。近400的IOPS壓力已經達到了硬體極限。而其它機器使用的raid卡是“LSI Logic / Symbios Logic MegaRAID SAS 1078”,有256MB cache,并未達到硬體瓶頸,解決辦法是更換能提供更大IOPS的機器。
不過前面也說了,我們從軟硬體兩方面着手的目的就是看能否分别尋求代價最小的解決方案:
知道硬體的原因了,我們可以嘗試把讀寫操作移到另一塊盤,然後再看看效果:
3、最後的話:另辟蹊徑
其實,除了用上述專業的工具定位這個問題外,我們可以直接利用程序狀态來找到相關的程序。
1.使用yum 安裝iftop工具
使用yum安裝的話比較簡單,隻要直接執行 yum install iftop –y指令即可,如果沒問題的話系統就會自動執行安裝,但是有使用yum可能安裝不了,這時就需要使用編譯安裝了
2.編譯安裝iftop工具
(1)下載下傳iftop工具的源碼包;
http://oss.aliyuncs.com/aliyunecs/iftop-0.17.tar.gz
(2)CentOS下安裝所需的依賴包
yum install flex byacc libpcap ncursesncurses-devel libpcap-devel
(3 解壓縮下載下傳的iftop檔案
tarzxvf iftop-0.17.tar.gz
(4 進入到解壓的的iftop目錄中
cdiftop-0.17
配置并制定安裝目錄為/usr/local/iftop目錄下
(5./configure –prefix=/usr/local/iftop
(6)編譯并安裝
make && make install
安裝完成以後直接使用/usr/local/iftop/sbin/iftop 啟動iftop程式檢視流量使用情況,如果想使用iftop的方式直接開啟程式,需要将iftop的程式添加到環境變量中即可
安裝iostat和mpstat工具 http://www.linuxidc.com/Linux/2013-10/91570.htm
本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1919952,如需轉載請自行聯系原作者