歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

系統狀態查看工具Sysstat


  1、關於 Sysstat;

Sysstat 是一個軟件包,包含監測系統性能及效率的一組工具,這些工具對於我們收集系統性能數據,比如CPU使用率、硬盤和網絡吞吐數據,這些數據的收集和分析,有利於我們判斷系統是否正常運行,是提高系統運行效率、安全運行服務器的得力助手;


Sysstat 軟件包集成如下工具:

* iostat 工具提供CPU使用率及硬盤吞吐效率的數據;
* mpstat 工具提供單個處理器或多個處理器相關數據;
* sar 工具負責收集、報告並存儲系統活躍的信息;
* sa1 工具負責收集並存儲每天系統動態信息到一個二進制的文件中。它是通過計劃任務工具cron來運行,
是為sadc所設計的程序前端程序;
* sa2 工具負責把每天的系統活躍性息寫入總結性的報告中。它是為sar所設計的前端 ,要通過cron來調用
* sadc 是系統動態數據收集工具,收集的數據被寫一個二進制的文件中,它被用作sar工具的後端;
* sadf 顯示被sar通過多種格式收集的數據;


2、安裝 Sysstat和運行;

對於大多數系統,都有這個軟件包,軟件名以sysstat開頭。我們可以通過網絡安裝它;


2.1 對於Debian或deb軟件包為基礎的系統;

[root@localhost ~]# apt-get install sysstat


2.2 Fedora 系統或以RPM包管理的系統;

[root@localhost ~]# yum install sysstat

如果是RPM包,請用下面的命令來安裝;

[root@localhost ~]#rpm -ivh sysstat*.rpm

如果您想了解yum 和rpm 軟件包管理工具,請參考:《Fedora / Redhat 軟件包管理指南》


2.3 Slackware 系統,對於Slackware系統;

[root@localhost ~]# installpkg sysstat*.pkg


2.4 通過源碼包編譯安裝;

如果您是通過源碼包安裝,請到官方下源源碼包 http://perso.wanadoo.fr/sebastien.godard,目前最新版本是 sysstat-6.1.2;

如果您想了想一下什麼是源碼包,請參考:《如何編譯安裝源碼包軟件》

[root@localhost ~]# tar zxvf sysstat-6.1.2.tar.gz
[beinan@localhost ~]$ cd sysstat-6.1.2
[beinan@localhost sysstat-6.1.2]#
[beinan@localhost sysstat-6.1.2]# make config
[beinan@localhost sysstat-6.1.2]# make
[beinan@localhost sysstat-6.1.2]# make install


2.5 關於 Sysstat 計劃任務;

如果您想得到Sysstat工具集所收集的系統信息自動存為某個文件中,你必須通過cron 為 sa1 和sa2 做計劃任務。我們可以通過修改用戶的crontab。在默認的情況下,Sysstat歷史信息將被存放在/var/log/sa文件中。如果想定義自己的計劃任務,請參考:《計劃任務工具 cron 的配置和說明》

在root用戶,通過 crontab -e 來添加下面的一段;

# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &
# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &
# Daily summary prepared at 19:05 5 19 * * * /usr/lib/sa/sa2 -A &

創建Sysstat的啟動腳本;

[root@localhost ~]# toUCh /etc/rc.d/init.d/sysstat
[root@localhost ~]# vi /etc/rc.d/init.d/sysstat

#!/bin/sh
# Begin $rc_base/init.d/sysstat
# Based on sysklogd script from LFS-3.1 and earlier.
# Rewritten by Gerard Beekmans - [email protected]
. /etc/sysconfig/rc



. $rc_functions
case "$1" in
start)
echo "Calling the system activity data collector (sadc)..."
/usr/lib/sa/sadc -F -L -
evaluate_retval
;;
*)
echo "Usage: $0 start"
exit 1
;;
esac
# End $rc_base/init.d/sysstat

[root@localhost ~]# chmod 755 /etc/rc.d/init.d/sysstat
[root@localhost ~]# ln -sf /etc/rc.d/init.d/sysstat /etc/init.d/sysstat

有了Sysstat的守護進程,這樣我們開機後,Sysstat的守護進程,就時時刻刻的為我們服務了。sa 、sa1或sa2自動把信息存在 /var/log/sa目錄的二進制文件中,我們可以通過sar工具來提取這些系統信息的歷史;

