掌握 Ubuntu 伺服器的系統監控工具對於確保最佳效能、診斷問題和維護系統可靠性至關重要。在本教學中,我們將探討適用於 Ubuntu 伺服器的最佳系統監控工具,包括即時資源監控、磁碟 I/O、網路活動和伺服器儀表板。
上一篇文章:
01. Ubuntu Server 簡介 – SysOSX: AI & Cloud
02. 如何搭建你的第一台 Ubuntu 伺服器:初學者指南 – SysOSX: AI & Cloud
03.掌握 Ubuntu 伺服器的 Linux 命令列 – SysOSX: AI & Cloud
04. Ubuntu 伺服器使用者與權限管理:全面指南 – SysOSX: AI & Cloud
05. Ubuntu 伺服器網路基礎:全面指南 – SysOSX: AI & Cloud
06. 在 Ubuntu 伺服器上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud
07.Ubuntu 伺服器修補與更新:全面指南 – SysOSX: AI & Cloud
08. 保護你的 Ubuntu 伺服器:強化與防護的實用步驟 – SysOSX: AI & Cloud
09. Ubuntu 伺服器稽核與記錄
使用 htop 和 top 進行即時資源監控
介紹 htop 和 top
這兩款工具 htop 和 top 是即時監控系統資源的必備命令列工具。它們顯示 CPU 使用率、記憶體消耗和正在執行的程序等資訊。
安裝和執行 htop (預設已安裝)
要安裝 htop,請執行:
sudo apt update
sudo apt install htop
要啟動 htop,只需輸入:
htop
主要功能和使用場景: htop
htop 非常適合:
- 識別資源密集型程序:你可以按 CPU 或記憶體使用情況對程序排序,快速找到資源占用大戶。
- 終止程序:使用
F9終止無回應或有問題的程序,操作直接在htop介面中完成。 - 監控執行緒:展開程序可查看各個執行緒及其資源使用情況。
- 自訂欄位:按
F2設定顯示內容,並新增/刪除磁碟 I/O 或網路使用率等指標。
使用 top
top 是一款更簡單的工具,Ubuntu 伺服器預裝了它。要執行它:
top
關鍵命令: top:
- 按
Shift + p按 CPU 使用率排序。 - 按
Shift + m按記憶體使用率排序。 - 按
q結束。
安裝和設定 sysstat 以取得效能指標
什麼是 sysstat?
sysstat 是一套用於長期收集和報告系統效能指標的工具。它包括以下公用程式: iostat, vmstat和 sar.
安裝 sysstat
要安裝 sysstat:
sudo apt update
sudo apt install sysstat
設定 sysstat
透過編輯設定檔啟用資料收集:
sudo nano /etc/default/sysstat
將 ENABLED="false" 改為 ENABLED="true"。儲存並結束,然後重新啟動服務:
sudo systemctl restart sysstat
使用 sysstat 工具
iostat:監控磁碟 I/O 效能。iostat

vmstat:監控記憶體、CPU 和 I/O 統計資訊。vmstat

sar:產生系統活動的歷史報告。sar -u 5 10 # CPU usage every 5 seconds for 10 intervals

