Linux 終端下全能系統監控工具 dstat
來自 | Linux 命令大全
原文 |
http://man.linuxde.net/dstat
dstat 命令
是一個用來替換vmstat
、iostat
、netstat
、nfsstat
和ifstat
這些命令的工具,是一個全能系統信息統計工具。與 sysstat 相比,dstat 擁有一個彩色的界面,在手動觀察性能狀況時,數據比較顯眼容易觀察;而且 dstat 支持即時刷新,譬如輸入
dstat 3
即每三秒收集一次,但最新的數據都會每秒刷新顯示。和 sysstat 相同的是,dstat 也可以收集指定的性能資源,譬如dstat -c
即顯示 CPU 的使用情況。 下載安裝
方法一
yum install
方法二 官網下載地址:
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
使用說明
安裝完後就可以使用了,dstat 非常強大,可以實時的監控 cpu、磁碟、網路、IO、內存等使用情況。
直接使用 dstat,默認使用的是
-cdngy
參數,分別顯示 cpu、disk、net、page、system 信息,默認是 1s 顯示一條信息。可以在最後指定顯示一條信息的時間間隔,如dstat 5
是沒 5s 顯示一條,
dstat 5 10
表示沒 5s 顯示一條,一共顯示 10 條。[root@iZ23uulau1tZ ~] # dstat | read writ| | in
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq
int csw
0
0
99
0
0
0
|7706B 164k|
0
0
| 0 0 |
189
225
0
0
100
0
0
0
| 0 0 |
4436
B826
B| 0 0 |
195
248
1
0
99
0
0
0
| 0 0 |
4744
B346
B| 0 0 |
203
242
0
0
100
0
0
0
| 0 0 |
5080
B346
B| 0 0 |
206
242
0
1
99
0
0
0
| 0 0 |
5458
B444
B| 0 0 |
214
244
1
0
99
0
0
0
| 0 0 |
5080
B346
B| 0 0 |
208
242
下面對顯示出來的部分信息作一些說明:
cpu:hiq、siq 分別為硬中斷和軟中斷次數。
system:int、csw 分別為系統的中斷次數(interrupt)和上下文切換(context switch)。
其他的都很好理解。
語法
dstat [-afv] [options..] [delay [count]
常用選項
-c:顯示 CPU 系統佔用,用戶佔用,空閑,等待,中斷,軟體中斷等信息。 --ipc:顯示 ipc 消息隊列,信號等信息。 --socket:用來顯示 tcp udp 埠狀態。 --output 文件:此選項也比較有用,可以把狀態信息以 csv 的格式重定向到指定的文件中,以便日後查看。例:dstat --output /root/dstat.csv & 此時讓程序默默的在後台運行並把結果輸出到 / root/dstat.csv 文件中。
-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:系統狀態。
-a:此為默認選項,等同於 - cdngy。
-v:等同於 -pmgdsc -D total。
當然 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 | used free| |tot tcp udp raw frg| 26 07 : 23 : 48 | 0 0 | 0 0 0 0 |104 8 5 0 0| 704 6488 26 07 : 23 : 49 | 0 0 | 0 0 0 |104 8 5 0 0| 704 6488 26 07 : 23 : 50 | 0 0 | 0 0 0 |104 8 5 0 0| 704 6489 26 07 : 23 : 51 | 0 0 | 0 0 0 |104 8 5 0 0| 704 6489 26 07 : 23 : 52 | 0 0 | 0 0 0 |104 8 5 0 0| 704 6489 26 07 : 23 : 53 | 0 0 | 0 0 0 |104 8 5 0 0| 704 6489
----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
date/time
若要將結果輸出到文件可以加
--output filename
:[root@iZ23uulau1tZ ~] # dstat -tsp --socket --fs --output /tmp/ds.csv | used free| |tot tcp udp raw frg| 26 07 : 25 : 31 | 0 0 | 0 0 0 0 |104 8 5 0 0| 736 6493 26 07 : 25 : 32 | 0 0 | 0 0 0 |104 8 5 0 0| 736 6493 26 07 : 25 : 33 | 0 0 | 0 0 0 |104 8 5 0 0| 736 6493 26 07 : 25 : 34 | 0 0 | 0 0 0 |104 8 5 0 0| 736 6493 26 07 : 25 : 35 | 0 0 | 0 0 0 |104 8 5 0 0| 736 6494 26 07 : 25 : 36 | 0 0 | 0 0 0 |104 8 5 0 0| 736 6494
----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
date/time
這樣生成的 csv 文件可以用 excel 打開,然後生成圖表。
通過
dstat --list
可以查看 dstat 能使用的所有參數,其中上面 internal 是 dstat 本身自帶的一些監控參數,下面/usr/share/dstat
中是 dstat 的插件,這些插件可以擴展 dstat 的功能,如可以監控電源(battery)、mysql 等。下面這些插件並不是都可以直接使用的,有的還依賴其他包,如想監控 mysql,必須要裝 python 連接 mysql 的一些包。
[root@iZ23uulau1tZ ~]# dstat -- list l: int vm t: buffer keys keys count vm int
interna
aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs,
/usr/share/dsta
battery, battery-remain, cpufreq, dbus, disk-util, fan, freespace, gpfs, gpfs-ops, helloworld, innodb-
ntp, postfix, power, proc-
dstat 命令的基本用法就說到這裡,更多用法有待摸索,如果您需要補充內容在後台留言,謝謝!
●編號
484
,輸入編號直達本文●輸入m獲取文章
目錄
推薦↓↓↓
Python編程
更多推薦
《
18個技術類微信公眾號
》
涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。
※2018 年 2 月份 GitHub 上最熱門的開源項目
※Docker 從入門到實踐
TAG:Linux學習 |