當然我們也可以通過手動的方法來打開Sysstat的守護程序,也就是我們前面所制作的sysstat;

[root@localhost ~]# /etc/rc.d/init.d/sysstat start
下面的方法也行;
[root@localhost ~]# /usr/lib/sa/sa1
[root@localhost ~]# /usr/lib/sa/sa2


3.Sysstat 工具集介紹;


3.1 sadc 工具,

sadc 位於 /usr/lib/sa目錄中,如果你沒有設置可執行路徑,要用絕對路徑來運行比較方便 ,/usr/lib/sa/sadc;sadc 是把數據寫在一個二進制的文件中,如果想查看數據內容,需要用sadf工具來顯示;


sadc 的用法;

/usr/lib/sa/sadc [ -d ] [ -F ] [ -I ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]

參數說明:

-d 報告硬盤設置的相關統計;
-F 強制把數據寫入文件;
-I 報告所有系統中斷數據;
interval 表示時間間隔,單位是秒,比如3 ;
count 統計數據的次數,也是一個數字;
outfile 輸出統計到outfile文件;

注意:此工具中的參數都是可選的,如果沒有指定任何參數,比如 /usr/lib/sa/sadc - ,則會輸出數據到 /var/log/sa/ 目錄下的一個文件中。我們要通過sadf 或sar工具來查看;

[root@localhost beinan]# /usr/lib/sa/sadc -
[root@localhost beinan]# ls /var/log/sa 注:列出所有sa目錄下的文件,根據文件的時間來判斷哪個文件是最新的;
[root@localhost beinan]# sar -f /var/log/sa/sa12

[root@localhost beinan]# sadf /var/log/sa/sa12

舉例:我們想把sadc收集到的數據寫到一個指定的文件中;

[root@localhost ~]# /usr/lib/sa/sadc 1 10 sa000
[root@localhost ~]# sar -f sa000

Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日

09時15分30秒 CPU %user %nice %system %iowait %idle
09時15分31秒 all 3.00 0.00 0.00 1.00 96.00
09時15分32秒 all 0.00 0.00 0.00 0.00 100.00
09時15分33秒 all 0.00 0.00 0.00 0.00 100.00
09時15分34秒 all 0.00 0.00 0.00 0.00 100.00
09時15分35秒 all 0.00 0.00 0.00 0.00 100.00
09時15分36秒 all 0.00 0.00 0.00 0.00 100.00
09時15分37秒 all 0.00 0.00 0.00 0.00 100.00
09時15分38秒 all 0.00 0.00 0.00 0.00 100.00
09時15分39秒 all 0.00 0.00 0.00 0.00 100.00
Average: all 0.33 0.00 0.00 0.11 99.56


注解:我們用sadc 收集系統動態數據,讓它收集1秒之內的10次動態信息; 然後通過sar 工具來查看系統的狀態。也可以用 sadf 來查看所收集的數據,但不是太直觀。您自己嘗試一下看看。查看sa000文件,用 sadf sa000 ;


3.2 sar 工具;

sar 工具比較強大,既能收集系統CPU、硬盤、動態數據,也能顯示動態顯示,更能查看二進制數據文件;sar 的應用比較多,而且也比較復雜,數據更為精確。我們只了解一下常用的內容就行,大多數內容我們了解就行;

用法:

sar [參數選項]

參數說明:

-A 顯示所有歷史數據,通過讀取/var/log/sar 目錄下的所有文件,並把它們分門別類的顯示出來;
-b 通過設備的I/O中斷讀取設置的吞吐率;
-B 報告內存或虛擬內存交換統計;
-c 報告每秒創建的進程數;
-d 報告物理塊設備(存儲設備)的寫入、讀取之類的信息,如果直觀一點,可以和p參數共同使用,-dp
-f 從一個二進制的數據文件中讀取內容,比如 sar -f filename
-i interval 指定數據收集的時間,時間單位是秒;
-n 分析網絡設備狀態的統計,後面可以接的參數有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV
-o 把統計信息寫入一個文件,比如 -o filename ;
-P 報告每個處理器應用統計,用於多處理器機器,並且啟用SMP內核才有效;
-p 顯示友好設備名字,以方便查看,也可以和-d 和-n 參數結合使用,比如 -dp 或-np
-r 內存和交換區占用統計;
-R
-t 這個選項對從文件讀取數據有用,如果沒有這個參數,會以本地時間為標准 讀出;
-u 報告CPU利用率的參數;


