熱門分類
載入中…
目錄0%

🐧 Linux 效能監控工具大全:top、htop、glances、nmon、dstat 深度比較與實務指南

    🐧 Linux 效能監控工具大全:top、htop、glances、nmon、dstat 深度比較與實務指南

    在管理 Linux 伺服器時,「不是等系統慢下來才看監控」,而是要有一套 隨手可用、可重複操作、能留下紀錄 的監控與診斷流程。
    本文整理五個最常見的 CLI / TUI 工具:top、htop、glances、nmon、dstat, 從安裝、操作介面、輸出方式到實戰情境,幫你建立一套實際用得到的 Linux 效能監控工具箱。

    📑 目錄

    一、為什麼需要多種監控工具?

    許多維運人員只在系統「出事當下」才匆忙開 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 排查問題的典型流程

    1. 先看上方 CPU / MEM 條狀圖:資源是不是爆掉。
    2. F6 切換排序:先看 CPU%,再切到 MEM%。
    3. F5 看樹狀視圖:找出是否某個 service fork 出大量子行程。
    4. 點選(或用方向鍵選到)可疑行程,再用 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%,系統明顯變慢

    1. 先用 tophtop 看是哪一個 process 把 CPU 吃滿。
    2. 1(top)或觀察 CPU 條(htop),確認是單 core 爆還是全部 core 爆。
    3. 若是單一服務(例如某支 Python / PHP 程式):
      • 先觀察一段時間,確認是不是短暫尖峰。
      • 必要時以 htop 選取該行程,用 F9 適度送出 TERM 或 KILL。
    4. 長期來看,可以搭配 nmon / dstat 收集 CPU 使用率,找出尖峰時段與模式。

    情境二:磁碟 I/O 異常,服務反應變得卡頓

    1. 先用 dstat -tcmnd,觀察 磁碟 I/O 欄位 是否非常高。
    2. 搭配 iostat -x 1(若有)看每顆磁碟的 await / svctm / %util。
    3. htopglances 查找大量做 I/O 的 process。
    4. 必要時用 nmon 記錄一段時間的 I/O 資料,之後做更細緻的分析與報表。

    情境三:記憶體吃滿、開始大量 Swap,服務延遲急遽上升

    1. htoptopRES / VIRT / SHR 欄位,找出特別肥的 process。
    2. 在 htop 以記憶體排序(F6 → 選 MEM%)找出 top N 的大戶。
    3. 短期可以降級部分服務、調整 cache 設定或重啟異常程式。
    4. 中長期則需要調整服務架構(分散到多台機器)、或升級記憶體容量。

    你可以將這些流程寫成簡單的「值班手冊」,搭配指令範例,讓團隊裡的每個人遇到問題時都能用同樣的方法排查,減少臨場慌亂與溝通成本。

    十、常見問題 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 等), 也可以寫在留言裡,我會再整理成後續文章 🙌


    — WWFandy・Linux 效能監控筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級