監(jiān)控CPU\MEN: dstat --top-mem --top-io --top-cpu
常用常規(guī)監(jiān)控:dstat -cmsdnl -D sda1 -N lo,ens33 100 5
dstat 性能監(jiān)測(cè)工具
dstat 是一個(gè)可以取代vmstat剃盾,iostat溃斋,netstat和ifstat這些命令的多功能產(chǎn)品春霍。dstat克服了這些命令的局限并增加了一些另外的功能,增加了監(jiān)控項(xiàng)欧芽,也變得更靈活了。dstat可以很方便監(jiān)控系統(tǒng)運(yùn)行狀況并用于基準(zhǔn)測(cè)試和排除故障。
dstat可以讓你實(shí)時(shí)地看到所有系統(tǒng)資源龙助,例如蔗坯,你能夠通過統(tǒng)計(jì)IDE控制器當(dāng)前狀態(tài)來比較磁盤利用率康震,或者直接通過網(wǎng)絡(luò)帶寬數(shù)值來比較磁盤的吞吐率(在相同的時(shí)間間隔內(nèi))。
dstat將以列表的形式為你提供選項(xiàng)信息并清晰地告訴你是在何種幅度和單位顯示輸出宾濒。這樣更好地避免了信息混亂和誤報(bào)腿短。更重要的是,它可以讓你更容易編寫插件來收集你想要的數(shù)據(jù)信息,以從未有過的方式進(jìn)行擴(kuò)展答姥。
Dstat的默認(rèn)輸出是專門為人們實(shí)時(shí)查看而設(shè)計(jì)的铣除,不過你也可以將詳細(xì)信息通過CSV輸出到一個(gè)文件,并導(dǎo)入到Gnumeric或者Excel生成表格中鹦付。
特性
- 結(jié)合了vmstat尚粘,iostat,ifstat敲长,netstat以及更多的信息
- 實(shí)時(shí)顯示統(tǒng)計(jì)情況
- 在分析和排障時(shí)可以通過啟用監(jiān)控項(xiàng)并排序
- 模塊化設(shè)計(jì)
- 使用python編寫的郎嫁,更方便擴(kuò)展現(xiàn)有的工作任務(wù)
- 容易擴(kuò)展和添加你的計(jì)數(shù)器(請(qǐng)為此做出貢獻(xiàn))
- 包含的許多擴(kuò)展插件充分說明了增加新的監(jiān)控項(xiàng)目是很方便的
- 可以分組統(tǒng)計(jì)塊設(shè)備/網(wǎng)絡(luò)設(shè)備,并給出總數(shù)
- 可以顯示每臺(tái)設(shè)備的當(dāng)前狀態(tài)
- 極準(zhǔn)確的時(shí)間精度祈噪,即便是系統(tǒng)負(fù)荷較高也不會(huì)延遲顯示
- 顯示準(zhǔn)確地單位和和限制轉(zhuǎn)換誤差范圍
- 用不同的顏色顯示不同的單位
- 顯示中間結(jié)果延時(shí)小于1秒
- 支持輸出CSV格式報(bào)表泽铛,并能導(dǎo)入到Gnumeric和Excel以生成圖形
安裝方法
1. 在centos下 可以 yum -y instatll dstat
2. 下載rpm包進(jìn)行安裝
wget http://packages.sw.be/dstat/dstat-0.7.2-1.el5.rfx.noarch.rpm
rpm -ivh dstat-0.7.2-1.el5.rfx.noarch.rpm
使用方法
dstat的基本用法就是輸入dstat命令,輸出如下:
這是默認(rèn)輸出顯示的信息:
默認(rèn)情況下分五個(gè)區(qū)域:
1辑鲤、 --total-cpu-usage---- CPU使用率
usr:用戶空間的程序所占百分比盔腔;
sys:系統(tǒng)空間程序所占百分比;
idel:空閑百分比月褥;
wai:等待磁盤I/O所消耗的百分比弛随;
hiq:硬中斷次數(shù);
siq:軟中斷次數(shù)宁赤;
2舀透、-dsk/total-磁盤統(tǒng)計(jì)
read:讀總數(shù)
writ:寫總數(shù)
3、-net/total- 網(wǎng)絡(luò)統(tǒng)計(jì)
recv:網(wǎng)絡(luò)收包總數(shù)
send:網(wǎng)絡(luò)發(fā)包總數(shù)
4决左、---paging-- 內(nèi)存分頁統(tǒng)計(jì)
in: pagein(換入)
out:page out(換出)
注:系統(tǒng)的分頁活動(dòng)愕够。分頁指的是一種內(nèi)存管理技術(shù)用于查找系統(tǒng)場(chǎng)景,一個(gè)較大的分頁表明系統(tǒng)正在使用大量的交換空間佛猛,通常情況下當(dāng)系統(tǒng)已經(jīng)開始用交換空間的時(shí)候惑芭,就說明你的內(nèi)存已經(jīng)不夠用了,或者說內(nèi)存非常分散挚躯,理想情況下page in(換入)和page out(換出)的值是0 0强衡。
5、--system--系統(tǒng)信息
int:中斷次數(shù)
csw:上下文切換
注:中斷(int)和上下文切換(csw)码荔。這項(xiàng)統(tǒng)計(jì)僅在有比較基線時(shí)才有意義漩勤。這一欄中較高的統(tǒng)計(jì)值通常表示大量的進(jìn)程造成擁塞,需要對(duì)CPU進(jìn)行關(guān)注缩搅。你的服務(wù)器一般情況下都會(huì)運(yùn)行運(yùn)行一些程序越败,所以這項(xiàng)總是顯示一些數(shù)值。
默認(rèn)情況下硼瓣,dstat 會(huì)每隔一秒刷新一次數(shù)據(jù)究飞,一直刷新并一直輸出置谦,按 Ctrl+C 退出 "dstat";
dstat 還有許多具體的參數(shù)亿傅,可通過man dstat命令查看媒峡,
常用參數(shù)如下:
通過dstat --list可以查看dstat能使用的所有參數(shù)
- -l :顯示負(fù)載統(tǒng)計(jì)量
- -m :顯示內(nèi)存使用率(包括used,buffer葵擎,cache谅阿,free值)
- -r :顯示I/O統(tǒng)計(jì)
- -s :顯示交換分區(qū)使用情況
- -t :將當(dāng)前時(shí)間顯示在第一行
- –fs :顯示文件系統(tǒng)統(tǒng)計(jì)數(shù)據(jù)(包括文件總數(shù)量和inodes值)
- –nocolor :不顯示顏色(有時(shí)候有用)
- –socket :顯示網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)
- –tcp :顯示常用的TCP統(tǒng)計(jì)
- –udp :顯示監(jiān)聽的UDP接口及其當(dāng)前用量的一些動(dòng)態(tài)數(shù)據(jù)
當(dāng)然不止這些用法,dstat附帶了一些插件很大程度地?cái)U(kuò)展了它的功能酬滤。你可以通過查看/usr/share/dstat目錄來查看它們的一些使用方法签餐,常用的有這些:
- -–disk-util :顯示某一時(shí)間磁盤的忙碌狀況
- -–freespace :顯示當(dāng)前磁盤空間使用率
- -–proc-count :顯示正在運(yùn)行的程序數(shù)量
- -–top-bio :指出塊I/O最大的進(jìn)程
- -–top-cpu :圖形化顯示CPU占用最大的進(jìn)程
- -–top-io :顯示正常I/O最大的進(jìn)程
- -–top-mem :顯示占用最多內(nèi)存的進(jìn)程
應(yīng)用舉例:
dstat輸出默認(rèn)監(jiān)控、報(bào)表輸出的時(shí)間間隔為3秒鐘,并且報(bào)表中輸出10個(gè)結(jié)果
<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># dstat 3 10</pre>
查看全部?jī)?nèi)存都有誰在占用:
<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># dstat -g -l -m -s --top-mem</pre>
顯示一些關(guān)于CPU資源損耗的數(shù)據(jù):
<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># dstat -c -y -l --proc-count --top-cpu</pre>
如何輸出一個(gè)csv文件
<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># dstat --output /tmp/sampleoutput.csv -cdn</pre>
一盯串、什么是dstat氯檐?
通過man幫助,可以看到官方對(duì)dstat的定義為:多功能系統(tǒng)資源統(tǒng)計(jì)生成工具( versatile tool for generating system resource statistics)体捏。在獲取的信息上有點(diǎn)類似于top冠摄、free、iostat几缭、vmstat等多個(gè)工具的合集耗拓,官方解釋為vmstat、iostat奏司、ifstat等工具的多功能替代品,且添加了許多額外的功能(Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.)樟插;其結(jié)果可以保持到csv文件韵洋,使用腳本或第三方工具對(duì)性能進(jìn)行分析利用(如通過監(jiān)控平臺(tái)監(jiān)控,也可以保持到數(shù)據(jù)庫)黄锤。在Centos 6.x系統(tǒng)上安裝基本服務(wù)器即默認(rèn)安裝搪缨,而在其他操作系統(tǒng)可能需要手動(dòng)安裝。
二鸵熟、dstat的基本使用:
2.1 dstat的默認(rèn)選項(xiàng)
與許多命令一樣副编,dstat命令有默認(rèn)選項(xiàng),執(zhí)行dstat命令不加任何參數(shù)流强,它默認(rèn)會(huì)收集-cpu-痹届、-disk-、-net-打月、-paging-队腐、-system-的數(shù)據(jù),一秒鐘收集一次奏篙。 默認(rèn)輸入 dstat 等于輸入了dstat -cdngy 1或dstat -a 1柴淘。
2.2 dstat的常用選項(xiàng):
dstat的用法如下:
dstat [-afv] [options..] [delay [count]]
使用 dstat -h查看全部選項(xiàng),這里不逐一列舉,下面簡(jiǎn)單介紹下常用選項(xiàng)
常用選項(xiàng)如下:
直接跟數(shù)字为严,表示#秒收集一次數(shù)據(jù)敛熬,默認(rèn)為一秒;dstat 5表示5秒更新一次
-c,--cpu 統(tǒng)計(jì)CPU狀態(tài)第股,包括 user, system, idle(空閑等待時(shí)間百分比), wait(等待磁盤IO), hardware interrupt(硬件中斷), software interrupt(軟件中斷)等应民;
-d, --disk 統(tǒng)計(jì)磁盤讀寫狀態(tài)
-D total,sda 統(tǒng)計(jì)指定磁盤或匯總信息
-l, --load 統(tǒng)計(jì)系統(tǒng)負(fù)載情況,包括1分鐘炸茧、5分鐘瑞妇、15分鐘平均值
-m, --mem 統(tǒng)計(jì)系統(tǒng)物理內(nèi)存使用情況,包括used, buffers, cache, free
-s, --swap 統(tǒng)計(jì)swap已使用和剩余量
-n, --net 統(tǒng)計(jì)網(wǎng)絡(luò)使用情況梭冠,包括接收和發(fā)送數(shù)據(jù)
-N eth1,total 統(tǒng)計(jì)eth1接口匯總流量
-r, --io 統(tǒng)計(jì)I/O請(qǐng)求辕狰,包括讀寫請(qǐng)求
-p, --proc 統(tǒng)計(jì)進(jìn)程信息,包括runnable控漠、uninterruptible蔓倍、new
-y, --sys 統(tǒng)計(jì)系統(tǒng)信息,包括中斷盐捷、上下文切換
-t 顯示統(tǒng)計(jì)時(shí)時(shí)間偶翅,對(duì)分析歷史數(shù)據(jù)非常有用
--fs 統(tǒng)計(jì)文件打開數(shù)和inodes數(shù)
以上這些就是最常用的選項(xiàng),而一般都組合使用碉渡,個(gè)人比較常用的是:
- dstat -cmsdnl -D sda9 -N lo,etho 100 5
三聚谁、監(jiān)測(cè)界面各參數(shù)含義(部分)
Procs
r:運(yùn)行的和等待(CPU時(shí)間片)運(yùn)行的進(jìn)程數(shù),這個(gè)值也可以判斷是否需要增加CPU(長(zhǎng)期大于1)
b:處于不可中斷狀態(tài)的進(jìn)程數(shù)滞诺,常見的情況是由IO引起的
Memory
swpd: 切換到交換內(nèi)存上的內(nèi)存(默認(rèn)以KB為單位)形导。如果 swpd 的值不為0,或者還比較大习霹,比如超過100M了朵耕,但是 si, so 的值長(zhǎng)期為 0,這種情況我們可以不用擔(dān)心淋叶,不會(huì)影響系統(tǒng)性能阎曹。
free: 空閑的物理內(nèi)存
buff: 作為buffer cache的內(nèi)存,對(duì)塊設(shè)備的讀寫進(jìn)行緩沖
cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache煞檩。如果 cache 的值大的時(shí)候处嫌,說明cache住的文件數(shù)多,如果頻繁訪問到的文件都能被cache住形娇,那么磁盤的讀IO bi 會(huì)非常小锰霜。
Swap
si: 交換內(nèi)存使用,由磁盤調(diào)入內(nèi)存
so: 交換內(nèi)存使用桐早,由內(nèi)存調(diào)入磁盤
內(nèi)存夠用的時(shí)候癣缅,這2個(gè)值都是0厨剪,如果這2個(gè)值長(zhǎng)期大于0時(shí),系統(tǒng)性能會(huì)受到影響友存。磁盤IO和CPU資源都會(huì)被消耗祷膳。
我發(fā)現(xiàn)有些朋友看到空閑內(nèi)存(free)很少或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了屡立,實(shí)際上不能光看這一點(diǎn)的直晨,還要結(jié)合si,so,如果free很少膨俐,但是si,so也很少(大多時(shí)候是0)勇皇,那么不用擔(dān)心,系統(tǒng)性能這時(shí)不會(huì)受到影響的焚刺。
磁盤IO
bi: 從塊設(shè)備讀入的數(shù)據(jù)總量(讀磁盤) (KB/s)
bo: 寫入到塊設(shè)備的數(shù)據(jù)總理(寫磁盤) (KB/s)
注:隨機(jī)磁盤讀寫的時(shí)候敛摘,這2個(gè) 值越大(如超出1M),能看到CPU在IO等待的值也會(huì)越大
System
in: 每秒產(chǎn)生的中斷次數(shù)
cs: 每秒產(chǎn)生的上下文切換次數(shù)
上面這2個(gè)值越大乳愉,會(huì)看到由內(nèi)核消耗的CPU時(shí)間會(huì)越多
Cpu
- usr: 用戶進(jìn)程消耗的CPU時(shí)間百分比
us 的值比較高時(shí)兄淫,說明用戶進(jìn)程消耗的CPU時(shí)間多,但是如果長(zhǎng)期超過50% 的使用蔓姚,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速了(比如 <acronym title="Hypertext Preprocessor" style="margin: 0px; padding: 0px;">PHP</acronym>/<acronym title="Practical Extraction and Report Language" style="margin: 0px; padding: 0px;">Perl</acronym>)
- sys: 內(nèi)核進(jìn)程消耗的CPU時(shí)間百分比
sys 的值高時(shí)捕虽,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性的表現(xiàn)坡脐,我們應(yīng)該檢查原因泄私。
- wai: IO等待消耗的CPU時(shí)間百分比
wa 的值高時(shí),說明IO等待比較嚴(yán)重备闲,這可能是由于磁盤大量作隨機(jī)訪問造成挖滤,也有可能是磁盤的帶寬出現(xiàn)瓶頸(塊操作)。
- idl: CPU處在空閑狀態(tài)時(shí)間百分比
四浅役、dstat的高級(jí)用法
dstat的功能非常強(qiáng)大,除了上述常用用法外伶唯,還有一些大家不常用的高級(jí)用法觉既,如下:
3.1 找出占用資源最高的進(jìn)程和用戶
--top-(io|bio|cpu|cputime|cputime-avg|mem) 通過這幾個(gè)選項(xiàng),可以看到具體是那個(gè)用戶那個(gè)進(jìn)程占用了相關(guān)系統(tǒng)資源乳幸,對(duì)系統(tǒng)調(diào)優(yōu)非常有效瞪讼。如查看當(dāng)前占用I/O、cpu粹断、內(nèi)存等最高的進(jìn)程信息可以使用dstat --top-mem --top-io --top-cpu:
[圖片上傳失敗...(image-a66ba-1537931399522)]
3.2 獲取其他應(yīng)用信息:
dstat除了可以獲取系統(tǒng)關(guān)鍵信息外符欠,還可以獲取其他應(yīng)用信息,如通過下列選項(xiàng)瓶埋,可以獲取到其他一些常用應(yīng)用信息:
--postfix 顯示postfix隊(duì)列大小
--sendmail 顯示sendmail隊(duì)列大小
--ntp 顯示ntp服務(wù)器時(shí)間
--nfs3 獲取nfs客戶端信息
--nfsd3 獲取nfs服務(wù)器信息希柿,不過nfs服務(wù)器版本需為第三版才可以诊沪,該選項(xiàng)還有更多用法影兽,可以參考man幫助獲取
--mysql5-(cmds|conn|io|keys ) 獲取mysql5相關(guān)信息