linux命令---dstat

轉載自:https://blog.csdn.net/yue530tomtom/article/details/75443305

 

概述
  先獻上【官網】和【github】本文中所有資料的均源於此,寫的不清楚的地方可以翻閱一下官方文檔

  dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產品。dstat揚長避短,即克服了這些命令的侷限又增加了一些額外的功能,不但擁有更多的監控項,也更靈活。dstat在性能測試、基準測試和排除故障過程中可以很方便監控系統運行狀況。 
  dstat可以查看所有的實時系統資源,如:通過統計IDE控制器當前狀態來比較磁盤利用率,或者直接通過網絡帶寬數值來比較磁盤的吞吐率(在相同的時間間隔內)。 
  dstat以列表的形式提供選項信息,並清晰地告知以何種幅度和單位顯示輸出。輸出信息整潔,降低發生錯誤的概率。最重要的是,整潔的數據更容易編寫插件用來收集分析關注的數據信息。 
  dstat默認輸出是專門爲實時查看而設計的,然而也可以將詳細信息通過cvs輸出到一個文件,然後將cvs文件導入到Gnumeric或者Excel中生成圖表。

特性
結合了vmstat,iostat,ifstat,netstat以及更多的信息
實時顯示統計情況,輸出報告
在分析和排障時可以通過啓用監控項並排序
模塊化設計
使用python編寫的,方便擴展現有的工作任務
容易擴展和添加你的計數器
包含的許多擴展插件——增加新的監控項目很方便
可以分組統計塊設備/網絡設備,並給出總數
可以顯示每臺設備的當前狀態
極準確的時間精度,即便是系統負荷較高也不會延遲顯示
顯示準確地單位和和限制轉換誤差範圍
不同的計量單位用不同的顏色顯示
顯示中間結果延時小於1秒
支持輸出CSV格式報表,並能導入到Gnumeric和Excel以生成圖形
啓程
安裝
只演示CentOS下的安裝(我的實驗環境爲CentOS)

[root@wmstianjin16172 ~]# yum install dstat


測試命令
安裝完成測試一下命令是否完成安裝

[root@wmstianjin16172 ~]# dstat

 
針對默認輸出字段解釋如下

分組    分組含義及子項字段含義
CPU狀態    CPU的使用率。顯示了用戶佔比,系統佔比、空閒佔比、等待佔比、硬中斷和軟中斷情況。
磁盤統計    磁盤的讀寫,分別顯示磁盤的讀、寫總數。
網絡統計    網絡設備發送和接受的數據,分別顯示的網絡收、發數據總數。
分頁統計    系統的分頁活動。分別顯示換入(in)和換出(out)。
系統統計    統計中斷(int)和上下文切換(csw)。
命令格式
dstat [-afv] [options..] [delay [count]]