-v 報告inode, 文件或其它內核表的資源占用信息;
-w 報告系統交換活動的信息; 每少交換數據的個數;
-W 報告系統交換活動吞吐信息;
-x 用於監視進程的,在其後要指定進程的PID值;
-X 用於監視進程的,但指定的應該是一個子進程ID;

sar 應用舉例;

實例一: 如果只用sar 命令,sar就是讀取 /var/log/sa目錄下最近系統狀態文件。

[root@localhost ~]# sar
[root@localhost ~]# sar -A 注:讀取/var/log/sa目錄下所有文件數據;

如果我們想知道CPU的利用率;動態更新;下面的例子是每秒更新一次數據,總共更新五次;

[root@localhost ~]# sar -u 1 5
Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日

時間 CPU 利用率 nice值 系統占用 IO占用 空閒
11時19分34秒 CPU %user %nice %system %iowait %idle
11時19分35秒 all 2.97 0.00 0.00 0.00 97.03
11時19分36秒 all 11.11 0.00 9.09 0.00 79.80
11時19分37秒 all 21.78 0.00 6.93 0.00 71.29
11時19分38秒 all 15.00 0.00 0.00 0.00 85.00
11時19分39秒 all 8.00 0.00 0.00 0.00 92.00
Average: all 11.78 0.00 3.19 0.00 85.03

注解:

CPU:表示機器內所有的CPU;
%user 表示CPU的利用率;
%nice 表示CPU在用戶層優先級的百分比,0表示正常;
%system 表示當系統運行時,在用戶應用層上所占用的CPU百分比;
%iowait 表示請求硬盤I/0數據流出時,所占用CPU的百分比;
%idle 表示空閒CPU百分比,值越大系統負載越低;

您可以CPU利用率的動態信息輸出到一個文本文件中,然後通過more 來查看。

[root@localhost ~]# sar -u 1 5 > sar000.txt
[root@localhost ~]# more sar000.txt

也可以輸出到一個二進制的文件中,然後通過sar來查看;

[root@localhost ~]# sar -u 1 5 -o sar002
[root@localhost ~]# sar -f sar002

注:如果您把數據通過-o filename 輸出到一個二進制的文件中,是不能用文件內容查看工具more 、less或cat來查看的,應該用sar工具來查看,要加-f參數;

實例二:查看網絡設備的吞吐情況;

比如我們讓數據每秒更新一次,總共更新十次;

[root@localhost ~]# sar -n DEV 2 5
時間 IFACE rXPck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

第一字段:時間;
IFACE:設備名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的所有包的體積;
txbyt/s:每秒傳輸的所有包的體積;
rxcmp/s:每秒收到數據切割壓縮的包總數;
txcmp/s :每秒傳輸的數據切割壓縮的包的總數;
rxmcst/s: 每秒收到的多點傳送的包;

如果我們從事提取eth0設備(也就是網卡eth0)的信息;我們應該用grep 來過濾。然後再顯示出來;

[root@localhost ~]# sar -n DEV 2 5 grep eth0
11時52分37秒 eth0 1.00 1.00 97.51 97.51 0.00 0.00 0.00
11時52分39秒 eth0 1.01 1.01 98.49 98.49 0.00 0.00 0.00
11時52分41秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
11時52分43秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
11時52分45秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
Average: eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00

如果想知道網絡設備錯誤報告,也就就是用來查看設備故障的。應該用EDEV;比如下面的例子;

[root@localhost ~]# sar -n EDEV 2 5


3.3 iostat

iostat 是用來顯示 系統即時系統,比如CPU使用率,硬盤設備的吞吐率;

[root@localhost ~]# iostat
Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日

avg-cpu: %user %nice %system %iowait %idle
7.24 0.00 0.99 0.35 91.43

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 1.46 28.43 21.43 710589 535680


3.4 mpstat

mpstat 提供多處理器系統中的CPU的利用率的統計;mpstat 也可以加參數,用-P來指定哪個 CPU,處理器的ID是從0開始的。下面的例子是查看兩個處理器,每二秒數據更新一次,總共要顯示10次數據;

[root@localhost ~]# mpstat -P 0 2 10 注:查看第一個CPU
[root@localhost ~]# mpstat -p 1 2 10 注:查看第二個CPU




