Linux 終端下全能系統監控工具 dstat

dstat 命令是一個用來替換 vmstat、iostat、netstat、nfsstat 和 ifstat 這些命令的工具,是一個全能系統信息統計工具。與 sysstat 相比,dstat 擁有一個彩色的界面,在手動觀察性能情況時,數據比較顯眼容易觀察;並且 dstat 支持即時刷新,譬如輸入 dstat 3 即每三秒收集一次,但最新的數據都會每秒刷新顯示。和 sysstat 相同的是,dstat 也能夠收集指定的性能資源,譬如 dstat -c 即顯示 CPU 的使用狀況。
 node

 下載安裝 python

 

方法一
 mysql

yum install -y dstat

 

方法二 官網下載地址:ios

 

http://dag.wieers.com/rpm/packages/dstat
 算法

wget http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm rpm -ivh dstat-0.6.7-1.rh7.rf.noarch.rpm

 

 使用說明 sql

 

安裝完後就可使用了,dstat 很是強大,能夠實時的監控 cpu、磁盤、網絡、IO、內存等使用狀況。 網絡

 

直接使用 dstat,默認使用的是 -cdngy 參數,分別顯示 cpu、disk、net、page、system 信息,默認是 1s 顯示一條信息。能夠在最後指定顯示一條信息的時間間隔,如 dstat 5 是沒 5s 顯示一條,dstat 5 10 表示沒 5s 顯示一條,一共顯示 10 條。socket

 

[root@iZ23uulau1tZ ~]# dstat 
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- 
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 99 0 0 0|7706B 164k| 0 0 | 0 0 | 189 225
0 0 100 0 0 0| 0 0 |4436B 826B| 0 0 | 195 248
1 0 99 0 0 0| 0 0 |4744B 346B| 0 0 | 203 242
0 0 100 0 0 0| 0 0 |5080B 346B| 0 0 | 206 242
0 1 99 0 0 0| 0 0 |5458B 444B| 0 0 | 214 244
1 0 99 0 0 0| 0 0 |5080B 346B| 0 0 | 208 242

 

下面對顯示出來的部分信息做一些說明: tcp

  1. cpu:hiq、siq 分別爲硬中斷和軟中斷次數。 工具

  2. system:int、csw 分別爲系統的中斷次數(interrupt)和上下文切換(context switch)。 

 

其餘的都很好理解。
 

 語法 

 

dstat [-afv] [options..] [delay [count]]

 

 經常使用選項 

 

-c:顯示 CPU 系統佔用,用戶佔用,空閒,等待,中斷,軟件中斷等信息。 
-C:當有多個 CPU 時候,此參數可按需分別顯示 cpu 狀態,例:-C 0,1 是顯示 cpu0 和 cpu1 的信息。 
-d:顯示磁盤讀寫數據大小。
-D hda,total:include hda and total。 
-n:顯示網絡狀態。 
-N eth1,total:有多塊網卡時,指定要顯示的網卡。 
-l:顯示系統負載狀況。 
-m:顯示內存使用狀況。 
-g:顯示頁面使用狀況。 
-p:顯示進程狀態。 
-s:顯示交換分區使用狀況。 
-S:相似 D/N。 
-r:I/O 請求狀況。 
-y:系統狀態。 
--ipc:顯示 ipc 消息隊列,信號等信息。 
--socket:用來顯示 tcp udp 端口狀態。 
-a:此爲默認選項,等同於 - cdngy。 
-v:等同於 -pmgdsc -D total。 
--output 文件:此選項也比較有用,能夠把狀態信息以 csv 的格式重定向到指定的文件中,以便往後查看。例:dstat --output /root/dstat.csv & 此時讓程序默默的在後臺運行並把結果輸出到 / root/dstat.csv 文件中。

 

 

固然 dstat 還有不少更高級的用法,經常使用的基本這些選項,更高級的用法能夠結合 man 文檔。
 

 監測界面各參數含義 (部分) 

 

Procs

 

  • r: 運行的和等待 (CPU 時間片) 運行的進程數,這個值也能夠判斷是否須要增長 CPU(長期大於 1)

  • b: 處於不可中斷狀態的進程數,常見的狀況是由 IO 引發的

 

Memory

 

  • swpd: 切換到交換內存上的內存 (默認以 KB 爲單位)。若是 swpd 的值不爲 0,或者還比較大,好比超過 100M 了,可是 si, so 的值長期爲 0,這種狀況咱們能夠不用擔憂,不會影響系統性能。

  • free: 空閒的物理內存

  • buff: 做爲 buffer cache 的內存,對塊設備的讀寫進行緩衝

  • cache: 做爲 page cache 的內存, 文件系統的 cache。若是 cache 的值大的時候,說明 cache 住的文件數多,若是頻繁訪問到的文件都能被 cache 住,那麼磁盤的讀 IO bi 會很是小。

 

Swap

 

  • si: 交換內存使用,由磁盤調入內存

  • so: 交換內存使用,由內存調入磁盤

 

