dstat 是一款功能強大且靈活的系統資源監控工具,它結合了 vmstat、iostat、netstat、ifstat 等工具的功能,並提供了更直觀的彩色輸出、模組化插件架構以及 CSV 導出功能。本文將詳細介紹 dstat 在主流 Linux 發行版上的安裝方法、基本使用技巧、常用參數組合以及進階插件應用,幫助運維人員快速掌握系統效能狀態。
| 發行版系列 | 安裝指令 | 備註 |
|---|---|---|
| Debian / Ubuntu / Linux Mint | sudo apt-get update && sudo apt-get install dstat | 官方倉庫預載 |
| RHEL / CentOS / Fedora / Rocky / AlmaLinux | sudo yum install epel-release && sudo yum install dstat | 需啟用 EPEL 倉庫 |
| Arch Linux / Manjaro | sudo pacman -S dstat | 社群倉庫 |
| openSUSE | sudo zypper install dstat | 官方倉庫 |
直接執行 dstat 即可進入即時監控模式,按 Ctrl+C 退出。
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
1 0 99 0 0 0| 0 0 | 1k 1k | 0 0 | 187 324
0 0 100 0 0 0| 0 0 | 0 0 | 0 0 | 178 310
欄位含義:
wai 持續偏高提示磁碟瓶頸。提示:第一行為開機以來平均值,參考意義較小;重點關注後續每間隔的增量行。
| 參數 | 功能 | 範例 |
|---|---|---|
-c / -C | CPU 總覽 / 各核心細節 | dstat -c、dstat -C 0,1,total |
-d / -D | 磁碟總覽 / 指定設備細節 | dstat -d、dstat -D sda,sdb |
-m / -M | 記憶體總覽 / NUMA 節點細節 | dstat -m |
-n / -N | 網路總覽 / 指定介面細節 | dstat -n、dstat -N eth0,eth1 |
-s | Swap 使用情況 | dstat -s |
-r | I/O 統計 (讀寫請求數) | dstat -r |
-l | 負載統計 (1/5/15 分鐘) | dstat -l |
-t | 顯示時間戳 | dstat -t |
--fs | 檔案系統統計 (inode、檔案數) | dstat --fs |
--socket / --tcp / --udp | Socket/TCP/UDP 統計 | dstat --tcp |
--nocolor | 關閉彩色 (適合重導向/記錄) | dstat --nocolor |
--output file.csv | 導出 CSV 格式 | dstat --output /tmp/dstat.csv -cdn 2 10 |
/usr/share/dstat/)啟用插件只需加上長選項名:
| 插件 | 功能 | 適用場景 |
|---|---|---|
--disk-util | 顯示各磁碟忙碌百分比 | 定位 IO 瓶頸磁碟 |
--freespace | 顯示掛載點剩餘空間 | 容量規劃監控 |
--proc-count | 顯示進程總數 | 進程洩漏偵測 |
--top-cpu | 顯示佔用 CPU 最高的進程 | 定位 CPU 熱點進程 |
--top-mem | 顯示佔用記憶體最高的進程 | 定位記憶體洩漏 |
--top-io | 顯示正常 IO 最大的進程 | 定位 IO 密集進程 |
--top-bio | 顯示區塊 IO 最大的進程 | 定位區塊層瓶頸 |
# 1. 綜合系統健康檢查 (含時間戳,每 2 秒)
dstat -t -c -m -d -n -s -l --proc-count 2
# 2. 定位 CPU 熱點進程並記錄 CSV
dstat -c -l --proc-count --top-cpu -t --output cpu_hotspot.csv 5 60
# 3. 記憶體壓力分析
dstat -g -l -m -s --top-mem
# 4. 磁碟 IO 深度分析
dstat -d -D sda,sdb --disk-util --top-io --top-bio
# 5. 網路流量異常排查
dstat -n -N eth0 --socket --tcp --udp
# 導出 10 分鐘資料 (間隔 5 秒,共 120 筆)
dstat --output /var/log/dstat_$(date +%F_%H-%M).csv -t -c -m -d -n -s -l 5 120
導入 Excel / LibreOffice Calc / Python Pandas:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('dstat_2023-10-15_14-30.csv', skiprows=6) # 跳過標題行
df['cpu_usr'].plot(title='CPU User% Over Time')
plt.show()
dstat 以「一條指令、全維度、可擴展、可導出」的特性,成為 Linux 運維人員桌面級、臨時性效能診斷的首選工具。掌握 -c -d -m -n -s -l 核心子系統與 --top-* 進程定位插件,即可覆蓋 90% 以上的線上排障場景。對於長期監控告警,建議搭配 Prometheus + Node Exporter + Grafana 體系。