命令選項
Options    Details
-c, - -cpu    開啓cpu統計
-C    該選項跟cpu的編號(0~cpu核數-1,多個用都好隔開)如:0,3,total表示分別包含cpu0、cpu3和total
-d, - -disk    開啓disk統計
-D    改選跟具體的設備名(多個用逗號隔開)如:total,hda,hdb表示分別統計total、hda、hdb設備塊
-g, - -page    開啓分頁統計
-i, - -int    開啓中斷統計
-I 5,10    沒弄懂呢~巴拉巴拉
-l, - -load    開啓負載均衡統計,分別是1m,5m,15m
-m, - -mem    開啓內存統計,包括used,buffers,cache,free
-n, - -net    開啓net統計,包括接受和發送
-N    該選項可以跟網絡設備名多個用逗號隔開,如eth1,total
-p, - -proc    開啓進程統計,包括runnable, uninterruptible, new
-r, - -io    io開啓請求統計,包括read requests, write requests
-s, - -swap    開啓swap統計,包括used, free
-S    該選項可以跟具體的交換區,多個用逗號隔開如swap1,total
-t, - -time    啓用時間和日期輸出
-T, - -epoch    啓用時間計數,從epoch到現在的秒數
-y, - -sys    開啓系統統計,包括中斷和上下文切換
- -aio    開啓同步IO統計 (asynchronous I/O)
- -fs    開啓文件系統統計,包括 (open files, inodes)
- -ipc    開啓ipc統計,包括 (message queue, semaphores, shared memory)
- -lock    開啓文件所統計,包括 (posix, flock, read, write)
- -raw    開啓raw統計 (raw sockets)
- -socket    開啓sockets統計,包括 (total, tcp, udp, raw, ip-fragments)
- -tcp    開啓tcp統計,包括(listen, established, syn, time_wait, close)
- -udp    開啓udp統計 (listen, active)
- -unix    開啓unix統計(datagram, stream, listen, active)
- -vm    開啓vm統計 (hard pagefaults, soft pagefaults, allocated, free)
- -stat    通過插件名稱開啓插件擴展,詳見命令插件 :可能的內置插件爲aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap, swapold, sys, tcp, time,udp, unix, vm
- -list    列舉內置插件擴展的名稱
-a, - -all    是默認值相當於 -cdngy (default)
-f, - -full    相當於 -C, -D, -I, -N and -S
-v, - -vmstat    相當於 -pmgdsc -D total
- -bw, - -blackonwhite    在白色背景終端上改變顯示顏色
- -float    在屏幕上的輸出強制顯示爲浮點值(即帶小數)(相反的選項設置爲 - -integer)
- -integer    在屏幕上的輸出強制顯示爲整數值,此爲默認值(相反的選項設置爲- -float)
- -nocolor    禁用顏色(意味着選項 - -noupdate)
- -noheaders    禁止重複輸出header,默認會打印一屏幕輸出一次header
- -noupdate    當delay>1時禁止在過程中更新(即在時間間隔內不允許更新)
- -output file    輸出結果到cvs文件中
命令參數
參數名稱    參數描述
delay    兩次輸出之間的時間間隔,默認是1s
count    報告輸出的次數,默認是沒有限制,一直輸出知道ctrl+c
命令插件
雖然anyone可以自由的爲dstat編寫插件,但dstat附帶大量的插件已經大大擴展其功能,下面是dstat附帶插件的一個概述:

插件名稱    插件描述
- -battery    電池電池百分比(需要ACPI)
- -battery-remain    電池剩餘小時、分鐘(需要ACPI)
- -cpufreq    CPU頻率百分比(需要ACPI)
- -dbus    dbus連接的數量(需要python-dbus)
- -disk-util    顯示某一時間磁盤的忙碌狀況
- -fan    風扇轉速(需要ACPI)
- -freespace    每個文件系統的磁盤使用情況
- -gpfs    gpfs讀/寫 I / O(需要mmpmon)
- -gpfs-ops    GPFS文件系統操作(需要mmpmon)
- -helloworld    dstat插件Hello world示例
- -innodb-buffer    顯示innodb緩衝區統計
- -innodb-io    顯示innodb I / O統計數據
- -innodb-ops    顯示innodb操作計數器
- -lustre    顯示lustreI / O吞吐量
- -memcache-hits    顯示memcache 的命中和未命中的數量
- -mysql5-cmds    顯示MySQL5命令統計
- -mysql5-conn    顯示MySQL5連接統計
- -mysql5-io    MySQL5 I / O統計數據
- -mysql5-keys    顯示MySQL5關鍵字統計
- -mysql-io    顯示MySQL I / O統計數據
- -mysql-keys    顯示MySQL關鍵字統計
- -net-packets    顯示接收和發送的數據包的數量
- -nfs3    顯示NFS v3客戶端操作
- -nfs3-ops    顯示擴展NFS v3客戶端操作
- -nfsd3    顯示NFS v3服務器操作
- -nfsd3-ops    顯示擴展NFS v3服務器操作
- -ntp    顯示NTP服務器的ntp時間
- -postfix    顯示後綴隊列大小(需要後綴)
- -power    顯示電源使用量
- -proc-count    顯示處理器的總數
- -rpc    顯示rpc客戶端調用統計
- -rpcd    顯示RPC服務器調用統計
- -sendmail    顯示sendmail隊列大小(需要sendmail)
- -snooze    顯示每秒運算次數
- -test    顯示插件輸出
- -thermal    熱系統的溫度傳感器
- -top-bio    顯示消耗塊I/O最大的進程
- -top-cpu    顯示消耗CPU最大的進程
- -top-cputime    顯示使用CPU時間最大的進程(單位ms)
- -top-cputime-avg    顯示使用CPU時間平均最大的進程(單位ms)
- -top-io    顯示消耗I/O最大進程
- -top-latency    顯示總延遲最大的進程(單位ms)
- -top-latency-avg    顯示平均延時最大的進程(單位ms)
- -top-mem    顯示使用內存最大的進程
- -top-oom    顯示第一個被OOM結束的進程
- -utmp    顯示utmp連接的數量(需要python-utmp)
- -vmk-hba    顯示VMware ESX內核vmhba統計數
- -vmk-int    顯示VMware ESX內核中斷數據
- -vmk-nic    顯示VMware ESX內核端口統計
- -vz-io    顯示每個OpenVZ請求CPU使用率
- -vz-ubc    顯示OpenVZ用戶統計
- -wifi    無線連接質量和信號噪聲比
常用插件
插件名稱    插件描述
- -disk-util    顯示某一時間磁盤的忙碌狀況
- -freespace    顯示當前磁盤空間使用率
- -proc-count    顯示正在運行的程序數量
- -top-bio    顯示塊I/O最大的進程
- -top-cpu    顯示CPU佔用最大的進程
- -top-io    顯示正常I/O最大的進程
- -top-mem    顯示佔用最多內存的進程
舉一些例子:

內存資源使用情況:

dstat -glms --top-mem

 
CPU資源使用情況:

dstat -cyl --proc-count --top-cpu

 
輸出一個csv文件:

dstat --output ~/test.csv


常見問題
1、cpu分組中”wait”,如果一直處於高使用率,那說明系統存在一些其它問題。當CPU的狀態處在”waits”時,那是因爲它正在等待I/O設備(例如內存,磁盤或者網絡)的響應而且還沒有收到。 
2、CPU的使用情況是否正常:用戶態和內核態的使用是否合理;總體佔比是否合理;若不合理可以用dstat對應的插件(- -top-cpu)排查最耗CPU的進程,配合mpstat、top再去下鑽一下分析線程,進一步到程序(比如java可以jstack)。 
3、磁盤IO讀寫是否正常:讀寫是否偏大;若不正常可以配合插件- -disk-util、- -freespace、- -top-bio、- -top-io等進行排查,也可以配合iostat排查 
3、內存是否正常:一般要配合交換區內存一起判斷,若不正常可以配合插件- -top-mem,可能是開啓的進程太多,或者第三方程序搗亂。 
4、應用程序內存是否正常:配合業務表現比如請求響應慢、沒反應等,在結合第三方程序監控(如java可以用jvm監控工具(jprofiler、jconsole、jvisualvm……)監控內存)此種情況和3還不太一樣,一個jvm內存一個sys內存 
5、分頁指的是一種內存管理技術用於查找系統場景,一個較大的分頁表明系統正在使用大量的交換空間,或者說內存非常分散,大多數情況下你都希望看到page in(換入)和page out(換出)的值都是0。 
6、系統統計僅在有比較基線時纔有意義。中斷和上下文切換較高的統計值通常表示大量的進程造成擁塞,需要對CPU進行關注。服務器一般情況下都會運行運行一些程序,所以這項總是顯示一些數值。 
7、使用不同的插件可以快速排查有問題的進程然後配合其他工具下鑽具體問題,當然這個需要建立在你對所有的插件都比較熟悉的基礎之上,知道什麼情況下使用什麼插件。技巧:可以將常用的命令寫成腳本,執行分析,這樣就不用每次都敲了。

原文連接 
歡迎拍磚,未完待續……
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章