全能系统监控工具dstat
一、什么是dstat?
通過man幫助,可以看到官方對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文件,使用腳本或第三方工具對性能進行分析利用(如通過監控平臺監控,也可以保持到數據庫)。在Centos 6.x系統上安裝基本服務器即默認安裝,而在其他操作系統可能需要手動安裝。
二、dstat的基本使用:
2.1 dstat的默認選項
與許多命令一樣,dstat命令有默認選項,執行dstat命令不加任何參數,它默認會收集-cpu-、-disk-、-net-、-paging-、-system-的數據,一秒鐘收集一次。?默認輸入 dstat 等于輸入了dstat -cdngy 1或dstat -a 1。
2.2 dstat的常用選項:
dstat的用法如下:
dstat [-afv] [options..] [delay [count]]
?
使用 dstat -h查看全部選項,這里不逐一列舉,下面簡單介紹下常用選項
常用選項如下:
# 直接跟數字,表示#秒收集一次數據,默認為一秒;dstat 5表示5秒更新一次
-c,--cpu ? 統計CPU狀態,包括 user,?system, idle(空閑等待時間百分比), wait(等待磁盤IO), hardware interrupt(硬件中斷), software interrupt(軟件中斷)等;
-d, --disk 統計磁盤讀寫狀態
-D total,sda 統計指定磁盤或匯總信息
-l, --load 統計系統負載情況,包括1分鐘、5分鐘、15分鐘平均值
-m, --mem 統計系統物理內存使用情況,包括used, buffers, cache, free
-s, --swap 統計swap已使用和剩余量
-n, --net 統計網絡使用情況,包括接收和發送數據
-N eth1,total ?統計eth1接口匯總流量
-r, --io 統計I/O請求,包括讀寫請求
-p, --proc 統計進程信息,包括runnable、uninterruptible、new
-y, --sys 統計系統信息,包括中斷、上下文切換
-t 顯示統計時時間,對分析歷史數據非常有用
--fs 統計文件打開數和inodes數
以上這些就是最常用的選項,而一般都組合使用,個人比較常用的是:
-
dstat -cmsdnl -D sda9 -N lo,etho 100 5
三、監測界面各參數含義(部分)
?
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處在空閑狀態時間百分比
四、dstat的高級用法
dstat的功能非常強大,除了上述常用用法外,還有一些大家不常用的高級用法,如下:
3.1 找出占用資源最高的進程和用戶
--top-(io|bio|cpu|cputime|cputime-avg|mem) 通過這幾個選項,可以看到具體是那個用戶那個進程占用了相關系統資源,對系統調優非常有效。如查看當前占用I/O、cpu、內存等最高的進程信息可以使用dstat --top-mem --top-io --top-cpu:
3.2 獲取其他應用信息:
dstat除了可以獲取系統關鍵信息外,還可以獲取其他應用信息,如通過下列選項,可以獲取到其他一些常用應用信息:
--postfix 顯示postfix隊列大小
--sendmail 顯示sendmail隊列大小
--ntp 顯示ntp服務器時間
--nfs3 獲取nfs客戶端信息
--nfsd3 獲取nfs服務器信息,不過nfs服務器版本需為第三版才可以,該選項還有更多用法,可以參考man幫助獲取
--mysql5-(cmds|conn|io|keys ) 獲取mysql5相關信息
本文轉自 知止內明 51CTO博客,原文鏈接:http://blog.51cto.com/357712148/1961204,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的全能系统监控工具dstat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 畅想来自未来的便携扫描仪
- 下一篇: java信息管理系统总结_java实现科