內存夠用的時候,這 2 個值都是 0,若是這 2 個值長期大於 0 時,系統性能會受到影響。磁盤 IO 和 CPU 資源都會被消耗。

 

我發現有些朋友看到空閒內存 (free) 不多或接近於 0 時,就認爲內存不夠用了,實際上不能光看這一點的,還要結合 si,so,若是 free 不多,可是 si,so 也不多 (大多時候是 0),那麼不用擔憂,系統性能這時不會受到影響的。

 

磁盤 IO

 

  • bi: 從塊設備讀入的數據總量 (讀磁盤) (KB/s)

  • bo: 寫入到塊設備的數據總理 (寫磁盤) (KB/s)

 

注: 隨機磁盤讀寫的時候,這 2 個 值越大(如超出 1M),能看到 CPU 在 IO 等待的值也會越大

 

System

 

  • in: 每秒產生的中斷次數

  • cs: 每秒產生的上下文切換次數

 

上面這 2 個值越大,會看到由內核消耗的 CPU 時間會越多

 

Cpu

 

  • usr: 用戶進程消耗的 CPU 時間百分比

 

us 的值比較高時,說明用戶進程消耗的 CPU 時間多,可是若是長期超過 50% 的使用,那麼咱們就該考慮優化程序算法或者進行加速了 (好比 PHP/Perl)

 

  • sys: 內核進程消耗的 CPU 時間百分比

 

sys 的值高時,說明系統內核消耗的 CPU 資源多,這並非良性的表現,咱們應該檢查緣由。

 

  • wai: IO 等待消耗的 CPU 時間百分比

 

wa 的值高時,說明 IO 等待比較嚴重,這多是因爲磁盤大量做隨機訪問形成,也有多是磁盤的帶寬出現瓶頸 (塊操做)。

 

  • idl: CPU 處在空閒狀態時間百分比

 

 實例

 

如想監控 swap,process,sockets,filesystem 並顯示監控的時間:

 

[root@iZ23uulau1tZ ~]# dstat -tsp --socket --fs
----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
date/time | used free|run blk new|tot tcp udp raw frg|files inodes 
26-07 09:23:48| 0 0 | 0 0 0.0|104 8 5 0 0| 704 6488 
26-07 09:23:49| 0 0 | 0 0 0|104 8 5 0 0| 704 6488 
26-07 09:23:50| 0 0 | 0 0 0|104 8 5 0 0| 704 6489 
26-07 09:23:51| 0 0 | 0 0 0|104 8 5 0 0| 704 6489 
26-07 09:23:52| 0 0 | 0 0 0|104 8 5 0 0| 704 6489 
26-07 09:23:53| 0 0 | 0 0 0|104 8 5 0 0| 704 6489

 

 

若要將結果輸出到文件能夠加 --output filename:

 

[root@iZ23uulau1tZ ~]# dstat -tsp --socket --fs --output /tmp/ds.csv 
----system---- ----swap--- ---procs--- ------sockets------ --filesystem- 
date/time | used free|run blk new|tot tcp udp raw frg|files inodes 
26-07 09:25:31| 0 0 | 0 0 0.0|104 8 5 0 0| 736 6493 
26-07 09:25:32| 0 0 | 0 0 0|104 8 5 0 0| 736 6493 
26-07 09:25:33| 0 0 | 0 0 0|104 8 5 0 0| 736 6493 
26-07 09:25:34| 0 0 | 0 0 0|104 8 5 0 0| 736 6493 
26-07 09:25:35| 0 0 | 0 0 0|104 8 5 0 0| 736 6494 
26-07 09:25:36| 0 0 | 0 0 0|104 8 5 0 0| 736 6494

 

這樣生成的 csv 文件能夠用 excel 打開,而後生成圖表。

 

經過 dstat --list 能夠查看 dstat 能使用的全部參數,其中上面 internal 是 dstat 自己自帶的一些監控參數,下面 /usr/share/dstat 中是 dstat 的插件,這些插件能夠擴展 dstat 的功能,如能夠監控電源(battery)、mysql 等。 

 

下面這些插件並非均可以直接使用的,有的還依賴其餘包,如想監控 mysql,必需要裝 python 鏈接 mysql 的一些包。
 

[root@iZ23uulau1tZ ~]# dstat --list 
internal: 
          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
/usr/share/dstat:
          battery, battery-remain, cpufreq, dbus, disk-util, fan, freespace, gpfs, gpfs-ops, helloworld, innodb-buffer, innodb-io, innodb-ops, lustre, memcache-hits, mysql-io, mysql-keys, mysql5-cmds, mysql5-conn, mysql5-io, mysql5-keys, net-packets, nfs3, nfs3-ops, nfsd3, nfsd3-ops, 
        ntp, postfix, power, proc-count, rpc, rpcd, sendmail, snooze, thermal, top-bio, top-cpu, top-cputime, top-cputime-avg, top-io, top-latency, top-latency-avg, top-mem, top-oom, utmp, 
        vm-memctl, vmk-hba, vmk-int, vmk-nic, vz-cpu, vz-io, vz-ubc, wifi
相關文章
相關標籤/搜索