萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統監控新選擇:dstat 安裝與核心功能使用詳解

dstat 是一款功能強大且靈活的系統資源監控工具,它結合了 vmstat、iostat、netstat、ifstat 等工具的功能,並提供了更直觀的彩色輸出、模組化插件架構以及 CSV 導出功能。本文將詳細介紹 dstat 在主流 Linux 發行版上的安裝方法、基本使用技巧、常用參數組合以及進階插件應用,幫助運維人員快速掌握系統效能狀態。

一、 dstat 的核心特性

  • 整合性強:一條指令同時顯示 CPU、記憶體、磁碟 I/O、網路流量、分頁活動、系統中斷與上下文切換等關鍵指標。
  • 即時顯示:預設每秒刷新,支援自定義間隔與取樣次數。
  • 模組化設計:基於 Python 開發,易於擴展自定義插件。
  • 輸出友善:彩色欄位、單位自動換算、支援 CSV 格式導出便於後續分析繪圖。
  • 準確計時:高負載下也能保持精準的取樣間隔。

二、 跨發行版安裝方法

發行版系列安裝指令備註
Debian / Ubuntu / Linux Mintsudo apt-get update && sudo apt-get install dstat官方倉庫預載
RHEL / CentOS / Fedora / Rocky / AlmaLinuxsudo yum install epel-release && sudo yum install dstat需啟用 EPEL 倉庫
Arch Linux / Manjarosudo pacman -S dstat社群倉庫
openSUSEsudo 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

欄位含義:

  • CPU:usr(用戶態)、sys(核心態)、idl(閒置)、wai(IO 等待)、hiq(硬中斷)、siq(軟中斷)。wai 持續偏高提示磁碟瓶頸。
  • Disk:read/writ (KB/s),所有區塊設備聚合。
  • Net:recv/send (KB/s),所有網路介面聚合。
  • Paging:in/out (分頁換入/出),非零通常意味著記憶體壓力。
  • System:int(中斷/秒)、csw(上下文切換/秒),數值過高提示進程調度壓力大。

提示:第一行為開機以來平均值,參考意義較小;重點關注後續每間隔的增量行。

四、 常用參數組合速查表

參數功能範例
-c / -CCPU 總覽 / 各核心細節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
-sSwap 使用情況dstat -s
-rI/O 統計 (讀寫請求數)dstat -r
-l負載統計 (1/5/15 分鐘)dstat -l
-t顯示時間戳dstat -t
--fs檔案系統統計 (inode、檔案數)dstat --fs
--socket / --tcp / --udpSocket/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

六、 CSV 導出與視覺化分析


# 導出 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 體系。

copyright © 萬盛學電腦網 all rights reserved