官方對dstat的定義為:多功能系統資源統計生成工具( versatile tool for generating system resource statistics)。在擷取的資訊上有點類似于top、free、iostat、vmstat等多個工具的合集,官方解釋為vmstat、iostat、ifstat等工具的多功能替代品,且添加了許多額外的功能(Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.);其結果可以保持到csv檔案,使用腳本或第三方工具對性能進行分析利用(如通過監控平台監控,也可以保持到資料庫)。
在root賬戶下執行指令yum install dstat , 進行軟體的安裝
安裝完成後,我們執行指令dstat。顯示為系統的整體的性能資訊
[root@docker-01 ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usrsysidlwaihiqsiq|read writ|recv send| in out |int csw
0 0 100 0 0 0|1068B 2066B| 0 0 | 0 0 | 14 21
0 0 100 0 0 0| 0 0 |112B 146B| 0 0 | 41 58
0 0 100 0 0 0| 0 0 |290B 1156B| 0 0 | 38 65
0 0 100 0 0 0| 0 0 | 56B 138B| 0 0 | 32 54
0 0 100 0 0 0| 0 0 | 56B 338B| 0 0 | 44 62
0 0 100 0 0 0| 0 0 | 56B 338B| 0 0 | 27 51
1 0 100 0 0 0| 0 0 | 56B 338B| 0 0 | 36 60
針對預設輸出字段解釋如下
分組 | 分組含義及子項字段含義 |
---|---|
CPU狀态 | CPU的使用率。顯示了使用者占比,系統占比、空閑占比、等待占比、硬中斷和軟中斷情況。 |
磁盤統計 | 磁盤的讀寫,分别顯示磁盤的讀、寫總數。 |
網絡統計 | 網絡裝置發送和接受的資料,分别顯示的網絡收、發資料總數。 |
分頁統計 | 系統的分頁活動。分别顯示換入(in)和換出(out)。 |
系統統計 | 統計中斷(int)和上下文切換(csw)。 |
1.指令格式
2.指令選項
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 | 開啟中斷統計 |
-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) |
- -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檔案中 |
3.指令參數
參數名稱 | 參數描述 |
---|---|
delay | 兩次輸出之間的時間間隔,預設是1s |
count | 報告輸出的次數,預設是沒有限制,一直輸出知道ctrl+c |
檢視cpu的整體情況,執行指令dstat -c。顯示各個資訊為CPU使用者占用,系統占用,空閑,等待,中斷,軟體中斷等資訊。
[root@docker-01 ~]# dstat -c
----total-cpu-usage----
usrsysidlwaihiqsiq
0 0 100 0 0 0
1 0 100 0 0 0
0 0 100 0 0 0
檢視系統的磁盤的讀寫資料大小,執行指令dstat -d
[root@docker-01 ~]# dstat -d
-dsk/total-
read writ
1067B 2105B
0 0
0 0
0 0
檢視系統的網絡狀态,執行指令dstat -n
[root@docker-01 ~]# dstat -n
-net/total-
recv send
0 0
56B 90B
56B 194B
56B 154B
檢視系統的記憶體資訊,執行指令dstat -m
[root@docker-01 ~]# dstat -m
------memory-usage-----
used buff cach free
258M 2108k 424M 9154M
258M 2108k 424M 9154M
258M 2108k 424M 9154M
檢視系統的負載情況,執行指令dstat -l
[root@docker-01 ~]# dstat -l
---load-avg---
1m 5m 15m
0 0.01 0.05
0 0.01 0.05
0 0.01 0.05
檢視系統的I/O請求情況,執行指令dstat -r
[root@docker-01 ~]# dstat -r
--io/total-
read writ
0.04 0.16
0 15.0
0 0
監控udp、tcp,監控CPU,顯示時間,每三秒掃描一次,共掃描三次
[root@docker-01 ~]# dstat --udp --tcp -c -t 3 3
--udp-- ----tcp-sockets---- ----total-cpu-usage---- ----system----
lisact|lisactsyntimclo|usrsysidlwaihiqsiq| time
8 0| 7 2 0 0 0| 0 0 100 0 0 0|19-08 21:50:55
8 0| 7 2 0 0 0| 0 0 100 0 0 0|19-08 21:50:58
8 0| 7 2 0 0 0| 0 0 100 0 0 0|19-08 21:51:01
8 0| 7 2 0 0 0| 0 0 100 0 0 0|19-08 21:51:04
4.插件指令
插件名稱 | 插件描述 |
---|---|
- -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 | 無線連接配接品質和信号噪聲比 |
5.常用插件指令
插件名稱 | 插件描述 |
---|---|
- -disk-util | 顯示某一時間磁盤的忙碌狀況 |
- -freespace | 顯示目前磁盤空間使用率 |
- -proc-count | 顯示正在運作的程式數量 |
- -top-bio | 顯示塊I/O最大的程序 |
- -top-cpu | 顯示CPU占用最大的程序 |
- -top-io | 顯示正常I/O最大的程序 |
- -top-mem | 顯示占用最多記憶體的程序 |
例:
檢視CPU資源使用情況,執行指令
[root@docker-01 ~]# dstat -cyl --proc-count --top-cpu
----total-cpu-usage---- ---system-- ---load-avg--- proc -most-expensive-
usrsysidlwaihiqsiq|int csw |1m 5m 15m |tota| cpu process
0 0 100 0 0 0| 14 21| 0 0.01 0.05|109|python2 0.0
0 1 99 0 0 0| 57 40| 0 0.01 0.05|109|
1 0 99 0 0 0| 53 42| 0 0.01 0.05|109|
1 1 99 0 0 0| 36 28| 0 0.01 0.05|109|
0 0 100 0 0 0| 40 30| 0 0.01 0.05|109|
檢視記憶體資源使用情況,執行指令
[root@docker-01 ~]# dstat -glms --top-mem
Terminal width too small, trimming output.
---paging-- ---load-avg--- ------memory-usage----- ----swap--->
in out |1m 5m 15m |used buff cach free|used free>
0 0 | 0 0.01 0.05|258M 2108k 424M 9154M| 0 2048M>
0 0 | 0 0.01 0.05|259M 2108k 424M 9153M| 0 2048M>
0 0 | 0 0.01 0.05|259M 2108k 424M 9153M| 0 2048M>
0 0 | 0 0.01 0.05|259M 2108k 424M 9153M| 0 2048M>
6、dstat重點(個人意見)
dstat --top-cpu:顯示最消耗CPU的程序
dstat --top-cuptime:最消耗CPU時間的程序,以毫秒為機關
dstat --top-io:顯示消耗io最多的程序
dstat --top-latency:顯示哪個程序有最大的延遲
dstat --top-mem:顯示用記憶體最多的線程
dstat --top-mem --top-cpu:倆個一起使用也是OK的
關于運維學習、分享、交流,筆者開通了微信公衆号【運維貓】,感興趣的朋友可以關注下,歡迎加入,建立屬于我們自己的小圈子,一起學運維知識。