監控磁碟 I/O 和網路活動
磁碟 I/O 監控工具: iotop
使用以下工具 iostat (來自 sysstat)或 iotop 進行即時磁碟 I/O 監控。
要安裝 iotop:
sudo apt update
sudo apt install iotop
執行 iotop :
sudo iotop
然而,有些使用者在執行該工具時可能會遇到以下錯誤,該工具為 iotop:
CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %
修復 iotop 錯誤
出現此問題是因為核心缺少 CONFIG_TASK_DELAY_ACCT 功能,而 iotop 需要該功能來顯示 SWAPIN 和 IO 百分比。幸運的是,可以透過更新 GRUB 設定來解決此問題。
修復錯誤的步驟
- 編輯 GRUB 設定檔:
sudo nano /etc/default/grub
- 將
delayacct選項新增到GRUB_CMDLINE_LINUX_DEFAULT項目中。如果該行最初為空(GRUB_CMDLINE_LINUX_DEFAULT=""),按如下方式更新:GRUB_CMDLINE_LINUX_DEFAULT="delayacct"如果該行已包含其他選項,請附加delayacct到現有選項中,以空格分隔。例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash delayacct"
- 更新 GRUB 以套用變更:
sudo update-grub
- 重新啟動伺服器:
sudo reboot
重新啟動後,錯誤應該會解決, iotop 將正常運作。
使用 `iotop
問題修復後,你可以執行 iotop 來監控磁碟 I/O:
sudo iotop
你可以用它做什麼: iotop
- 識別導致高磁碟 I/O 的程序。
- 即時監控讀寫操作。
- 按磁碟使用情況對程序排序。
網路活動監控
使用 iftop
要安裝 iftop:
sudo apt update
sudo apt install iftop
執行 iftop :
sudo iftop
使用 nload
要安裝 nload:
sudo apt update
sudo apt install nload
執行 nload :
nload
使用 Cockpit 搭建伺服器儀表板
什麼是 Cockpit?
Cockpit 是一個基於 Web 的圖形化儀表板,用於監控和管理伺服器。它提供 CPU、記憶體、磁碟使用情況和網路活動的即時洞察。
安裝 Cockpit
要安裝 Cockpit:
sudo apt update
sudo apt install cockpit
存取 Cockpit
啟動 Cockpit 服務:
sudo systemctl start cockpit.socket
sudo systemctl enable cockpit.socket
透過以下位址存取儀表板:
https://<your-server-ip>:9090
Cockpit 的功能
- 直觀地監控系統效能。
- 管理服務、記錄和使用者帳戶。
- 查看磁碟使用情況和網路活動。
其他推薦的監控工具
雖然像 htop, sysstat和 Cockpit 這樣的工具對大多數伺服器監控需求來說都非常出色,但還有其他進階工具可以為複雜環境提供更深入的洞察和更好的視覺化效果。下面是一些可以考慮的其他監控工具:
Prometheus 和 Grafana
Prometheus
Prometheus 是一個開源監控和警示工具包,專為可靠性和可擴充性而設計。它廣泛應用於雲端原生環境,特別適合監控分散式系統和微服務。
主要功能:
- 時序資料庫:高效儲存帶有時間戳記的指標。
- 強大的查詢語言 (
PromQL) 用於分析指標。 - 警示系統:與 Alertmanager 等工具整合以傳送通知。
- 拉取式架構:Prometheus 主動從目標擷取指標。
使用場景:
- 監控多台伺服器的 CPU、記憶體和磁碟使用情況。
- 追蹤特定於應用程式的指標(例如 HTTP 請求延遲、錯誤率)。
- 針對異常指標或系統故障產生警示。
安裝說明:
要在 Ubuntu 上安裝 Prometheus:
sudo apt update
wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz
tar xvf prometheus-2.44.0.linux-amd64.tar.gz
cd prometheus-2.44.0.linux-amd64
./prometheus
透過以下位址存取 Prometheus:
http://<your-server-ip>:9090
請注意,Prometheus 和 Cockpit 的預設連接埠都是 9090,如果同時使用它們,你可能需要變更預設連接埠:
解決 Prometheus 與 Cockpit 之間的連接埠衝突
選項 1:變更 Prometheus 連接埠
你可以透過修改 Prometheus 的設定檔將其設定為使用不同的連接埠。
- 開啟 Prometheus 設定檔:
nano prometheus.yml
- 在 Prometheus 啟動命令或服務檔案中新增或修改
--web.listen-address標誌,以指定不同的連接埠(例如9091):
--web.listen-address=:9091
- 重新啟動 Prometheus 以套用變更:
sudo systemctl restart prometheus
- 使用新連接埠存取 Prometheus:
http://<your-server-ip>:9091
選項 2:變更 Cockpit 連接埠
如果你希望讓 Prometheus 繼續使用 9090 連接埠,也可以變更 Cockpit 的預設連接埠。
- 為 Cockpit 建立自訂設定檔:
sudo nano /lib/systemd/system/cockpit.socket
- 新增以下幾行以指定新連接埠(例如
9092):ListenStream=9092 - 重新啟動 Cockpit 服務:
systemctl daemon-reload
systemctl restart cockpit.socket
- 使用新連接埠存取 Cockpit:
https://<your-server-ip>:9092
選項 3:使用反向代理
如果變更連接埠並不理想,你可以使用反向代理(例如 Nginx 或 Apache),將兩個服務對應到不同的 URL,同時保持預設連接埠。
例如:
- Prometheus:
http://<your-server-ip>/prometheus
- Cockpit:
http://<your-server-ip>/cockpit
建議
如果你經常同時使用這兩個工具:
記錄連接埠變更,以供將來參考或其他管理員查閱。
將 Prometheus 的連接埠改為 9091 ,因為 Cockpit 更常透過其預設連接埠 9090.
Grafana
Grafana 是一個強大的視覺化平台,與 Prometheus 無縫整合。它讓你可以建立動態儀表板來視覺化指標和趨勢。
主要功能:
- 多資料來源支援:可與 Prometheus、Elasticsearch、MySQL 等配合使用。
- 自訂儀表板:建立互動式圖表、熱力圖和表格。
- 警示:根據關鍵指標的閾值設定警示。
- 共用:輕鬆與團隊共用儀表板。
使用場景:
- 視覺化 Prometheus 收集的伺服器效能指標。
- 監控一段時間內的趨勢,以更好地進行容量規劃。
- 在統一儀表板中顯示來自多個資料來源的資料。
安裝說明:
要在 Ubuntu 上安裝 Grafana:
sudo apt update
sudo apt install -y software-properties-common
sudo wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
sudo echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
透過以下位址存取 Grafana:
http://<your-server-ip>:3000
Nagios
Nagios 是最受歡迎的基礎設施監控工具之一。它為伺服器、網路裝置和應用程式提供全面的監控和警示。它具有高度可自訂性,並支援外掛程式以擴充功能。
主要功能:
- 監控伺服器健康狀況:追蹤 CPU、記憶體、磁碟使用情況等。
- 網路監控:偵測路由器、交換器和防火牆的問題。
- 警示:透過電子郵件、簡訊或與 Slack 的整合傳送通知。
- 豐富的外掛程式庫:監控資料庫、Web 伺服器和其他服務。
使用場景:
- 監控生產環境中的關鍵伺服器和應用程式。
- 在磁碟空間不足或 CPU 使用率過高時接收警示。
- 監控網路裝置的正常運作時間和可用性。
安裝說明:
要在 Ubuntu 上安裝 Nagios:
sudo apt install nagios4 nagios-plugins
sudo a2enmod rewrite cgi
systemctl restart apache2
sudo systemctl status nagios4
sudo systemctl enable nagios4
sudo systemctl start nagios4
Nagios 需要額外設定才能設定監控目標。有關詳細設定,請參閱 Nagios 文件.
Netdata:即時系統監控工具
Netdata 是一款輕量級的即時監控工具,可提供有關系統效能的詳細洞察。它易於安裝,並附帶一個精美的 Web 介面來視覺化指標。
步驟 1:更新系統套件
透過在終端機中執行以下命令確保系統保持最新:
sudo apt update
sudo apt upgrade
步驟 2:安裝 Netdata
從預設的 Ubuntu 套件庫安裝 Netdata:
sudo apt install netdata
步驟 3:設定 Netdata
編輯 Netdata 設定檔以允許遠端存取:
sudo nano /etc/netdata/netdata.conf
找到 bind socket to IP 欄位,並將 127.0.0.1 替換為你的伺服器 IP 位址:
[global]
bind socket to IP = <your-server-ip>
儲存檔案並重新啟動 Netdata 服務:
sudo systemctl restart netdata
步驟 4:設定防火牆
允許存取 Netdata 的預設連接埠 (19999) 並啟用防火牆:
sudo ufw allow 19999
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
步驟 5:存取 Netdata Web 介面
開啟 Web 瀏覽器並前往:
http://<your-server-ip>:19999

工具比較
| 工具 | 最適合 | 易用性 | 視覺化 | 警示 |
|---|---|---|---|---|
| Prometheus | 大規模指標收集 | 中等 | 有限 | 是 |
| Grafana | 進階儀表板 | 簡單 | 出色 | 是 |
| Nagios | 基礎設施監控 | 中等 | 基礎 | 是 |
| Netdata | 輕量級即時監控 | 簡單 | 出色 | 是 |
結論
監控你的 Ubuntu 伺服器對於維護效能、診斷問題和防止停機至關重要。像 htop, top, sysstat、Cockpit 及其他工具讓管理員能夠有效地監控資源。無論你喜歡命令列工具還是圖形儀表板,本指南都涵蓋了搭建強大監控系統所需的一切。
下一期: 集中式記錄與監控
在下一篇文章中,我們將重點介紹 集中式記錄與監控 ,以進一步簡化伺服器管理和效能追蹤。將涵蓋的主題包括:
- 設定 rsyslog 或 syslog-ng 以實現集中式記錄。
- 將記錄轉送到遠端記錄伺服器,以便更好地組織和分析。
- 將你的 Ubuntu 伺服器與以下強大的監控平台整合,例如 Nagios, Zabbix或 Prometheus ,以深入了解系統健康狀況和效能。
敬請關注,了解如何集中管理記錄基礎設施並利用監控工具有效地最佳化伺服器營運!










2 thoughts on “10. System Monitoring Tools for Ubuntu Server: A Comprehensive Guide”