系統管理員需要一套可靠的工具來監控系統的健康狀態,才能及時發現並解決效能瓶頸。sysstat 工具套件是 Linux 系統中常用的效能監控工具,其中的 sar 和 sadf 指令更是不可或缺。sar 指令能收集系統的 CPU、記憶體、I/O 等活動資訊,而 sadf 指令則能將這些資訊轉換成易於分析的格式,例如 CSV 或 XML。除了 sar 和 sadf,本文也會介紹 iostat、ps、htop 和 glances 等常用監控指令,幫助系統管理員更有效率地監控系統效能。
系統健康監控與維護
在維護系統健康時,監控系統狀態是一項非常重要的工作。雖然市面上有許多商業監控工具可供選擇,但Linux系統中有一款免費且功能強大的工具——sysstat。sysstat工具能夠幫助管理員監控系統的各項效能指標,並且易於安裝和組態。
使用sysstat監控系統健康
在Red Hat為基礎的系統中,sysstat能夠自動組態並開始收集資料。然而,在Debian為基礎的系統中,則需要手動啟用sysstat來收集資料。
啟用sysstat
要啟用sysstat的System Activity Report(sar)工具,首先需要編輯/etc/default/sysstat檔案,將ENABLED="false"改為ENABLED="true"。
sudo nano /etc/default/sysstat
將ENABLED="false"更改為ENABLED="true"後,儲存並離開。
重啟sysstat服務
更改組態後,需要重啟sysstat服務以使更改生效:
sudo service sysstat restart
等待資料收集
重啟服務後,給系統一些時間來開始生成活動報告。稍後,我們將學習如何生成這些報告。
sysstat套件中的工具
sysstat套件包含多個用於檢查效能和格式化系統統計資訊的二進位制檔案。以下是這些工具及其功能的列表:
| 工具名稱 | 功能描述 |
|---|---|
| cifsiostat | 顯示CIFS檔案系統的讀寫操作統計資訊 |
| iostat | 監控系統輸入/輸出裝置的負載情況 |
| mpstat | 顯示每個可用處理器的活動情況 |
| pidstat | 監控目前由Linux核心管理的個別任務 |
| sadf | 以多種格式(CSV、XML等)顯示sar命令建立的資料檔案內容 |
| sar | 將所選的累積活動計數器的內容輸出到標準輸出 |
| tapestat | 監控連線到系統的磁帶機的活動情況 |
使用「stat」命令
許多「stat」命令的工作方式相似,例如vmstat命令,它需要提供一個時間間隔(以秒為單位)和一個特定的快照數量(count)。以下是一個vmstat命令的例子:
vmstat 5 5
這個命令會每5秒執行一次,總共執行5次。第一次執行的結果顯示自上次重啟以來的平均值。
iostat命令範例
同樣地,iostat命令也遵循類別似的使用方式:
iostat 5 2
這個命令會每5秒執行一次,總共執行2次,顯示系統的I/O統計資訊。
蒐集系統活動報告
sar命令是一個全面且多功能的工具,用於收集、報告和儲存系統活動資訊。您可以像使用其他「stat」命令一樣,透過提供間隔和計數來使用sar命令,或者使用特定選項(如-b)來顯示I/O統計資訊。
使用sar命令
例如,您可以使用以下命令來顯示I/O統計資訊:
sar -b
這個命令會顯示系統的I/O統計資訊。
結合間隔和計數使用sar
您也可以結合間隔和計數來使用sar命令,以特定的間隔顯示所選的效能計數器:
sar -b 5 2
這個命令會每5秒顯示一次I/O統計資訊,總共執行2次。
監控系統健康狀態與使用 sar 及 sadf 指令
系統健康監控的重要性
系統健康監控是維護系統效能、容量和安全性的重要任務。系統管理員需要持續追蹤系統的健康狀態,以確保符合客戶的服務水準協定(SLA)。本篇文章將介紹如何使用 sar 和 sadf 指令來監控系統健康狀態。
使用 sar 指令監控系統活動
sar 指令是 System Activity Reporter 的縮寫,用於收集和報告系統活動資訊。預設情況下,sar 指令顯示 CPU 統計資料。若要顯示其他統計資料,需要使用特定的選項。
範例:使用 sar 指令顯示 I/O 統計資料
$ sar -b
Linux 4.18.0-348.7.1.el8_5.x86_64 (server1) 02/13/2022 _x86_64_ (1 CPU)
12:00:15 AM tps rtps wtps bread/s bwrtn/s
12:10:15 AM 0.22 0.03 0.19 2.32 4.30
12:20:15 AM 0.10 0.00 0.10 0.00 0.79
...
#### 內容解密:
sar -b用於顯示 I/O 統計資料,包括每秒傳輸次數(tps)、每秒讀取次數(rtps)、每秒寫入次數(wtps)等。- 輸出結果顯示從午夜開始的 I/O 統計資料。
範例:使用 sar 指令顯示即時 I/O 統計資料
$ sar -b 5 5
Linux 4.18.0-348.7.1.el8_5.x86_64 (server1) 02/13/2022 _x86_64_ (1 CPU)
12:57:13 PM tps rtps wtps bread/s bwrtn/s
12:57:18 PM 0.00 0.00 0.00 0.00 0.00
12:57:23 PM 0.00 0.00 0.00 0.00 0.00
...
#### 內容解密:
sar -b 5 5表示每隔 5 秒收集一次資料,共收集 5 次。- 輸出結果顯示即時的 I/O 統計資料。
使用 sadf 指令格式化系統活動報告
sadf 指令用於將 sar 收集的資料以不同的格式輸出,例如 CSV 或 XML。
範例:使用 sadf 指令輸出 CSV 格式的 CPU 統計資料
$ sadf -d
# hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle
server1;600;2022-02-13 06:10:15 UTC;-1;0.01;0.00;0.24;0.01;0.00;99.74
server1;600;2022-02-13 06:20:15 UTC;-1;0.00;0.00;0.21;0.01;0.00;99.78
...
#### 內容解密:
sadf -d用於輸出 CSV 格式的 CPU 統計資料。- 輸出結果包含主機名稱、間隔時間、時間戳記等資訊。
範例:使用 sadf 指令輸出特定日期的 I/O 統計資料
$ sadf -d /var/log/sa/sa10 -- -d
# hostname;interval;timestamp;DEV;tps;rkB/s;wkB/s;areq-sz;aqu-sz;await;...
server1;600;2022-02-10 06:10:15 UTC;dev8-0;0.35;8.46;2.17;30.81;0.00;0.62;...
server1;600;2022-02-10 06:10:15 UTC;dev11-0;0.00;0.00;0.00;0.00;0.00;0.00;...
...
#### 內容解密:
sadf -d /var/log/sa/sa10 -- -d用於輸出特定日期(本例為 2 月 10 日)的 I/O 統計資料。--用於分隔sadf和sar的選項。
系統健康監控流程圖
此圖示說明瞭使用 sar 和 sadf 指令進行系統健康監控的流程。從開始監控到分析報告,每一步驟都清晰地標示出來。
系統監控
系統監控並非可選專案,而是系統管理員必備的技能。身為系統管理員,必須時刻關注系統的效能、健康狀態和安全性。由於無法同時手動監控系統和執行其他管理工作,因此必須依賴自動化軟體、特定的系統組態和報告系統來更新各系統的狀態。
本章節將探討原生監控工具,並指導讀者收集系統的效能和健康統計資料。
CPU、記憶體和磁碟效能監控
在 Linux 系統中,CPU、記憶體和磁碟效能是三個主要的監控焦點。
網路效能
雖然區域網路(LAN)的網路容量通常不是問題,但檢查網路效能只需花費幾分鐘時間,因此值得進行監控。許多資料中心/伺服器室使用 10-gigabit 連線,以便系統間的通訊幾乎是即時的,備份(即使是大型備份)也不會造成問題。
本章節將重點介紹 CPU、記憶體和磁碟效能及容量監控。
追蹤 CPU 使用率
CPU 通常是系統管理員監控的首要元件。因為它是系統的核心。如果系統的 CPU 持續運作在 80% 以上的利用率,可能意味著系統的 CPU 不足以支援作業系統和所有正在執行的應用程式。也可能是應用程式編碼問題或安全漏洞導致 CPU 使用率進入「紅色」區域。
有多種工具可用於監控和評估 CPU 使用率。最簡單、最直接的工具是 top 和 ps 命令,這些命令是每個 Linux 發行版的標準組態。
top 命令
身為系統管理員,您可能已經使用過 top 或其相關命令(如 atop 或 htop)。top 工具是大多數 Linux 發行版的標準組態,但需要從發行版的倉函式庫中安裝 atop 和 htop 軟體包。
top 命令提供系統「頂級」程式的即時檢視。預設情況下,top 按照 CPU 使用率排序列出程式。
top
使用 Shift + M 切換到記憶體使用模式,如下圖所示。
atop 和 htop 命令
標準的 top 命令很有用,但對於許多系統管理員來說,顯示的資訊不足以進行明智的決策。atop 和 htop 命令(預設情況下未安裝在大多數發行版上)提供了更廣泛的檢視。
atop 命令
atop 工具是一個先進的系統和程式監視器。atop 在下部窗格中顯示標準的 top 程式,但在上部窗格中提供 CPU、記憶體、磁碟和網路效能的洞察,如下圖所示。
atop
htop 命令
htop 工具是另一個系統效能檢視器,顯示與標準 top 工具相同的資訊,但具有彩色編碼和方便的命令選單。如圖所示,htop 工具的目前使用模式被突出顯示(CPU%)。目前模式是 CPU 使用率。選單有助於執行特定的命令,而無需管理員記住每個操作的鍵盤快捷鍵。
htop
鍵盤快捷鍵
Table 9-1 提供一些 top 排序選項的鍵盤快捷鍵。
| 鍵盤快捷鍵 | 排序方式 | |
-|
| | Shift + M | %MEM(記憶體使用率) | | Shift + P | %CPU(CPU 使用率 - 預設) | | Shift + S | TIME(執行時間) |
重點觀察與分析
- CPU 使用率高可能表示系統資源不足或存在安全問題。
- 使用
top、atop和htop等工具可以即時監控系統資源使用情況。 - 這些工具提供不同層次的資訊,從基本的 CPU 和記憶體使用率到更詳細的系統效能分析。
atop 詳細資訊
當以 root 使用者身份執行 atop 時,會顯示:
*** System and Process Activity since Boot *** Unrestricted view (privileged)
當以一般使用者身份執行 atop 時,會顯示:
*** System and Process Activity since Boot *** Restricted view (unprivileged)
兩種模式下的檢視內容相同,但在受限檢視中,某些操作(如對非屬主行程使用 kill)無法執行。
系統監控工具詳解
在 Linux 系統管理中,監控系統資源的使用情況是至關重要的。本篇文章將介紹多種用於監控 CPU、記憶體和磁碟效能的工具,包括 ps、htop、glances 和 sysstat 套件中的工具。
使用 ps 命令檢視行程資訊
ps 命令是一個用於顯示行程資訊的基本工具。透過不同的選項,可以檢視屬於特定使用者的行程、所有行程或是行程表的不同格式。
檢視特定使用者的行程
要檢視目前使用者帳戶所擁有的所有行程,可以使用 -ux 選項:
$ ps -ux
輸出結果將顯示使用者、行程 ID (PID)、CPU 使用率、記憶體使用率等資訊。
檢視所有行程
使用 -aux 選項可以檢視系統中的所有行程:
$ ps -aux
這個命令將顯示所有使用者的行程,包括系統行程。
htop 和 glances:互動式系統監控工具
htop 和 glances 是兩款互動式的系統監控工具,提供即時的系統資源使用情況。
htop
htop 是一款類別似於 top 的工具,但提供了更友善的介面和更多的功能。您可以透過它來監控 CPU 使用率、記憶體使用率等。
glances
glances 是另一款跨平台的監控工具,提供了豐富的資訊和客製化選項。您可以透過快捷鍵來切換顯示的資訊,例如按下 M 鍵切換到記憶體使用率。
### 注意事項
- 使用 `glances` 時需要注意其對 CPU 的佔用率(約 15%),相較於 `top`(約 3-5%)。
sysstat 套件:系統效能監控工具
sysstat 套件包含了一系列用於監控系統效能的工具,包括 sar、sadf、mpstat、iostat 等。
使用 sar 命令監控系統效能
sar 命令用於報告系統的效能統計資料。預設情況下,它顯示從午夜到目前時間的 CPU 統計資料。
$ sar
您可以使用不同的選項來篩選結果,例如 -u 顯示 CPU 統計資料,-B 顯示分頁統計資料。
$ sar -u ALL
$ sar -B
$ sar -b
使用 sadf 命令格式化輸出
sadf 命令可以用於將 sar 收集的資料以不同的格式輸出,例如 CSV 或 XML。
以多種格式顯示系統活動資料
sadf 命令將 sar 資料輸出為不同的格式,以便更容易地將其匯入資料函式庫或在網頁上顯示。例如,以下命令以易於匯入資料函式庫的格式顯示某月 21 日的 sar 資料:
$sadf -d /var/log/sa/sa21
# hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle
server1;601;2022-09-21 04:10:04 UTC;-1;0.01;0.00;0.28;0.01;0.00;99.70
server1;601;2022-09-21 04:20:05 UTC;-1;0.01;0.00;0.26;0.01;0.00;99.72
server1;601;2022-09-21 04:30:06 UTC;-1;0.01;0.00;0.28;0.01;0.00;99.71
server1;601;2022-09-21 04:40:07 UTC;-1;0.01;0.00;0.27;0.01;0.00;99.71
...
除了用於歷史資料,sadf 也可用於當前資料:
$sadf -dh -- -p
# hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle[...]
server1;598;2022-09-24 04:10:01 UTC;-1;0.02;0.00;0.33;0.01;0.00;99.64
server1;601;2022-09-24 04:20:01 UTC;-1;0.01;0.00;0.30;0.01;0.00;99.69
server1;601;2022-09-24 04:30:02 UTC;-1;0.01;0.00;0.29;0.01;0.00;99.70
server1;600;2022-09-24 04:40:03 UTC;-1;0.01;0.00;0.29;0.01;0.00;99.69
...
內容解密:
此命令輸出系統活動報告的格式可被輕易匯入資料函式庫。其中,-d 引數指定輸出格式為分隔資料,適用於匯入資料函式庫。輸出的欄位包含主機名稱、間隔時間、時間戳記、CPU 使用率等詳細資訊。
使用 iostat 監控系統 I/O 裝置負載
如同其他 “stat” 命令,iostat 命令首先顯示自系統啟動以來的統計摘要。您可多次執行該命令以檢視當前統計資料,或使用 -y 選項忽略摘要資訊。
包含摘要資訊的範例:
$iostat -d 2
Linux 4.18.0-348.7.1.el8_5.x86_64 (server1) 09/24/2022 _x86_64_ (1 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.26 1.59 2.05 312698 403049
sdc 0.01 0.04 0.01 8267 2797
sdb 0.00 0.02 0.01 3028 2048
scd0 0.00 0.00 0.00 1 0
dm-0 0.26 1.31 2.12 257071 416372
dm-1 0.00 0.01 0.01 2220 1172
dm-2 0.00 0.01 0.01 1330 2048
...
省略摘要資訊的範例:
$iostat -y -d 2
Linux 4.18.0-348.7.1.el8_5.x86_64 (server1) 09/24/2022 _x86_64_ (1 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
sdc 1.00 0.00 0.75 0 1
sdb 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0
...
此圖示說明 iostat 輸出欄位及用途:
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Linux系統監控工具sar與sadf詳解
package "Linux Shell 操作" {
package "檔案操作" {
component [ls/cd/pwd] as nav
component [cp/mv/rm] as file
component [chmod/chown] as perm
}
package "文字處理" {
component [grep] as grep
component [sed] as sed
component [awk] as awk
component [cut/sort/uniq] as text
}
package "系統管理" {
component [ps/top/htop] as process
component [systemctl] as service
component [cron] as cron
}
package "管線與重導向" {
component [| 管線] as pipe
component [> >> 輸出] as redirect
component [$() 命令替換] as subst
}
}
nav --> file : 檔案管理
file --> perm : 權限設定
grep --> sed : 過濾處理
sed --> awk : 欄位處理
pipe --> redirect : 串接命令
process --> service : 服務管理
note right of pipe
命令1 | 命令2
前者輸出作為後者輸入
end note
@enduml圖示內容解密:
此圖示呈現了 iostat 命令輸出的主要欄位及其意義。透過此圖,您可以清楚瞭解每個欄位所代表的磁碟 I/O 統計資訊。