一、概述sar(System Activity Reporter,系統活動情況報告)是Linux下系統運行狀態統計工具,可從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。算是一個萬能的小能手。
二、安裝ubuntu下:
root@ubuntu:/home/peng# apt-get install sysstat
root@ubuntu:/home/peng# sar -r
Cannot open /var/log/sysstat/sa07: No such file or directory
Please check if data collecting is enabled
執行后會遇到以下錯誤,sa07中的07是當天的日期,原因是由于沒有創建該文件。解決方法:
root@ubuntu:/home/peng# chmod o+w /etc/default/sysstat
root@ubuntu:/home/peng# vim /etc/default/sysstat
三、 命令語法
類型 就是我們要獲取的是哪個類型的指標數據,這里的-n,代表的是監控一些網絡信息
-a:文件讀寫情況
-A:所有報告的總和
-B:分頁狀況
-b:顯示I/O和傳送速率的統計信息
-c:輸出進程統計信息,每秒創建的進程數
-d:塊設備狀況
-F [ MOUNT ]:文件系統統計信息
-H:交換空間利用率
-I { 《中斷》 | SUM | ALL | XALL }:中斷信息狀況
-n:匯報網絡情況
-P:設定CPU
-q:隊列長度和平均負載
-R:輸出內存頁面的統計信息
-r [ ALL ]:輸出內存和交換空間的統計信息
-S:交換空間利用率信息
-u [ ALL ]:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-W:輸出系統交換活動信息
-w:任務創建與系統轉換信息
-y:終端設備活動情況
類型參數 有的類型帶有參數,有的沒有。這里的DEV,代表的是監控網卡信息
間隔時間 每次報告的間隔時間(秒)
次數
顯示報告的次數。如:時間間隔是2,采樣次數是3,那么sar命令將阻塞12秒鐘。
幫助
root@ubuntu:/home/peng# sar --help
Usage: sar [ options ] [ 《interval》 [ 《count》 ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]
[ -p ] [ -q ] [ -R ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]
[ -v ] [ -W ] [ -w ] [ -y ] [ --sadc ]
[ -I { 《int》 [,。..] | SUM | ALL | XALL } ] [ -P { 《cpu》 [,。..] | ALL } ]
[ -m { 《keyword》 [,。..] | ALL } ] [ -n { 《keyword》 [,。..] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | 。.. } ]
[ -f [ 《filename》 ] | -o [ 《filename》 ] | -[0-9]+ ]
[ -i 《interval》 ] [ -s [ 《hh:mm[:ss]》 ] ] [ -e [ 《hh:mm[:ss]》 ] ]
四、舉例Linux下的資源監控,主要有下面幾種:有磁盤、CPU、網絡、內存、IO等。
1. CPU信息我們就先從cpu信息開始說起。作為計算機的大腦,作為一個指揮者,我們要監控它的一舉一動。實際上,對于CPU有下面三種監控:利用率,負載,中斷。
(1)CPU利用率
使用sar -u,我們看下它的執行結果。可以看到每種類型的使用情況,和top命令中的意義,是一樣的。
root@ubuntu:/home/peng# sar -u 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0509 AM CPU %user %nice %system %iowait %steal %idle
0510 AM all 1.01 0.00 2.02 0.00 0.00 96.97
Average: all 1.01 0.00 2.02 0.00 0.00 96.97
字段說明
%user #用戶空間的CPU使用
%nice 改變過優先級的進程的CPU使用率
%system 內核空間的CPU使用率
%iowait CPU等待IO的百分比
%steal 虛擬機的虛擬機CPU使用的CPU
%idle 空閑的CPU
在以上的顯示當中,主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁盤IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合內存使用等情況判斷CPU是否瓶頸。
(2)報個每個CPU的使用狀態:
root@ubuntu:/home/peng# sar -p 1 3
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0521 AM CPU %user %nice %system %iowait %steal %idle
0522 AM all 1.00 0.00 0.00 0.00 0.00 99.00
0523 AM all 1.02 0.00 0.00 0.00 0.00 98.98
0524 AM all 1.01 0.00 1.01 0.00 0.00 97.98
Average: all 1.01 0.00 0.34 0.00 0.00 98.65
字段說明
CPU: 所有CPU的統計
%user 用戶態的CPU使用統計
%nice 更改過優先級的進程的CPU使用統計
%iowait CPU等待IO數據的百分比
%steal 虛擬機的vCPU占用的物理CPU的百分比
%idle 空閑的CPU百分比
(3)CPU負載 使用sar -q,同樣的,和top的參數意義是相似的。除了load值,它還顯示了等待隊列的長度,對于排查排隊問題非常有幫助。
root@ubuntu:/home/peng# sar -q 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0520 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
0521 AM 0 440 0.01 0.02 0.00 0
Average: 0 440 0.01 0.02 0.00 0
字段說明
runq-sz 運行隊列的長度(等待運行的進程數,每個核的CP不能超過3個)
plist-sz 進程列表中的進程(processes)和線程數(threads)的數量
ldavg-1 最后1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推
ldavg-5 最后5分鐘的CPU平均負載
ldavg-15 最后15分鐘的CPU平均負載
(4)中斷
使用sar -I,注意i是大寫的。由于有不同的換算方式,所以中斷的參數,分為默認、SUM、ALL等。
root@ubuntu:/home/peng# sar -I SUM 1 2
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0501 AM INTR intr/s
0502 AM sum 250.52
0503 AM sum 338.38
Average: sum 294.90
(5)上下文切換
使用sar -w,它經常與監控swap交換分區的使用情況的sar -W(注意大小寫)搞混,所以要注意。
root@ubuntu:/home/peng# sar -w 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0553 AM proc/s cswch/s
0554 AM 0.00 433.67
0555 AM 0.00 734.38
0556 AM 0.00 582.65
0557 AM 0.00 886.46
2. 內存信息
內存主要是分為下面這些部分,我們平常監控的,主要是物理內存、虛擬內存、內核等。
(1)內存利用率
使用sar -r命令。有些sar版本可能會有sar -R,但一般小寫的就夠了。
root@ubuntu:/home/peng# sar -r 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0554 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
0555 AM 281108 1736408 86.07 109040 675176 3345488 110.93 730964 591392 0
Average: 281108 1736408 86.07 109040 675176 3345488 110.93 730964 591392 0
字段說明
kbmemfree:可用的空閑內存大小
kbmemused:已使用的內存大小(不包含內核使用的內存)
%memused:已使用內存的百分數
kbbuffers :內核緩沖區(buffer)使用的內存大小
kbcached :內核高速緩存(cache)數據使用的內存大小
kbswpfree :可用的空閑交換空間大小
kbswpused:已使用的交換空間大小
%swpused:已使用交換空間的百分數
kbswpcad :交換空間的高速緩存使用的內存大小
kbcommit 保證當前系統正常運行所需要的最小內存,即為了確保內存不溢出而需要的最少內存(物理內存+Swap分區)
commit 這個值是kbcommit與內存總量(物理內存+swap分區)的一個百分比的值
(2)swap交換分區
對于swap分區來說,就可以使用sar -S。效果如下。如果想要看交換分區的使用情況(非容量情況),就要切換到sar -W命令。
root@ubuntu:/home/peng# sar -S 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0515 AM kbswpfree kbswpused %swpused kbswpcad %swpcad
0516 AM 962556 35840 3.59 2808 7.83
Average: 962556 35840 3.59 2808 7.83
(3)內核使用情況
主要是使用sar -v命令。v一般在別的命令中用作版本展示,sar命令用來輸出slab區的一些信息,可以說是特立獨行,不走尋常路。
root@ubuntu:/home/peng# sar -v 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0546 AM dentunusd file-nr inode-nr pty-nr
0547 AM 47183 6816 53938 17
0548 AM 47183 6816 53938 17
字段說明
dentunusd 在緩沖目錄條目中沒有使用的條目數量
file-nr 被系統使用的文件句柄數量
inode-nr 已經使用的索引數量
pty-nr 使用的pty數量
(4)監控內存分頁信息, 主要是使用sar -B命令。(注意他的發音!很牛掰!) 執行結果如下:
root@ubuntu:/home/peng# sar -B
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0134 AM LINUX RESTART (1 CPU)
0101 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
0201 AM 0.00 0.29 23.98 0.00 10.50 0.00 0.00 0.00 0.00
0201 AM 0.00 0.23 1.03 0.00 1.90 0.00 0.00 0.00 0.00
0201 AM 0.00 0.47 1.73 0.00 2.71 0.00 0.00 0.00 0.00
(5)查看系統swap分區的統計信息:
root@ubuntu:/home/peng# sar -W
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0134 AM LINUX RESTART (1 CPU)
0101 AM pswpin/s pswpout/s
0201 AM 0.00 0.00
0201 AM 0.00 0.00
0201 AM 0.00 0.00
0201 AM 0.00 0.00
0201 AM 0.00 0.00
0201 AM 0.00 0.00
字段說明
pswpin/s 每秒從交換分區到系統的交換頁面(swap page)數量
pswpout/s 每秒從系統交換到swap的交換頁面(swap page)的數量
(6)查看I/O和傳遞速率的統計信息
root@ubuntu:/home/peng# sar -b
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0134 AM LINUX RESTART (1 CPU)
0101 AM tps rtps wtps bread/s bwrtn/s
0201 AM 0.04 0.00 0.04 0.00 0.59
0201 AM 0.03 0.00 0.03 0.00 0.47
字段說明
tps 磁盤每秒鐘的IO總數,等于iostat中的tps
rtps 每秒鐘從磁盤讀取的IO總數
wtps 每秒鐘從寫入到磁盤的IO總數
bread/s 每秒鐘從磁盤讀取的塊總數
bwrtn/s 每秒鐘寫入到磁盤的塊總數
(7)磁盤使用詳情統計
root@ubuntu:/home/peng# sar -d
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0134 AM LINUX RESTART (1 CPU)
0101 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
0201 AM dev7-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0201 AM dev8-0 0.04 0.00 0.59 13.54 0.00 0.00 0.00 0.00
字段說明
DEV 磁盤設備的名稱,如果不加-p,會顯示dev253-0類似的設備名稱,因此加上-p顯示的名稱更直接
tps:每秒I/O的傳輸總數
rd_sec/s 每秒讀取的扇區的總數
wr_sec/s 每秒寫入的扇區的 總數
avgrq-sz 平均每次次磁盤I/O操作的數據大小(扇區)
avgqu-sz 磁盤請求隊列的平均長度
await 從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒等于1000毫秒),等于尋道時間+隊列時間+服務時間
svctm I/O的服務處理時間,即不包括請求隊列中的時間
%util I/O請求占用的CPU百分比,值越高,說明I/O越慢
3. I/O信息IO信息監控,同樣是一個響亮的sar -b,不過這里的b,變成了小寫的。
root@ubuntu:/home/peng# sar -b 1 2
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0522 AM tps rtps wtps bread/s bwrtn/s
0523 AM 0.00 0.00 0.00 0.00 0.00
0524 AM 2.06 0.00 2.06 0.00 65.98
Average: 1.02 0.00 1.02 0.00 32.65
字段說明
tps 磁盤每秒鐘的IO總數,等于iostat中的tps
rtps 每秒鐘從磁盤讀取的IO總數
wtps 每秒鐘從寫入到磁盤的IO總數
bread/s 每秒鐘從磁盤讀取的塊總數
bwrtn/s 每秒鐘寫入到磁盤的塊總數
sar -d命令非常類似于iostat命令,結果更多。
root@ubuntu:/home/peng# sar -d 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0503 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
0504 AM dev7-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0504 AM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字段說明
DEV 磁盤設備的名稱,如果不加-p,會顯示dev253-0類似的設備名稱,因此加上-p顯示的名稱更直接
tps:每秒I/O的傳輸總數
rd_sec/s 每秒讀取的扇區的總數
wr_sec/s 每秒寫入的扇區的 總數
avgrq-sz 平均每次次磁盤I/O操作的數據大小(扇區)
avgqu-sz 磁盤請求隊列的平均長度
await 從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒等于1000毫秒),等于尋道時間+隊列時間+服務時間
svctm I/O的服務處理時間,即不包括請求隊列中的時間
%util I/O請求占用的CPU百分比,值越高,說明I/O越慢
4. 網絡信息(1) 統計網絡信息
sar -n
接下來,我們看最復雜的網絡信息。說它復雜,是因為它的參數非常的多,比如上面說到的DEV,就表示的網絡流量。
要命的是,這些參數的每個輸出,還都不是一樣的。可能是26個字母已經無法涵蓋這么多參數了吧,所以sar命令統一把它加在了sar -n下面。好在我們平常使用的時候,只和DEV參數打交道既可以了。
#sar -n選項使用6個不同的開關:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV顯示網絡接口信息,EDEV顯示關于網絡錯誤的統計數據,NFS統計活動的NFS客戶端的信息,NFSD統計NFS服務器的信息,SOCK顯示套接字信息,ALL顯示所有5個開關。它們可以單獨或者一起使用。
(2) 每間隔1秒統計一次,總計統計1次
root@ubuntu:/home/peng# sar -n DEV 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0536 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
0537 AM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0537 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字段說明 下面的average是在多次統計后的平均值
IFACE 本地網卡接口的名稱
rxpck/s 每秒鐘接受的數據包
txpck/s 每秒鐘發送的數據庫
rxKB/S 每秒鐘接受的數據包大小,單位為KB
txKB/S 每秒鐘發送的數據包大小,單位為KB
rxcmp/s 每秒鐘接受的壓縮數據包
txcmp/s 每秒鐘發送的壓縮包
rxmcst/s 每秒鐘接收的多播數據包
(3) 統計網絡設備通信失敗信息:
root@ubuntu:/home/peng# sar -n EDEV 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0522 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
0523 AM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0523 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
Average: ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字段說明
IFACE 網卡名稱
rxerr/s 每秒鐘接收到的損壞的數據包
txerr/s 每秒鐘發送的數據包錯誤數
coll/s 當發送數據包時候,每秒鐘發生的沖撞(collisions)數,這個是在半雙工模式下才有
rxdrop/s 當由于緩沖區滿的時候,網卡設備接收端每秒鐘丟掉的網絡包的數目
txdrop/s 當由于緩沖區滿的時候,網絡設備發送端每秒鐘丟掉的網絡包的數目
txcarr/s 當發送數據包的時候,每秒鐘載波錯誤發生的次數
rxfram 在接收數據包的時候,每秒鐘發生的幀對其錯誤的次數
rxfifo 在接收數據包的時候,每秒鐘緩沖區溢出的錯誤發生的次數
txfifo 在發生數據包 的時候,每秒鐘緩沖區溢出的錯誤發生的次數
(4) 統計socket連接信息
root@ubuntu:/home/peng# sar -n SOCK 1 1
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0521 AM totsck tcpsck udpsck rawsck ip-frag tcp-tw
0522 AM 1393 2 6 0 0 0
Average: 1393 2 6 0 0 0
字段說明
totsck 當前被使用的socket總數
tcpsck 當前正在被使用的TCP的socket總數
udpsck 當前正在被使用的UDP的socket總數
rawsck 當前正在被使用于RAW的skcket總數
ip-frag 當前的IP分片的數目
tcp-tw TCP套接字中處于TIME-WAIT狀態的連接數量
使用FULL關鍵字,相當于上述DEV、EDEV和SOCK三者的綜合。
(5) TCP連接的統計
root@ubuntu:/home/peng# sar -n TCP 1 3
Linux 4.15.0-112-generic (ubuntu) 03/07/2021 _x86_64_ (1 CPU)
0505 AM active/s passive/s iseg/s oseg/s
0506 AM 0.00 0.00 0.00 0.00
0507 AM 0.00 0.00 0.00 0.00
0508 AM 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00
字段說明
active/s 新的主動連接
passive/s 新的被動連接
iseg/s 接受的段
oseg/s 輸出的段
(6) sar -n 使用總結
DEV 網絡接口統計信息
EDEV 網絡接口錯誤
NFS NFS 客戶端
NFSD NFS 服務器
SOCK Sockets (套接字) (v4)套接字使用
IP IP 流 (v4) IP數據報統計信息
EIP IP 流 (v4) (錯誤) IP錯誤統計信息
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4) (錯誤)
TCP TCP 流 (v4) TCP統計信息
ETCP TCP 流 (v4) (錯誤)TCP錯誤統計信息
UDP UDP 流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6) (錯誤)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (錯誤)
UDP6 UDP 流 (v6)
五、ksarKsar可以用來分析系統性能數據,其優勢在于不需要單獨去收集性能數據,系統自帶有sar包,通過命令轉換即可使用Ksar展現。
安裝該軟件需要先安裝java,如果已經安裝調到第5步。
1. 下載java
2. 解壓
拷貝jdk-8u202-linux-x64.tar.gz到ubuntu的/home/peng/jdk下
tar -zxvf jdk-8u202-linux-x64.tar.gz
3. 設置環境變量
$sudo vim /etc/profile
在文件尾加入以下內容
28 #set java env
29 export JAVA_HOME=/home/peng/jdk/jdk1.8.0_202
30 export JRE_HOME=${JAVA_HOME}/jre
31 export CLASSPATH=。:${JAVA_HOME}/lib:${JRE_HOME}/lib
32 export PATH=${JAVA_HOME}/bin:$PATH
使環境變量生效
$sudo source /etc/profile
4. 測試java
java版本為1.8.0_202
5. 下載ksar源碼
wget http://jaist.dl.sourceforge.net/project/ksar/ksar/5.0.6/ksar-5.0.6.zip
unzip ksar-5.0.6.zip
然后解壓并進入源碼根目錄,執行腳本:
sh run.sh
可啟動此軟件
ksar
6. 操作
執行命令,點擊Data-》Run local command
可以執行以下命令:
sar -A
點擊對應的硬件信息,就可以以圖形化形式查看對應的硬件信息內容。非常直觀方便。
原文標題:Linux查看硬件信息超強命令sar,以及可視化工具ksar
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
Linux
+關注
關注
87文章
11312瀏覽量
209701 -
硬件
+關注
關注
11文章
3341瀏覽量
66256
原文標題:Linux查看硬件信息超強命令sar,以及可視化工具ksar
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論