[root@localhost ~]# mpstat 2 10 注:查看所有CPU;


3.5 sdaf

sdaf 能從二進制文件中提取sar所收集的數據;這個大家知道就行了。顯示的並不是友好的格式;

[root@localhost ~]# sar -u 2 5 -o sar003
[root@localhost ~]# sadf sar003

相對來說,用sar來讀取輸出文件的內容更好;比如下面的;

[root@localhost ~]# sar -f sar003


4、 與Sysstat相似工具;


4.1 進程管理工具;

進程管理工具,包括ps 、pgrep、top、kill 、killall、pkill 等,請參考 《 Linux 進程管理》


4.2 內存使用率查看工具;

內存使用量 free

free 工具既能查看物理內存,也能查看虛擬內存的用量;

[root@localhost ~]# free

如果顯示以單位M,則加-m參數;

[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 724 713 11 0 24 290
-/+ buffers/cache: 398 326
Swap: 800 0 800


vmstat 即時顯示內存工具;

vmstat 是一個即時顯示內存使用情況的工具;

vmstat 使用方法:

vmstat [-V] [-n] [delay [count]]
-V 顯示vmstat的版本;
-n causes the headers not to be reprinted regularly.
-a 顯示所有激活和未激活內存的狀態;print inactive/active page stats.
-d 顯示硬盤統計信息;prints disk statistics
-D 顯示硬盤分區表;prints disk table
-p 顯示硬盤分區讀寫狀態等;prints disk partition statistics
-s 顯示內存使用情況;prints vm table
-m prints slabinfo
-S 定義單位,k K
delay 是兩次刷新時間間隔;
單位體積: k:1000 K:1024 m:1000000 M:1048576 (默認是 K)
count 刷新次數;


5、 關於本文;

我在2004年10月30日,寫過一篇Sysstat 的文章 ,當時也並沒有把Sysstat搞的太清楚,只是會簡單的操作,原文可參見《系統維護常用工具sysstat》。

今天重寫此文,主要是以前寫的比較差,所以對一些參數進行了測試、考證,我想這樣應該對新手方便一點。

本文也並不是大而全的man ,有些參數怎麼理解,還得依靠我們自己。我認為掌握一些常用的參數就行,沒有必要把一個命令研究的多透徹。有些東西,如果我們用不著,學了也沒有什麼用,這就是學為所用吧。



-a 顯示所有激活和未激活內存的狀態;print inactive/active page stats. -d 顯示硬盤統計信息;prints disk statistics -D 顯示硬盤分區表;prints disk table -p 顯示硬盤分區讀寫狀態等;prints disk partition statistics -s 顯示內存使用情況;prints vm table -m prints slabinfo -S 定義單位,k K delay 是兩次刷新時間間隔; 單位體積: k:1000 K:1024 m:1000000 M:1048576 (默認是 K) count 刷新次數; 5、 關於本文; 我在2004年10月30日,寫過一篇Sysstat 的文章 ,當時也並沒有把Sysstat搞的太清楚,只是會簡單的操作,原文可參見《系統維護常用工具sysstat》。 今天重寫此文,主要是以前寫的比較差,所以對一些參數進行了測試、考證,我想這樣應該對新手方便一點。 本文也並不是大而全的man ,有些參數怎麼理解,還得依靠我們自己。我認為掌握一些常用的參數就行,沒有必要把一個命令研究的多透徹。有些東西,如果我們用不著,學了也沒有什麼用,這就是學為所用吧。



本文也並不是大而全的man ,有些參數怎麼理解,還得依靠我們自己。我認為掌握一些常用的參數就行,沒有必要把一個命令研究的多透徹。有些東西,如果我們用不著,學了也沒有什麼用,這就是學為所用吧。



5、 關於本文; 我在2004年10月30日,寫過一篇Sysstat 的文章 ,當時也並沒有把Sysstat搞的太清楚,只是會簡單的操作,原文可參見《系統維護常用工具sysstat》。 今天重寫此文,主要是以前寫的比較差,所以對一些參數進行了測試、考證,我想這樣應該對新手方便一點。 本文也並不是大而全的man ,有些參數怎麼理解,還得依靠我們自己。我認為掌握一些常用的參數就行,沒有必要把一個命令研究的多透徹。有些東西,如果我們用不著,學了也沒有什麼用,這就是學為所用吧。



Copyright © Linux教程網 All Rights Reserved