dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的局限並增加了一些另外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統運行狀況並用於基准測試和排除故障。
dstat可以讓你實時地看到所有系統資源,例如,你能夠通過統計IDE控制器當前狀態來比較磁盤利用率,或者直接通過網絡帶寬數值來比較磁盤的吞吐率(在相同的時間間隔內)。
dstat將以列表的形式為你提供選項信息並清晰地告訴你是在何種幅度和單位顯示輸出。這樣更好地避免了信息混亂和誤報。更重要的是,它可以讓你更容易編寫插件來收集你想要的數據信息,以從未有過的方式進行擴展。
Dstat的默認輸出是專門為人們實時查看而設計的,不過你也可以將詳細信息通過CSV輸出到一個文件,並導入到Gnumeric或者Excel生成表格中。
特性
結合了vmstat,iostat,ifstat,netstat以及更多的信息 實時顯示統計情況 在分析和排障時可以通過啟用監控項並排序 模塊化設計 使用python編寫的,更方便擴展現有的工作任務 容易擴展和添加你的計數器 包含的許多擴展插件充分說明了增加新的監控項目是很方便的 可以分組統計塊設備/網絡設備,並給出總數 可以顯示每台設備的當前狀態 極准確的時間精度,即便是系統負荷較高也不會延遲顯示 顯示准確地單位和和限制轉換誤差范圍 用不同的顏色顯示不同的單位 顯示中間結果延時小於1秒 支持輸出CSV格式報表,並能導入到Gnumeric和Excel以生成圖形
安裝
Ubuntu/Mint和Debin系統:
本地軟件庫中有相關安裝包,你可以用下面命令安裝:
# sudo apt-get install dstat
RHEL/Centos和Fedora系統:
# yum install dstat
或者下載rpm包
[root@entel2 ~]# rpm -ivh dstat-0.7.0-2.el6.noarch.rpm
Preparing... ########################################### [100%]
1:dstat ########################################### [100%]
[root@entel2 ~]# rpm -q dstat
dstat-0.7.0-2.el6.noarch
[root@entel2 ~]#
ArchLinux系統:
相關軟件包在社區資源庫中,你可以用這個命令來安裝:
# pacman -S dstat
使用
dstat的基本用法就是輸入dstat命令,輸出如下:
執行 dstat 命令的時候,默認他會 收集-cpu-、-disk-、-net-、-paging-、-system-的數據,一秒鐘收集一次。默認輸入 dstat 等於輸入了dstat -cdngy 1或dstat -a 1
這是默認輸出顯示的信息:
CPU狀態:CPU的使用率。這項報告更有趣的部分是顯示了用戶,系統和空閒部分,這更好地分析了CPU當前的使用狀況。如果你看到”wait”一欄中,CPU的狀態是一個高使用率值,那說明系統存在一些其它問題。當CPU的狀態處在”waits”時,那是因為它正在等待I/O設備(例如內存,磁盤或者網絡)的響應而且還沒有收到。
磁盤統計:磁盤的讀寫操作,這一欄顯示磁盤的讀、寫總數。
網絡統計:網絡設備發送和接受的數據,這一欄顯示的網絡收、發數據總數。
分頁統計:系統的分頁活動。分頁指的是一種內存管理技術用於查找系統場景,一個較大的分頁表明系統正在使用大量的交換空間,或者說內存非常分散,大多數情況下你都希望看到page in(換入)和page out(換出)的值是0 0。
系統統計:這一項顯示的是中斷(int)和上下文切換(csw)。這項統計僅在有比較基線時才有意義。這一欄中較高的統計值通常表示大量的進程造成擁塞,需要對CPU進行關注。你的服務器一般情況下都會運行運行一些程序,所以這項總是顯示一些數值。
默認情況下,dstat每秒都會刷新數據。如果想退出dstat,你可以按”CTRL-C”鍵。
需要注意的是報告的第一行,通常這裡所有的統計都不顯示數值的。
這是由於dstat會通過上一次的報告來給出一個總結,所以第一次運行時是沒有平均值和總值的相關數據。
同樣的 dstat 也可以收集指定的性能資源。使用 dstat -h 可以看到相應的參數。
[root@entel2 ~]# dstat -h
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics
Dstat options:
-c, --cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, --disk enable disk stats
-D total,hda include hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, --load enable load stats
-m, --mem enable memory stats
-n, --net enable network stats
-N eth1,total include eth1 and total
-p, --proc enable process stats
-r, --io enable io stats (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-y, --sys enable system stats
--aio enable aio stats
--fs, --filesystem enable fs stats
--ipc enable ipc stats
--lock enable lock stats
--raw enable raw stats
--socket enable socket stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--vm enable vm stats
--plugin-name enable plugins by plugin name (see manual)
--list list all available plugins
-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total
--bw, --blackonwhite change colors for white background terminal
--float force float values on screen
--integer force integer values on screen
--nocolor disable colors (implies --noupdate)
--noheaders disable repetitive headers
--noupdate disable intermediate updates
--output file write CSV output to file
delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
但是dstat可以通過傳遞2個參數運行來控制報告間隔和報告數量
例如,如果你想要dstat輸出默認監控、報表輸出的時間間隔為3秒鐘,並且報表中輸出10個結果,你可以運行如下命令:
dstat 3 10
在dstat命令中有很多參數可選,你可以通過man dstat命令查看,大多數常用的參數有這些:
-l :顯示負載統計量
-m :顯示內存使用率(包括used,buffer,cache,free值)
-r :顯示I/O統計
-s :顯示交換分區使用情況
-t :將當前時間顯示在第一行
–fs :顯示文件系統統計數據(包括文件總數量和inodes值)
–nocolor :不顯示顏色(有時候有用)
–socket :顯示網絡統計數據
–tcp :顯示常用的TCP統計
–udp :顯示監聽的UDP接口及其當前用量的一些動態數據
當然不止這些用法,dstat附帶了一些插件很大程度地擴展了它的功能。你可以通過查看/usr/share/dstat目錄來查看它們的一些使用方法,常用的有這些:
-–disk-util :顯示某一時間磁盤的忙碌狀況
-–freespace :顯示當前磁盤空間使用率
-–proc-count :顯示正在運行的程序數量
-–top-bio :指出塊I/O最大的進程
-–top-cpu :圖形化顯示CPU占用最大的進程
-–top-io :顯示正常I/O最大的進程
-–top-mem :顯示占用最多內存的進程
舉一些例子:
查看全部內存都有誰在占用:
dstat -g -l -m -s --top-mem
顯示一些關於CPU資源損耗的數據:
dstat -c -y -l --proc-count --top-cpu
如何輸出一個csv文件
想輸出一個csv格式的文件用於以後,可以通過下面的命令:
# dstat –output /tmp/sampleoutput.csv -cdn