🐧 Linux 效能監控工具大全:top、htop、glances、nmon、dstat 深度比較與實務指南
在管理 Linux 伺服器時,「不是等系統慢下來才看監控」,而是要有一套
隨手可用、可重複操作、能留下紀錄 的監控與診斷流程。
本文整理五個最常見的 CLI / TUI 工具:top、htop、glances、nmon、dstat,
從安裝、操作介面、輸出方式到實戰情境,幫你建立一套實際用得到的 Linux 效能監控工具箱。
📑 目錄
- 一、為什麼需要多種監控工具?
- 二、top/htop/glances/nmon/dstat 快速總覽
- 三、top:每台 Linux 都內建的基礎監控工具
- 四、htop:互動式介面與樹狀行程視圖
- 五、glances:一頁看完全機資源的即時儀表板
- 六、nmon:專為效能分析與歷史報表而生
- 七、dstat:用一條命令整合 vmstat / iostat / ifstat
- 八、工具比較表:不同情境如何選擇?
- 九、實戰情境示範:CPU 爆滿、I/O 慢、記憶體爆的排查流程
- 十、常見問題 FAQ(搭配 JSON-LD)
- 🧭 行動清單:如何在你的環境落地這套監控組合?
- 🔗 延伸閱讀
一、為什麼需要多種監控工具?
許多維運人員只在系統「出事當下」才匆忙開 top 看一眼,但這樣做往往只看到 一瞬間的快照,不容易掌握問題演變過程。實務上,我們會同時需要:
- 即時狀況:現在 CPU、RAM、I/O、Network 使用率如何?有沒有明顯異常?
- 行程關聯:是哪一個 process 或某一群 service 把資源吃光?
- 歷史痕跡:昨天晚上 3 點那一波尖峰,當時的 CPU / I/O 到底長什麼樣?
- 可視化與報表:有沒有可以拿給主管、客戶或團隊討論的圖表或紀錄?
因此,一套好用的 Linux 監控組合,通常會同時包含: 1~2 個即時排錯工具 + 1 個長期紀錄工具 + 1 套集中式監控平台。 本文聚焦在前兩者:讓你在任何一台 Linux 只要連上終端機,就能立刻開始分析。
二、top/htop/glances/nmon/dstat 快速總覽
先用一張簡表快速對齊五個工具的大致定位:
| 工具 | 主要用途定位 | 介面類型 | 優點 | 較不適合的情境 |
|---|---|---|---|---|
top |
最基礎的即時行程與 CPU/記憶體監控 | 純 CLI 文字 | 任何 Linux 幾乎都有、學習成本低 | 互動性較差、資訊分散、無歷史紀錄 |
htop |
互動式行程瀏覽與排序、手動排錯 | TUI 彩色介面 | 可以滑動、篩選、殺行程、樹狀顯示 | 不做長期紀錄,主要還是「當下」查看 |
glances |
整機資源總覽儀表板,含 Web/Client 模式 | TUI + Web | 一頁看完所有資源,可遠端與 API 整合 | 比 top/htop 稍重,部署上多一步安裝 |
nmon |
效能分析與 CSV 匯出,適合後續畫圖 | TUI + 檔案輸出 | 輸出格式友善,可搭配 Excel/Grafana | 互動性略低,初學者較不直覺 |
dstat |
整合 vmstat/iostat/ifstat 的即時統合監控 | CLI 文字 | 一條命令看到多種資源,適合腳本整合 | 畫面不如 htop/glances 直覺,偏向熟手 |
接下來我們依序介紹每個工具的:安裝方式、核心操作、常用參數、實戰技巧, 最後再給出實際情境流程與推薦組合。
三、top:每台 Linux 都內建的基礎監控工具
top 幾乎是所有維運人員最早接觸到的監控工具,它最大的優點就是:
到任何一台主機都能直接敲,不用額外安裝。預設會顯示:
- Load Average(系統負載)
- CPU 使用率(user / system / iowait / idle 等)
- 記憶體與 Swap 使用量
- 行程列表:PID、使用者、CPU%、MEM%、執行時間、指令等
1. 基本使用與常用參數
# 直接執行
top
# 以 CPU 使用率排序(預設)
top -o %CPU
# 以記憶體使用率排序
top -o %MEM
# 只顯示某個使用者的行程
top -u someuser
2. top 操作熱鍵(互動時常用)
P:依 CPU 使用率降冪排序M:依記憶體使用率排序1:切換顯示每顆 CPU core 的使用狀況h:顯示說明k:輸入 PID,送出 kill 訊號q:離開 top
3. 何時適合用 top?
- 你剛登入一台不熟的 Linux:想快速看一下「現在是不是很忙」。
- 資源異常時,先用 top 判斷是 CPU 還是記憶體問題。
- 需要在非常精簡的環境(rescue mode、最小安裝)中查看狀態。
四、htop:互動式介面與樹狀行程視圖
htop 可以看成是 top 的「進化版」,提供:
- 彩色的 CPU / RAM / Swap 條狀圖。
- 可滑動的行程列表,支援滑鼠操作。
- 樹狀視圖(Tree view):可以看出父子行程之間的關係。
- 更好用的搜尋、篩選與 kill 行程功能。
1. 安裝方式
# Debian / Ubuntu
sudo apt update
sudo apt install htop
# CentOS / RHEL / Rocky / AlmaLinux
sudo yum install htop
# 或
sudo dnf install htop
2. 基本操作與實用功能
# 執行
htop
- 方向鍵 / PageUp / PageDown:在行程列表中移動。
F3:搜尋 process 名稱。F4:篩選,只顯示符合條件的行程。F5:切換樹狀視圖(Tree)。F6:選擇排序欄位(CPU%、MEM%、TIME+ 等)。F9:kill 行程,可挑選 signal(TERM / KILL)。
3. 使用 htop 排查問題的典型流程
- 先看上方 CPU / MEM 條狀圖:資源是不是爆掉。
- 按
F6切換排序:先看 CPU%,再切到 MEM%。 - 按
F5看樹狀視圖:找出是否某個 service fork 出大量子行程。 - 點選(或用方向鍵選到)可疑行程,再用
F9送出適當 signal。
對日常維運來說,htop 是非常推薦預設安裝的工具,在需要互動式排錯時會比 top 舒服很多。
五、glances:一頁看完全機資源的即時儀表板
glances 可以想成「放在終端機裡的小型監控儀表板」,除了在本機跑之外,
還支援 client/server 模式、Web UI、匯出到 InfluxDB 等後端。
適合你想:
- 不用架一整套 Prometheus/Grafana,又想在多台主機上集中監視。
- 在遠端以瀏覽器或一個 glances client 就看到所有主機狀況。
1. 安裝方式
# 使用套件管理(版本可能略舊)
sudo apt install glances # Debian / Ubuntu
sudo yum install glances # CentOS / RHEL
# 建議使用 pip 安裝較新版本
sudo pip3 install glances
2. 基本使用
# 在本機終端機直接使用
glances
# 以 Web mode 在背景啟動(預設 port 61208)
glances -w
# 啟動為 server(供其他 glances client 連線)
glances -s
# 從 client 連線到遠端 glances server
glances -c 10.0.0.10
3. 介面重點與常用區塊
- 上方:CPU、Load、記憶體、Swap、溫度等總覽。
- 中間:行程列表(可排序、篩選)。
- 下方:網路、磁碟 I/O、檔案系統使用率、Docker 等資訊。
glances 很適合放在一個「監控跳板機」上,或在本機開 Web mode,讓你用瀏覽器開著一個儀表板, 隨時注意各台主機的健康狀態。
六、nmon:專為效能分析與歷史報表而生
nmon 的設計初衷,就是幫你收集系統效能數據並匯出,之後再透過
Excel、R、Grafana 或專門的視覺化工具 進行分析與報表呈現。
1. 安裝方式
# Debian / Ubuntu
sudo apt install nmon
# CentOS / RHEL / Rocky / AlmaLinux
sudo yum install nmon
# 或
sudo dnf install nmon
2. 基本介面操作
# 執行互動式介面
nmon
c:CPU 資訊。m:記憶體資訊。d:磁碟使用與 I/O。n:網路介面與流量。t:Top process。q:離開。
3. 收集效能紀錄到檔案
nmon 真正強大的地方在於「非互動模式」,可以定期收集資料:
# 每 10 秒收集一次,總共收集 360 次(約 1 小時)
nmon -f -s 10 -c 360
# 會產生類似:hostname_YYYYMMDD_HHMM.nmon 的檔案
生成的 .nmon 檔案可以丟到各種 nmon 分析工具中,轉成圖表與報表,
很適合用來做容量規劃、壓力測試後的分析、或提供給客戶/主管作為佐證資料。
七、dstat:用一條命令整合 vmstat / iostat / ifstat
dstat 是一套「整合型」的監控工具,取代多種舊工具,讓你用 一條命令
就能同時看到 CPU、記憶體、磁碟、網路等資訊,非常適合在
排錯腳本、臨場分析 中快速收集資料。
1. 安裝方式
# Debian / Ubuntu
sudo apt install dstat
# CentOS / RHEL 可能需啟用 EPEL
sudo yum install epel-release
sudo yum install dstat
2. 常見用法範例
# 最常見的基本用法:每秒更新一次
dstat
# 顯示 CPU、記憶體、磁碟、網路
dstat -cmdn
# 額外加上 I/O 等待、系統呼叫等
dstat -tcmndy
# 將結果輸出到 CSV,方便後續畫圖
dstat -tcmnd --output stats.csv
dstat 的優勢在於輸出格式「機器友善」,你可以很容易用腳本去解析、存檔, 甚至自動轉成其他監控系統的輸入。
八、工具比較表:不同情境如何選擇?
下面這張表可以當作「實戰選擇指南」,當你遇到不同情境時,可以優先考慮的工具:
| 情境 | 優先工具 | 輔助工具 | 說明 |
|---|---|---|---|
| 剛登入陌生主機,想快速瞄一下狀態 | top |
htop(若有裝) |
top 任何地方都有;若 htop 存在則可快速切換使用。 |
| 需要互動式查找問題行程、kill 服務 | htop |
top |
htop 的樹狀視圖與搜尋/篩選功能非常適合手動排錯。 |
| 想要一個「整機儀表板」,遠端持續觀看 | glances |
Prometheus / Grafana | glances 可 Web / client-server 模式;若要長期統計再接 metrics 系統。 |
| 壓力測試、容量規劃,之後要做報表 | nmon |
dstat |
nmon 可輸出 .nmon 檔案後續視覺化;dstat 則適合搭配腳本自動收集。 |
| 想在腳本裡收集 CPU / I/O / 網路指標 | dstat |
vmstat / iostat / sar | dstat 輸出友善、彈性高,適合一行指令看多種資源。 |
九、實戰情境示範:CPU 爆滿、I/O 慢、記憶體爆的排查流程
情境一:CPU 使用率 100%,系統明顯變慢
- 先用
top或htop看是哪一個 process 把 CPU 吃滿。 - 按
1(top)或觀察 CPU 條(htop),確認是單 core 爆還是全部 core 爆。 -
若是單一服務(例如某支 Python / PHP 程式):
- 先觀察一段時間,確認是不是短暫尖峰。
- 必要時以
htop選取該行程,用F9適度送出 TERM 或 KILL。
- 長期來看,可以搭配 nmon / dstat 收集 CPU 使用率,找出尖峰時段與模式。
情境二:磁碟 I/O 異常,服務反應變得卡頓
- 先用
dstat -tcmnd,觀察 磁碟 I/O 欄位 是否非常高。 - 搭配
iostat -x 1(若有)看每顆磁碟的 await / svctm / %util。 - 用
htop或glances查找大量做 I/O 的 process。 - 必要時用 nmon 記錄一段時間的 I/O 資料,之後做更細緻的分析與報表。
情境三:記憶體吃滿、開始大量 Swap,服務延遲急遽上升
- 用
htop或top看 RES / VIRT / SHR 欄位,找出特別肥的 process。 - 在 htop 以記憶體排序(
F6→ 選 MEM%)找出 top N 的大戶。 - 短期可以降級部分服務、調整 cache 設定或重啟異常程式。
- 中長期則需要調整服務架構(分散到多台機器)、或升級記憶體容量。
你可以將這些流程寫成簡單的「值班手冊」,搭配指令範例,讓團隊裡的每個人遇到問題時都能用同樣的方法排查,減少臨場慌亂與溝通成本。
十、常見問題 FAQ(與上方 JSON-LD 對應)
Q1. 我已經會用 top,還有必要學 htop 或 glances 嗎?
很值得學。top 雖然隨處可用,但在排錯時,互動式介面的效率差很多。 htop 可以讓你用滑鼠、方向鍵快速移動、篩選和殺行程; glances 則提供「儀表板」式的全機視圖,還能透過 Web 和 client/server 模式集中查看多台主機。
Q2. 要長期保存效能數據,應該選 nmon 還是 dstat?
如果你的目標是做 壓力測試報表、容量規劃簡報,nmon 的 CSV / nmon 檔案輸出會很方便;
若你想在腳本中快速記錄某段時間的 CPU / I/O / 網路,就可以用 dstat 搭配
--output 匯出結果,之後再用任何你喜歡的工具畫圖或整理。
Q3. 這些工具會不會反過來拖慢系統?
在一般情況下,它們的負擔相對輕量,只要不要用太短的更新間隔(例如 0.1 秒)掛著一整天, 影響通常可以忽略不計。在資源非常吃緊的環境裡,建議:
- 減少執行時間,例如只在排錯期間啟動。
- 調整更新頻率(例如每 2~5 秒更新一次)。
- 重要服務上更多依靠 agents 與集中監控(Prometheus / node_exporter 等)。
Q4. 日常維運你會推薦的組合是什麼?
一種常見而實用的組合是:
- 日常即時排錯:htop + glances
- 收集歷史數據:nmon 或 dstat
- 長期監控與告警:集中式監控(Prometheus + Grafana 等)
如此一來,本文介紹的工具可以專注在「即時排錯」與「單機深入診斷」,而長期趨勢與告警交給專門的監控平台處理。
🧭 行動清單:如何在你的環境落地這套監控組合?
✅ 在所有 Linux 伺服器上安裝 htop、dstat
✅ 選一台管理跳板機,部署 glances(含 Web mode)
✅ 為壓力測試與容量規劃主機安裝 nmon,建立固定收集腳本
✅ 寫一份「值班排錯手冊」,搭配本文的情境流程與指令範例
✅ 日後考慮導入 Prometheus + Grafana,將部分指標接軌集中監控
💬 一起聊聊你的 Linux 監控習慣
你在實務上最常用哪一套工具?有沒有踩過什麼與效能監控相關的坑?
歡迎在下方留言分享你的經驗,或是想看的其他 Linux 監控主題(例如 sar、collectl、Prometheus node_exporter 等),
也可以寫在留言裡,我會再整理成後續文章 🙌
🔗 延伸閱讀
- 🐧 Linux 安全加固完整指南:SELinux、AppArmor、auditd、Fail2Ban 一次搞懂
- 🐧 Linux Logrotate 進階攻略:服務日誌分割、壓縮、輪替與常見錯誤排查
- 🐧 Linux systemd 與 Log 管理整合:服務啟動、journalctl 與輪替策略
- 🐧 Linux 伺服器從安裝到加固:使用者、權限、服務與防火牆一次到位
- 🐧 更多 Linux 系列文章整理
— WWFandy・Linux 效能監控筆記
沒有留言: