dstat是個多功能系統資源統計生成工具, 包含 top、free、iostat、ifstat、vmstat等多個工具的功能, 統計結果還可以儲存到csv檔案或資料庫中 —— 是性能檢測的一大利器~
目錄
- 1 dstat工具的使用
- 1.1 什麼是dstat
- 1.2 dstat的基本使用
- 1.3 檢測界面各參數的含義
- 1.4 dstat 的進階用法
- 2 dstat工具的安裝
- 2.1 (推薦)通過yum安裝
- 2.2 (或)通過wget安裝
- 2.3 (或)使用rpm安裝
- 3 安裝中的常見問題
- 3.1 問題描述
- 3.2 問題解決
- 參考資料
- 版權聲明
官方定義: 多功能系統資源統計生成工具 ( versatile tool for generating system resource statistics), 可提供包含 top、free、iostat、ifstat、vmstat等多個工具的功能, 統計結果還可以儲存到 csv 檔案或資料庫中.
(1) dstat的預設選項:
預設會收集
-cpu-、-disk-、-net-、-paging-、-system-
的資料, 一秒鐘收集一次.
預設設定等同于:
dstat -cdngy 1
或
dstat -a 1
.
(2) dstat的常用選項:
使用
dstat -h
檢視全部選項, 這裡簡單介紹常用選項:
# 直接跟數字x, 表示x秒收集一次資料, 預設為一秒
-c, --cpu # 統計CPU狀态, 包括 user, system, idle(空閑等待時間百分比), wait(等待磁盤IO)等
-d, --disk # 統計磁盤讀寫狀态
-D total,sda # 統計指定磁盤或彙總資訊
-m, --mem # 統計系統實體記憶體使用情況, 包括used, buffers, cache, free
-l, --load # 統計系統負載情況, 包括1分鐘、5分鐘、15分鐘平均值
-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
----system---- # 系統時間資訊
---procs--- # 程序數統計
run: 運作中的和等待(CPU時間片)運作的程序數 --- 此值若長期大于1, 可考慮增加CPU
blk: 處于不可中斷狀态的程序數, 多由 IO 引發
new: 系統核心程序消耗的CPU時間百分比, 若值太高, 說明系統可能出現故障, 需檢查排除
----total-cpu-usage---- # CPU使用率
usr: 使用者程序消耗的CPU時間百分比
sys: 系統核心程序消耗的CPU時間百分比, 若值太高, 說明系統可能出現故障, 需要檢查
idl: CPU處在空閑狀态的時間百分比
wai: 等待磁盤I/O所消耗的CPU時間百分比, 值越高, 說明IO等待嚴重, 可能是磁盤大量随機通路造成, 也可能是磁盤的帶塊出現瓶頸(塊操作)
hiq: hardware interrupt, 硬體中斷次數
siq: software interrupt, 軟體中斷次數
-----memory-usage----- # 記憶體使用率
used: 目前已使用的記憶體
buff: 作為buffer cache的記憶體, 對塊裝置的讀寫進行緩沖
cache: 作為page cache的記憶體, 檔案系統的cache. cache越大, 說明cache中的檔案數多.
# 如果頻繁通路到的檔案都能被載入cache, 那麼磁盤的讀IO将會顯著降低
free: 空閑的實體記憶體
---io/total--- # 磁盤IO統計
read: 從塊裝置讀入的資料總量(讀磁盤)(機關: KB/s)
writ: 寫入到塊裝置的資料總量(寫磁盤)(機關: KB/s)
# 注: 随機磁盤讀寫時, 這兩個參數的值越大(如超出1M), CPU消耗在IO等待的時間就越長
-dsk/total- # 磁盤統計
read: 讀總數
writ: 寫總數
-net/total- # 網絡統計
recv: 網絡收包總數
send: 網絡發包總數
---paging--- # 記憶體分頁統計
in: page in(換入)
out: page out(換出)
# 注: 系統的分頁活動, 是一種記憶體管理技術用于查找系統場景, 較大的分頁表明系統正在使用大量的交換空間.
# 通常當系統開始用交換空間時, 說明記憶體已經不夠用, 或者記憶體非常分散.
# 理想情況下page in(換入)和page out(換出)的值是0 0.
---load-avg--- # 系統平均負載
# 分别對應系統目前1分鐘、5分鐘、15分鐘内的平均load, 用于反映目前系統的負載情況.
(1) 找出占用資源最高的程序和使用者:
用法:
--top-(io|bio|cpu|cputime|cputime-avg|mem)
通過上述指令, 可以檢視占用相關系統資源的具體使用者及其程序.
示例: 檢視目前占用IO、CPU、記憶體最高的程序資訊的指令:
dstat --top-io --top-mem --top-cpu
(2) 擷取其他應用資訊:
dstat 還可擷取其他應用資訊. 如:
dstat --postfix # 顯示postfix隊列大小
dstat --sendmail # 顯示sendmail隊列大小
dstat --ntp # 顯示ntp伺服器時間
推薦, 不用配置其他環境, 就可以在任一路徑下使用:
yum -y install dstat
首先安裝 wget 工具:
yum -y install wget
然後安裝 dstat 工具:
wget http://dstat.sourcearchive.com/downloads/0.7.0/dstat_0.7.0.orig.tar.gz
# 解壓, 然後進入解壓後的目錄:
tar -xvzf dstat_0.7.0.orig.tar.gz
cd dstat-0.7.0.orig/
# 使用以下方式即可使用dstat
./dstat -V
wget http://mirror.centos.org/centos/6/os/i386/Packages/dstat-0.7.0-2.el6.noarch.rpm
rpm -ivh dstat-0.7.0-2.el6.noarch.rpm
# 直接在系統中調用dstat即可
dstat -V
在CentOS 6.5系統中, 準備使用 yum 或 wget 指令安裝 dstat 工具, 發現兩者都不可用:
- yum 指令出錯:
Loaded plugins: fastestmirror Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was 14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'" Error: Cannot find a valid baseurl for repo: base
- wget 指令出錯:
-bash: wget: command not found
搜尋一圈後, 發現問題在于伺服器未能成功連接配接外網, 檢測方法: 在指令行中如下測試:
ping www.baidu.com
# 發現找不到 www.baidu.com 主機, 說明未連接配接到網際網路.
(1) 網上的一種解決方法:
① 使用root登陸;
② 輸入:
vi /etc/systemconfig/network-scripts/ifcfg-eth0
;
③ 在此檔案中加入
DNS1=8.8.8.8
④ 然後儲存;
⑤ 輸入指令重新開機網絡服務:
⑥ 輸入指令繼續下載下傳安裝:
service network restart
yum install gcc
在部落客的伺服器上并未找到
systemconfig
目錄, 當然也沒找到
ifcfg-eth0
檔案. . .
(2) 最後的解決方法:
# 編輯/etc/resolv.conf檔案:
vi /etc/resolv.conf
# 向其中添加:
nameserver 8.8.8.8
# 儲存退出即可
此時
ping www.baidu.com
, 發現可以ping通 —— 問題解決.
全能系統監控工具dstat
作者: 馬瘦風
出處: 部落格園 馬瘦風的部落格
您的支援是對部落客的極大鼓勵, 感謝您的閱讀.
本文版權歸部落客所有, 歡迎轉載, 但請保留此段聲明, 并在文章頁面明顯位置給出原文連結, 否則部落客保留追究相關人員法律責任的權利.