Sysstat是linux系統上的狀態查看工具,包含監測系統性能及效率的一組工具,這些工具對於我
們收集系統性能數據,比如CPU使用率、硬盤和網絡吞吐數據,這些數據的收集和分析,有利於
我們判斷系統是否正常運行,是提高系統運行效率、安全運行服務器的得力助手;
Sysstat 軟件包集成如下工具:
iostat : reports CPU statistics and input/output statistics for devices, partitions
and network filesystems.
報告cpu使用率以及硬盤網絡的吞吐量。
mpstat:reports individual or combined processor related statistics.
提供單個處理器或多個處理器相關數據;
pidstat:reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.
報告linux上的進程io、cpu、內存等的使用率。
sar: collects, reports and saves system activity information (CPU, memory,
disks, interrupts, network interfaces, TTY, kernel tables,etc.)
工具負責收集、報告並存儲系統活躍的信息;
sadc: is the system activity data collector, used as a backend for sar.是系統動態
數據收集工具,收集的數據被寫一個二進制的文件中,它被用作sar工具的後端;
sa1: collects and stores binary data in the system activity daily data file. It is a
front end to sadc designed to be run from cron.
工具負責收集並存儲每天系統動態信息到一個二進制的文件中。它是通過計劃任務工具
cron來運行,是爲sadc所設計的程序前端程序;
sa2: writes a summarized daily activity report. It is a front end to sar designed
to be run from cron.
工具負責把每天的系統活躍性息寫入總結性的報告中。它是爲sar所設計的前端 ,要通
過cron來調用
sadf: displays data collected by sar in multiple formats (CSV, XML, etc.) This is
useful to load performance data into a database, or import them in a
spreadsheet to make graphs.
顯示被sar通過多種格式收集的數據;
nfsiostat: reports input/output statistics for network filesystems (NFS).
報告nfs的吞吐率。
cifsiostat:reports CIFS statistics. 統計cifs的使用情況。
@安裝:在centos上可以通過yum安裝Sysstat
yum install sysstat
但是安裝的不是最新版本,好多功能沒有,所以建議用源代碼安裝。
首先下載最新版sysstat-9.1.5.tar.gz
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-9.1.5.tar.gz
tar zxvf sysstat-9.1.5.tar.gz
cd sysstat-9.1.5
./configure
make
make install
如果沒有指定--prefix,默認安裝在/usr/local下。
Sysstat 通過a1 和sa2收集系統信息,如果要把收到的信息自動保存到文件中,必須通過cron
爲sa1 和sa2 做計劃任務。通過crontab –e 添加如下內容。
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 -d 1 1
# 0 * * * * root /usr/lib/sa/sa1 -d 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 –A
@Sysstat 工具集介紹:通用參數說明:這些命令中,有些事收集統計,有些事報告顯示統計,有些收集的同時也能報
告收集到的信息,下面每個命令都有說明。
統計採集的命令會把結果寫入文件,如果文件不指定,則寫入默認位置
既能統計也能顯示報告的命令把結果寫到控制檯,同時也可以用參數指定寫入的文件,這些要顯
示的統計可能來自當前統計,也可能來自以前統計保存的文件;
只能顯示報告的命令需要指定讀取的文件,如果文件不存在則會從默認位置讀取。
【注】默認位置,通常在/var/log/sa/sadd文件中,dd表示當前的天數,如sa1,如果指定的文
件名爲”-”,也表示默認位置
這些命令中大部分都有[ interval [ count ] ] 可選
參數,interval參數定義統計或顯示統計的間隔,count參數定義了統計或顯示統計的個數;在
顯示統計信息的時候
**如果不指定interval參數或者指定爲0,
**則當統計信息來源以前保存的文件,則顯示文件所有內容;
**如果來源於目前當前的的統計,則只顯示一次;
**如果指定了interval,count沒有指定或爲0,
**如果要顯示的統計來源來自文件,則按照interval間隔顯示文件全部內容。
**如果文件內容來自當前命令的統計,則不停的統計統計並顯示。
**如果指定了interval、count,則按照interval間隔顯示count次。
pidstat:(報告)pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] | SELF | ALL } ] [ -r ]
[ -s ] [ -t ] [ -T { TASK | CHILD | ALL } ] [ -u ] [ -V ] [ -w ] [ interval [ count ] ]
-d | 統計io狀況 |
-C string | 只顯示名字中包含string的進程 |
-I | 在smp環境中,顯示每個cpu的佔用率 |
-l | 顯示進程命令的名字以及參數 |
-p | 進程pid |
-r | 報告頁錯誤和內存使用情況。 |
-s | 報告棧的使用情況。 |
-t | 報告進程相關的線程情況 |
-T | 定義監視的類型(TASK:只統計指定進程;CHILD:統計指定進程以及子進程;ALL統計指定進程所屬的進程及其所有子進程) |
-u | 報告cpu使用率 |
PID:進程pid
kB_rd/s:每秒鐘進程讀磁盤的字節數(kB)
kB_wr/s:每秒鐘進程寫磁盤的字節數(KB)
kB_ccwr/s:寫磁盤被取消的字節數。
Command:進程的命令名
-r:顯示頁中斷和內存信息PID:進程pid
minflt/s:每秒鐘產生的次中斷
majflt/s:每秒鐘產生的主中斷
VSZ:使用的虛擬內存(KB)
RSS:實際駐留"在內存中"的內存數
Command:進程的命令名
-s:堆棧使用情況pid:進程pid
StkSize:爲進程堆棧預留的內存大小,
StkRef:用作堆棧的內存大小。
Command:進程的命令名
-u:報告cpu的使用率PID :進程pid
%usr :用戶態級cpu的使用率
%system :系統級的cpu使用率
%guest :運行虛擬處理器消耗的cpu。
%CPU :cpu的佔用率
CPU :進程佔用的cpu編號
Command:進程的命令字
-w:進程切換統計(只有在內核大於2.6.23纔有用) sadc :(採集並寫入文件)位於 /usr/lib/sa目錄中,sadc 是把數據寫在一個二進制的文件中,需要用sadf工具來顯示保存
的內容;/usr/local/lib/sa/sadc [ -C comment ] [ -S { INT | DISK | SNMP | IPV6 |
POWER | XDISK | ALL | XALL } ] [ -F ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]
-F 強制把數據寫入文件;
-L 在寫或者刪除文件的時候獲得獨佔鎖,如果有不能獲得鎖,會在下一個間隔重試獲得鎖。防
止多個進程同時寫文件,導致文件損壞。
-S { INT | DISK | SNMP | IPV6 | POWER | XDISK | ALL | XALL }:指定哪種數據要被
sadc收集。
-V 版本信息
interval 表示時間間隔,單位是秒,比如3 ;
count 統計數據的次數,也是一個數字;
outfile 輸出統計到outfile文件;
sadc在interval間隔內抽樣系統數據count次,並以二進制形式寫入outfile或標準輸出,如果輸入
文件設置爲-,則使用sysstat默認的路徑,通常在/var/log/sa/sadd文件中,dd表示當前的天數,
如sa1。默認sadc收集除了中斷和磁盤以爲的所有的數據,如果要收集磁盤和中斷數據,必須用-S
明確指明。當count參數沒有指定時,sadc永遠不停的寫入收集到的數據;當count和interval都
沒有指定的時候,會創建一個空文件。XDISK是DISK的一個擴展,它比DISK多統計分區的信息。
ALL包括除了XDISK,XALL包括所有。
sar :(收集報告並保存)-A | 顯示所有歷史數據 |
-b | io吞吐率的統計 |
-B | 報告頁信息 |
-d | 報告物理塊設備(存儲設備)的寫入、讀取之類的信息,如果直觀一點,可以和p參數共同使用,-dp |
-f | 從一個二進制的數據文件中讀取內容 |
-i interval | 指定數據收集的時間,時間單位是秒 |
-e[ hh:mm:ss ] | 設置結束的時間 |
-n | 顯示網絡統計 |
-o | 把統計信息寫入一個文件 |
-P | 報告每個處理器應用統計,用於多處理器機器,並且啓用SMP內核纔有效; |
-p | 顯示友好設備名字,以方便查看 |
-q | 顯示運行隊列的統計和負載 |
-r | 顯示內存使用情況 |
-R | 顯示內存統計 |
-S | 顯示交換分區統計 |
-t | 這個選項對從文件讀取數據有用,如果沒有這個參數,會以本地時間爲標準讀出 |
-u | 報告CPU利用率的參數 |
-v | 報告inode, 文件或其它內核表的資源佔用信息; |
sar可以收集、報告、存儲系統活動信息。具體分一下情況:
##當不指定interval參數,會全部顯示以前收集到的文件內容。如果指定-f標誌,sar從-f指定
的以前保存的文件中提取內容,然後寫入標準輸出,如果沒有指定-f標誌,將從默認的日報文
件(/var/log/sadd)讀取。如果-f指定的文件或者默認位置沒有文件,則提示沒有那個文件目
錄或目錄錯誤。
##當指定interval參數,如果指定了count則以interval爲間隔顯示count條,接下來說要顯示
的數據來源:果指定-f標誌,sar從-f指定的以前保存的文件中提取內容,然後寫入標準輸出
(-f -表示默認位置);如果沒有指定-f標誌,將從系統收集信息並顯示到控制檯,如果指定了
-o標誌,收集的數據同時會寫到-o指定的文件中(-o -表示默認位置)和控制檯。
如果沒有-P標誌,sar報告系統範圍中整體cpu的使用的平均值;反之如果指定了-P標誌,sar將只
報告某個cpu的使用狀況;當-P ALL標誌指定,每個單獨的cpu和整體所有cpu的使用情況都被報告。
如果同時需要採樣和統計報告,爲sar指定輸出文件將使得這很便利,運行如下命令:
sar -o datafile interval count >/dev/null 2>&1 &
所有被捕獲的數據會以二進制形式寫入datafile中,這些數據可以用sar -f顯示,如果不指定count參數,則文件
-b:io相關:tps :每秒總共的物理設備的請求次數
rtps :每秒總共的物理設備的寫請求次數
wtps :每秒的io寫請求次數
bread/s :每秒的io讀請求扇區數(1扇區=512byte)
bwrtn/s :每秒的io寫請求扇區數
-B:頁相關信息pgpgin/s :每秒系統從磁盤置入的字節數(KB)
pgpgout/s :每秒系統置出到磁盤上的字節數(KB)
fault/s :每秒鐘系統產生的頁中斷(major + minor)。
majflt/s :每秒產生的主中斷次數(見【注】)。
pgfree/s :每秒被放入空閒隊列中的頁個數。
pgscank/s :每秒被頁面交換守護進程kswapd掃描的頁個數。
pgscand/s :每秒直接被掃描的頁個數。
pgsteal/s : 每秒鐘從cache中被清除來滿足內存需要的頁個數。
%vmeff:每秒清除的頁佔總掃描頁的百分比。
-d:報告塊設備相關信息DEV :設備名
tps :設備每秒的傳輸次數。
rd_sec/s :每秒讀的扇區數。
wr_sec/s :每秒寫的扇區數。
avgrq-sz :平均的請求扇區數。
avgqu-sz :設備的平均請求的隊列長度。
await :平均每次io花費的時間(包括服務時間的隊列等待時間)
svctm :(這個參數不準確,在將來版本中會去掉)
%util:一秒中有百分之多少的時間用於I/O 操作
-m { keyword [,...] | ALL }:報告cpu、風扇、電源、溫度 相關信息。 -n { keyword [,...] | ALL }:顯示網絡統計信息keyword 值:DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP,
SOCK6, IP6, EIP6, ICMP6, EICMP6 and UDP6
**DEV:
IFACE :網絡接口的名字
rxpck/s :每秒收到的包數量
txpck/s :每秒發出的包的數量
rxkB/s :每秒收到的字節數(KB)
txkB/s :每秒發出的字節數(KB)
rxcmp/s :每秒收到的壓縮包的數量
txcmp/s :每秒發出的壓縮包的數量。
rxmcst/s :每秒收到的廣播包的數量。
**EDEV:網絡錯誤的信息
IFACE :網絡接口的名字
rxerr/s :每秒收到的非法包的個數
txerr/s :每秒發出的非法包的數量
coll/s :遭遇衝突的發送包數量。
rxdrop/s :因爲緩衝充滿,每秒鐘丟棄的已接收數據包數
txdrop/s :因爲緩衝充滿,每秒鐘丟棄的已發送數據包數
txcarr/s :發送數據包時,每秒載波錯誤數
rxfram/s :每秒接收數據包的幀對齊錯誤數
rxfifo/s :接收的數據包每秒FIFO過速的錯誤數
txfifo/s :發送的數據包每秒FIFO過速的錯誤數
**SOCK:套接字信息
totsck:使用的套接字總數量
tcpsck:使用的TCP套接字數量
udpsck:使用的UDP套接字數量
rawsck:使用的raw套接字數量
ip-frag:使用的IP分片數量
tcp-tw:time_wait的套接字數量
**IP:
irec/s :每秒收到的數據包(包括錯誤)
fwddgm/s :每秒收到非本機終點ip包(即包的終點ip不是本機)
idel/s :每秒收到的成功遞送的ip用戶協議包。
orq/s :每秒應答的ip用戶協議包。
asmrq/s :每秒收到的需要重組的ip分片。
asmok/s :每秒成功重組的數據包。
fragok/s :本機上每秒被分片的數據包
fragcrt/s :每秒產生的ip分片數
**TCP:
active/s :tcp連接從CLOSED狀態遷移到SYN-SENT狀態的次數。
passive/s :tcp連接從LISTEN狀態遷移到SYN-RCVD狀態的次數。
iseg/s :每秒收到的數據片段。
oseg/s :每秒發送的數據片段。
**UDP:
idgm/s :每秒收到的數據報的個數
odgm/s :每秒發送的數據報個數
noport/s :每秒鐘收到的,其指定端口沒有應用程序的數據報個數
idgmerr/s :每秒鐘收到的,不能被遞送的,除了其指定端口沒有應用程序的數據報個數
-q:顯示運行隊列長度和負載runq-sz :運行隊列的長度,即等待 CPU 以便運行的內核線程數。通常,此值應小於 2。如果此值持續偏高,
則表明系統可能計算密集 (CPU-bound)。
plist-sz :任務隊列中的任務個數
ldavg-1:系統最後1分鐘的平均負載
ldavg-5 :系統最後5分鐘的平均負載
ldavg-15:系統最後15分鐘的平均負載
-r:顯示內存統計kbmemfree:可用的內存數(kB),即未被分配的內存。
kbmemused:使用的內存,不包括內核自己使用的內存
%memused:內存使用百分比
kbbuffers :被內核用作buffer緩衝的內存
kbcached :被內核用作cache緩衝的內存
kbcommit :保證當前工作所需要的內存(KB)
%commit:當前需要的內存佔總內存的百分比。
-R:內存統計frmpg/s: 每秒被釋放的內存頁數,負值表示系統已經分配了的內存頁數。注意:依據機器體系的不同,內存頁
的大小有4kB或8kB
bufpg/s :每秒系統用於buffers的附加的內存頁數。負值表示較少的頁數用於系統buffers
campg/s : 每秒系統用於cached的附加的內存頁數。負值表示較少的頁數用於系統cached
-S:交換分區的統計kbswpfree:空閒的交換分區(KB)
kbswpused:使用的交換分區(KB)
%swpused:交換分區使用百分比
kbswpcad:用於cache的swap內存數
%swpcad:用於cache的swap內存百分比
-W :交換分區的統計
pswpin/s:每秒鐘換入的交換頁數量。
pswpout/s:每秒鐘置出的交換頁數量。
-w:報告進程的創建和調度信息
proc/s:每秒創建的進程。
cswch/s:沒秒上下文交換的進程。
-v:顯示索引節點,文件和其他內核表。dentunusd:在目錄條目中沒有使用的緩衝條目。
file-nr:被系統使用的文件句柄數量。
inode-nr:使用的索引節點數量。
pty-nr:正在使用的pty數量。
-u [ ALL ]:顯示cpu統計%user :用戶態使用的cpu百分比,不包括虛擬處理器。
%usr :用戶態使用的cpu百分比,包括虛擬處理器。
%nice :用戶態nice優先級進程佔用的cpu百分比。
%sys :內核態佔用的cpu百分比。
%iowait :有突出io請求、cpu空閒的百分比。
%steal :cpu等待系統進程調度的百分比。
%irq :花費在硬件中斷上的cpu百分比。
%soft :花費在軟件中斷上的cpu百分比。
%guest :花費在運虛擬處理器的cpu百分比。
%idle:沒有io操作、cpu處於空閒的cpu百分比。
【注】缺頁中斷可分爲主缺頁中斷(Major Page Fault)和次缺頁中斷(Minor Page Fault),
要從磁盤讀取數據而產生的中斷是主缺頁中斷;數據已經被讀入內存並被緩存起來,從內存緩存
區中而不是直接從硬盤中讀取數據而產生的中斷是次缺頁中斷。