Sysstat,目前已經(jīng)發(fā)布最新的12.1.6版本,Sysstat是一種在linux系統(tǒng)服務(wù)器中常用的軟件工具包,可以用來監(jiān)控服務(wù)器的性能。比如可以監(jiān)控CPU、硬盤、網(wǎng)絡(luò)等數(shù)據(jù),我們可以用來進(jìn)行分析服務(wù)器的性能和資源的使用效率。我們將在在這篇文章中學(xué)習(xí)、使用Sysstat監(jiān)控工具包的安裝和常用命令。
Linux下,我們多用ssh鏈接服務(wù)器遠(yuǎn)程操控。對(duì)于系統(tǒng)的監(jiān)控必不可少,sysstat很不錯(cuò)的監(jiān)控工具包。
對(duì)sysstat做一個(gè)介紹:“SYSSTAT是一個(gè)軟件包,包含監(jiān)測(cè)系統(tǒng)性能及效率的一組工具,這些工具對(duì)于我們收集系統(tǒng)性能數(shù)據(jù),比如CPU使用率、硬盤和網(wǎng)絡(luò)吞吐數(shù)據(jù),這些數(shù)據(jù)的收集和分析,有利于我們判斷系統(tǒng)是否正常運(yùn)行,是提高系統(tǒng)運(yùn)行效率、安全運(yùn)行服務(wù)器的得力助手”。
Linux下Sysstat性能監(jiān)控工具的安裝
目前主流的Linux系統(tǒng)里都自帶有sysstat的集成包
1、Ubuntu下安裝方法見 sysstat 12.1.3 發(fā)布這篇文章 https://www.linuxidc.com/Linux/2019-02/156951.htm
或者 apt-get install sysstat
2、Git安裝包安裝
yum install -y git
git clone git://github.com/sysstat/sysstat
cd sysstat
./configure
make &&make install
CentOS/Red Hat平臺(tái)下我們可以通過下列命令安裝:
yum -y install sysstat
3、檢查是否成功(截止2019年8月15日,sysstat 最新版本為12.1.6),安裝完畢之后,用命令檢查是否可以看到當(dāng)前版本。
linuxidc@linuxidc:~/www.linuxidc.com$ sar -V
sysstat 版本 12.1.6
(C) Sebastien Godard (sysstat <at> orange.fr)
如下圖:
看到上圖,就表示Sysstat安裝成功。
Linux下sysstat使用方法:
sysstat工具包包含的工具:
- IOStat 工具提供CPU使用率及硬盤吞吐效率的數(shù)據(jù); #比較核心的工具
- mpstat 工具提供單個(gè)處理器或多個(gè)處理器相關(guān)數(shù)據(jù);
- pidstat: 關(guān)于運(yùn)行中的進(jìn)程/任務(wù)、CPU、內(nèi)存等的統(tǒng)計(jì)信息
- sar 工具負(fù)責(zé)收集、報(bào)告并存儲(chǔ)系統(tǒng)活躍的信息; #統(tǒng)計(jì)數(shù)據(jù)的核心工具
- sa1 工具負(fù)責(zé)收集并存儲(chǔ)每天系統(tǒng)動(dòng)態(tài)信息到一個(gè)二進(jìn)制的文件中。它是通過計(jì)劃任務(wù)工具cron來運(yùn)行,是為sadc所設(shè)計(jì)的程序前端程序;
- sa2工具負(fù)責(zé)把每天的系統(tǒng)活躍性息寫入總結(jié)性的報(bào)告中。它是為sar所設(shè)計(jì)的前端 ,要通過cron來調(diào)用
- sadc 是系統(tǒng)動(dòng)態(tài)數(shù)據(jù)收集工具,收集的數(shù)據(jù)被寫一個(gè)二進(jìn)制的文件中,它被用作sar工具的后端;
- sadf 顯示被sar通過多種格式收集的數(shù)據(jù);
- nfsiostat: NFS(Network File System)的I/O統(tǒng)計(jì)信息。
- cifsiostat: CIFS(Common Internet File System)的統(tǒng)計(jì)信息
主要說明其所包含的工具sadc、sdaf、sar、iostat、mpstat的用法。
查看命令的參數(shù): xxx --help
[ <interval> [ <count> ] ] [ <outfile> ]
間隔 s 次數(shù) 輸出文件
1、iostat
linuxidc@linuxidc:~/www.linuxidc.com$ iostat --help
用法: iostat [ 選項(xiàng) ] [ <時(shí)間間隔> [ <次數(shù)> ] ]
選項(xiàng):
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <用戶組名> ] [ -p [ <設(shè)備> [,...] | ALL ] ]
[ <設(shè)備> [...] | ALL ]
如下圖:
參數(shù)釋義:
-c : 僅顯示cpu的狀態(tài)
-d : 僅顯示存儲(chǔ)設(shè)備的狀態(tài),不可以和-c一起使用
-k :默認(rèn)顯示的是讀入讀出的block信息,用-k可以改成KB大小來顯示 -m
-t : 顯示日期
-p device | ALL :
device為某個(gè)設(shè)備或者某個(gè)分區(qū),如果使用ALL,就表示要顯示所有分區(qū)和設(shè)備的信息
示例:
linuxidc@linuxidc:~/www.linuxidc.com$ iostat -c 1 3
Linux 5.2.5-050205-generic (linuxidc) 08/15/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.28 0.07 5.65 9.88 0.00 80.12
avg-cpu: %user %nice %system %iowait %steal %idle
6.78 0.00 27.97 0.00 0.00 65.25
avg-cpu: %user %nice %system %iowait %steal %idle
2.00 0.00 4.00 0.00 0.00 94.00
-x 顯示擴(kuò)展?fàn)顟B(tài),顯示出更多內(nèi)容
linuxidc@linuxidc:~/www.linuxidc.com$ iostat -x
Linux 5.2.5-050205-generic (linuxidc) 08/15/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.25 0.07 5.53 9.61 0.00 80.55
如下圖:
說明:
rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目。即 delta(rmerge)/s
wrqm/s: 每秒進(jìn)行 merge 的寫操作數(shù)目。即 delta(wmerge)/s
r/s: 每秒完成的讀 I/O 設(shè)備次數(shù)。即 delta(rio)/s
w/s: 每秒完成的寫 I/O 設(shè)備次數(shù)。即 delta(wio)/s
rsec/s: 每秒讀扇區(qū)數(shù)。即 delta(rsect)/s
wsec/s: 每秒寫扇區(qū)數(shù)。即 delta(wsect)/s
rkB/s: 每秒讀K字節(jié)數(shù)。是 rsect/s 的一半,因?yàn)槊可葏^(qū)大小為512字節(jié)。(需要計(jì)算)
wkB/s: 每秒寫K字節(jié)數(shù)。是 wsect/s 的一半。(需要計(jì)算)
avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊(duì)列長度。即 delta(aveq)/s/1000 (因?yàn)閍veq的單位為毫秒)。
await: 平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說一秒中有多少時(shí)間 I/O 隊(duì)列是非空的。
delta(use)/s/1000 (因?yàn)閡se的單位為毫秒)如果 %util 接近 100%,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。
idle小于70% IO壓力就較大了,一般讀取速度有較多的wait. #CPU空閑等待時(shí)間
2、mpstat
mpstat 用于多處理器系統(tǒng)中的CPU的利用率的統(tǒng)計(jì)。細(xì)化到具體某個(gè)cpu的狀態(tài)時(shí)可以使用參數(shù)-P,處理器的ID從0開始
linuxidc@linuxidc:~/www.linuxidc.com$ mpstat --help
用法: mpstat [ 選項(xiàng) ] [ <時(shí)間間???> [ <次數(shù)> ] ]
選項(xiàng):
[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]
[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <CPU_列表> | ALL } ]
linuxidc@linuxidc:~/www.linuxidc.com$ mpstat -P 0 1 2
說明:
%user 顯示在用戶級(jí)別(Application)運(yùn)行使用 CPU 總時(shí)間的百分比。
%nice 顯示在用戶級(jí)別,用于nice操作,所占用 CPU 總時(shí)間的百分比。
%system 在核心級(jí)別(kernel)運(yùn)行所使用 CPU 總時(shí)間的百分比。
%iowait 顯示用于等待I/O操作占用 CPU 總時(shí)間的百分比。
%irq 顯示在interval時(shí)間段內(nèi),硬中斷占用的CPU總時(shí)間。
%soft 顯示在interval時(shí)間段內(nèi),軟中斷占用的CPU總時(shí)間。
%steal 管理程序(hypervisor)為另一個(gè)虛擬進(jìn)程提供服務(wù)而等待虛擬CPU的百分比。
%idle 顯示 CPU 空閑時(shí)間占用CPU總時(shí)間的百分比。
intr/s 在internal時(shí)間段里,每秒CPU接收的中斷的次數(shù)。
3、sadc
sadc 位于/usr/local/lib/sa/目錄中(Ubuntu 18.04 LTS),如果你沒有設(shè)置可執(zhí)行路徑,要用絕對(duì)路徑來運(yùn)行。
sdac只是一個(gè)搜集寫入工具,并不直接回顯于屏幕上。sadc 是把數(shù)據(jù)寫在一個(gè)二進(jìn)制的文件中,如果想查看數(shù)據(jù)內(nèi)容,需要用sadf工具來顯示。
linuxidc@linuxidc:~/www.linuxidc.com$ /usr/local/lib/sa/sadc --help
用法: /usr/local/lib/sa/sadc [ 選項(xiàng) ] [ <時(shí)間間隔> [ <次數(shù)> ] ] [ <輸出文件> ]
選項(xiàng):
[ -C <注釋> ] [ -D ] [ -F ] [ -f ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]
如下圖:
注意:此工具中的參數(shù)都是可選的,如果沒有指定任何參數(shù)
比如 /usr/local/lib/sa/sadc - (后面的“-”是必須的,少了會(huì)出亂碼和報(bào)錯(cuò)),則會(huì)輸出數(shù)據(jù)到 /var/log/sa/目錄下的一個(gè)文件中。
要通過sadf 或sar工具來查看。
linuxidc@linuxidc:~/www.linuxidc.com$ ll /var/log/sa/
總用量 12
drwxr-xr-x 2 root root 4096 Aug 15 01:54 ./
drwxrwxr-x 18 root syslog 4096 Aug 15 01:26 ../
-rw-r--r-- 1 root root 1064 Aug 15 02:42 sa15
linuxidc@linuxidc:~/www.linuxidc.com$ sadf /var/log/sa/sa15
linuxidc -1 2019-08-15 06:54:24 UTC LINUX-RESTART (1 CPU)
linuxidc -1 2019-08-15 07:20:40 UTC LINUX-RESTART (1 CPU)
linuxidc -1 2019-08-15 07:42:44 UTC LINUX-RESTART (1 CPU)
如下圖:
4、sadf
sadf 能從二進(jìn)制文件中提取sar所收集的數(shù)據(jù);顯示的格式不如sar直觀,其主要用于導(dǎo)出為csv、xml等格式的文件,方便導(dǎo)入數(shù)據(jù)庫或Excel等程序.
linuxidc@linuxidc:~/www.linuxidc.com$ sadf --help
用法: sadf [ 選項(xiàng) ] [ <時(shí)間間隔> [ <次數(shù)> ] ] [ <數(shù)據(jù)文件> | -[0-9]+ ]
選項(xiàng):
[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]
[ -O <選項(xiàng)> [,...] ] [ -P { <cpu> [,...] | ALL } ]
[ --dev=<設(shè)備列表> ] [ --fs=<文件系統(tǒng)列表> ] [ --iface=<iface_列表> ]
[ -s [ <時(shí):分[:秒]> ] ] [ -e [ <時(shí):分[:秒]> ] ]
[ -- <sar_選項(xiàng)> ]
如下圖:
5、sar
sar 工具比較強(qiáng)大,既能收集系統(tǒng)CPU、硬盤、動(dòng)態(tài)數(shù)據(jù),也能顯示動(dòng)態(tài)顯示,更能查看二進(jìn)制數(shù)據(jù)文件;sar 的應(yīng)用比較多,而且也比較復(fù)雜,數(shù)據(jù)更為精確。我們只了解一下常用的內(nèi)容就行,大多數(shù)內(nèi)容我們了解就行。
linuxidc@linuxidc:~/www.linuxidc.com$ sar --help
用法: sar [ 選項(xiàng) ] [ <時(shí)間間隔> [ <次數(shù)> ] ]
主要選項(xiàng)和報(bào)告(報(bào)告名以方括號(hào)分隔):
-B 分頁狀況 [A_PAGE]
-b I/O 和傳輸速率信息狀況 [A_IO]
-d 塊設(shè)備狀況 [A_DISK]
-F [ MOUNT ]
文件系統(tǒng)統(tǒng)計(jì)信息 [A_FS]
-H 巨大頁面利用率 [A_HUGE]
-I { <中斷列表> | SUM | ALL }
中斷信息狀況 [A_IRQ]
-m { <關(guān)鍵字> [,...] | ALL }
電源管理統(tǒng)計(jì)信息 [A_PWR_...]
關(guān)鍵字:
CPU CPU 瞬時(shí)時(shí)鐘頻率
FAN 風(fēng)扇速度
......
如下圖:
參數(shù)說明:
-A 顯示所有歷史數(shù)據(jù),通過讀取/var/log/sar目錄下的所有文件,并把它們分門別類的顯示出來;
-b 通過設(shè)備的I/O中斷讀取設(shè)置的吞吐率;
-B 報(bào)告內(nèi)存或虛擬內(nèi)存交換統(tǒng)計(jì);
-c 報(bào)告每秒創(chuàng)建的進(jìn)程數(shù);
-d 報(bào)告物理塊設(shè)備(存儲(chǔ)設(shè)備)的寫入、讀取之類的信息,如果直觀一點(diǎn),可以和p參數(shù)共同使用,-dp
-f 從一個(gè)二進(jìn)制的數(shù)據(jù)文件中讀取內(nèi)容,比如 sar -f filename
-i interval 指定數(shù)據(jù)收集的時(shí)間,時(shí)間單位是秒;
-n 分析網(wǎng)絡(luò)設(shè)備狀態(tài)的統(tǒng)計(jì),后面可以接的參數(shù)有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV
-o 把統(tǒng)計(jì)信息寫入一個(gè)文件,比如 -o filename ;
-P 報(bào)告每個(gè)處理器應(yīng)用統(tǒng)計(jì),用于多處理器機(jī)器,并且啟用SMP內(nèi)核才有效;
-p 顯示友好設(shè)備名字,以方便查看,也可以和-d和-n 參數(shù)結(jié)合使用,比如 -dp 或-np
-r 內(nèi)存和交換區(qū)占用統(tǒng)計(jì);
-R
-t 這個(gè)選項(xiàng)對(duì)從文件讀取數(shù)據(jù)有用,如果沒有這個(gè)參數(shù),會(huì)以本地時(shí)間為標(biāo)準(zhǔn) 讀出;
-u 報(bào)告CPU利用率的參數(shù);
-v 報(bào)告inode,文件或其它內(nèi)核表的資源占用信息;
-w 報(bào)告系統(tǒng)交換活動(dòng)的信息; 每少交換數(shù)據(jù)的個(gè)數(shù);
-W 報(bào)告系統(tǒng)交換活動(dòng)吞吐信息;
#高版本新加的
-x 用于監(jiān)視進(jìn)程的,在其后要指定進(jìn)程的PID值;
-X 用于監(jiān)視進(jìn)程的,但指定的應(yīng)該是一個(gè)子進(jìn)程ID
注: 如果只用sar 命令,sar就是讀取 /var/log/sa目錄下最近系統(tǒng)狀態(tài)文件。sar -A 讀取/var/log/sa目錄下所有文件數(shù)據(jù)。
linuxidc@linuxidc:~/www.linuxidc.com$ sar -u 1 5
Linux 5.2.5-050205-generic (linuxidc) 08/15/2019 _x86_64_ (1 CPU)
02:57:46 AM CPU %user %nice %system %iowait %steal %idle
02:57:47 AM all 0.00 0.00 2.04 0.00 0.00 97.96
02:57:48 AM all 8.25 0.00 5.15 0.00 0.00 86.60
02:57:49 AM all 2.08 0.00 0.00 0.00 0.00 97.92
02:57:50 AM all 27.27 0.00 12.12 0.00 0.00 60.61
02:57:51 AM all 44.58 0.00 16.87 0.00 0.00 38.55
平均時(shí)間: all 15.64 0.00 6.98 0.00 0.00 77.38
sar -n DEV 2 4 #查看網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)吞吐量
linuxidc@linuxidc:~/www.linuxidc.com$ sar -n DEV 2 4
如下圖:
參數(shù)釋義:
IFACE:設(shè)備名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的所有包的數(shù)量 ;
txbyt/s:每秒發(fā)送的所有包的數(shù)量 ;
txbyt/s:每秒發(fā)送的所有包的大小;
rxcmp/s:每秒收到數(shù)的據(jù)壓縮包的數(shù)量;
txcmp/s :每秒傳輸?shù)臄?shù)據(jù)壓縮包的數(shù)據(jù);
rxmcst/s: 每秒收到的多播的包數(shù)量;
想獲取某塊網(wǎng)卡的流量情況,我們可以使用grep過濾。 #sar -n DEV 2 4 | grep eth0
linuxidc@linuxidc:~/www.linuxidc.com$ sudo /usr/local/lib/sa/sadc -
[sudo] linuxidc 的密碼:
linuxidc@linuxidc:~/www.linuxidc.com$ /usr/local/lib/sa/sadc 1 10 sa000
linuxidc@linuxidc:~/www.linuxidc.com$ sar -f sa000
Linux 5.2.5-050205-generic (linuxidc) 08/15/2019 _x86_64_ (1 CPU)
01:55:04 AM CPU %user %nice %system %iowait %steal %idle
01:55:07 AM all 24.77 0.00 75.23 0.00 0.00 0.00
01:55:08 AM all 30.00 0.00 70.00 0.00 0.00 0.00
01:55:09 AM all 16.67 0.00 83.33 0.00 0.00 0.00
01:55:10 AM all 26.67 0.00 73.33 0.00 0.00 0.00
01:55:11 AM all 19.35 0.00 80.65 0.00 0.00 0.00
01:55:12 AM all 25.81 0.00 74.19 0.00 0.00 0.00
01:55:13 AM all 16.67 0.00 33.33 50.00 0.00 0.00
01:55:14 AM all 18.18 0.00 28.57 53.25 0.00 0.00
01:55:15 AM all 22.86 0.00 38.57 38.57 0.00 0.00
平均時(shí)間: all 22.11 0.00 57.02 20.87 0.00 0.00
6、pidstat
linuxidc@linuxidc:~/www.linuxidc.com$ pidstat --help
用法:pidstat [ 選項(xiàng) ] [ <時(shí)間間隔> [ <計(jì)數(shù)> ] ] [ -e <程序> <參數(shù)> ]
選項(xiàng):
[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <用戶名> ] ]
[ -u ] [ -V ] [ -v ] [ -w ] [ -C <命令> ] [ -G <進(jìn)程名> ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
[ --dec={ 0 | 1 | 2 } ] [ --human ]
如下圖:
linuxidc@linuxidc:~/www.linuxidc.com$ pidstat -dl