使用Sar實現系統監控
持續的效能監控,是進行運維、調優工作的重要環節。優質的監控工具應該具備兩個層面的特性:其一是診斷的全面性,監控專案包括CPU、記憶體、網路等多個方面,細粒度的診斷。另一個層面是效能層面,要求監控工具對系統執行影響最小,不能由於效能監控工具帶來過量負載。
目前一種常用的做法,是使用作業系統自帶的效能評測工具,如top、vmstat。本篇我們介紹一個在Linux/AIX中經常使用的綜合評測工具SAR。
1、環境介紹
我們選擇Linux環境進行測試實驗。
[oracle@SimpleLinux ~]$ uname -r
2.6.18-128.el5
[oracle@SimpleLinux ~]$
在安裝Oracle的資料庫伺服器上,sar定期執行是自動開啟的。通常情況下,直接使用sar命令,就可以檢視到每日中每隔10s進行的效能資料收集。
[oracle@SimpleLinux ~]$ sar
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 10/24/2013
08:52:32 AM LINUX RESTART
09:00:01 AM CPU %user %nice %system %iowait %steal %idle
09:10:01 AM all 0.00 0.00 0.43 0.00 0.00 99.57
09:20:01 AM all 0.00 0.00 0.42 0.00 0.00 99.58
09:30:01 AM all 0.00 0.00 0.44 0.00 0.00 99.56
在預設輸出中,我們可以看到每個取樣點時刻的CPU、IO負載情況。Sar命令屬於標準Linux命令,我們從help和man命令中都可以找到幫助文件。
[oracle@SimpleLinux ~]$ sar -h
Usage: sar [ options... ] [
Options are:
[ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I {
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x {
[ -o [
[ -s [
這裡建議有興趣的朋友可以使用man命令開啟sar幫助文件,其中包括所有的引數提示和結果指標含義。這個對於更好使用sar和了解OS工作原理很有益處。
2、Linux下的sar自動執行
Sar本身是一個固定間隔取樣工具,只要輸入時間間隔(s)和次數,就可以進行效能收集。
[oracle@SimpleLinux ~]$ sar 5 3
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/25/2013
03:14:08 PM CPU %user %nice %system %iowait %steal %idle
03:14:13 PM all 0.20 0.00 0.40 0.00 0.00 99.40
03:14:18 PM all 0.20 0.00 0.40 0.00 0.00 99.41
03:14:23 PM all 0.20 0.00 1.00 0.20 0.00 98.61
Average: all 0.20 0.00 0.60 0.07 0.00 99.14
從直接看,sar是一個實時的收集工具。但是我們在Linux上經常可以看到後臺sar在每隔10s進行收集,一次至少看到一天的全部資料。本部分一起來討論這個。
Sar本身自動收集可能有兩種途徑,一個是透過crontab自動執行,另一個是透過其他後臺程式的自動執行。我們的確發現了Sar是透過sysstat工具收集。
Sysstat是我們安裝Oracle資料庫的過程中必須要安裝的補充包。安裝之後,它會自動透過cron機制來呼叫sar。
[root@SimpleLinux ~]# rpm -qa sysstat
sysstat-7.0.2-3.el5
[root@SimpleLinux ~]#
[root@SimpleLinux ~]# cat /etc/cron.d/sysstat –sysstat的自動執行專案
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 –A
在sysstat呼叫命令中,看到兩個命令列。第一個命令sa1 1 1的含義是進行一次資料收集,立即啟動。執行頻率是每10秒鐘執行一次。第二個命令式資料彙總動作,每天晚上23:53啟動,sa2 –A是將當天資料進行彙總收集。
積累資料是儲存在檔案中的,按照日DD的順序進行儲存。
[root@SimpleLinux ~]# cd /var/log/sa
[root@SimpleLinux sa]# ls -l
total 1688
-rw-r--r-- 1 root root 71552 Dec 2 17:50 sa02
-rw-r--r-- 1 root root 6560 Sep 6 17:50 sa06
-rw-r--r-- 1 root root 72944 Oct 8 17:40 sa08
(篇幅原因,有省略……)
-rw-r--r-- 1 root root 4640 Oct 31 09:10 sa31
[root@SimpleLinux sa]#
3、sar常用場景
介紹幾個常用的場景。Sar兩種工作模式,一個是資料收集模式,另一個是結果解析模式。如果我們輸入了收集時間間隔和持續次數引數,就進入資料收集模式。在這個模式下,Sar程式會將目標引數指標進行定期收集,將結果儲存在資料檔案裡面。指定輸出引數-o,可以將資料儲存在特定的檔案裡面。
如果沒有指定-o引數,就會儲存在預設的/var/log/sa目錄檔案中。
[root@SimpleLinux sa]# sar 1 5
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:47:43 PM CPU %user %nice %system %iowait %steal %idle
03:47:44 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:47:45 PM all 0.99 0.00 0.00 0.00 0.00 99.01
03:47:46 PM all 0.00 0.00 0.98 0.00 0.00 99.02
03:47:47 PM all 1.00 0.00 2.00 14.00 0.00 83.00
03:47:48 PM all 0.00 0.00 0.98 0.00 0.00 99.02
Average: all 0.40 0.00 0.79 2.77 0.00 96.04
[root@SimpleLinux sa]# sar -o /tmp/sartmp.dat 1 5
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM CPU %user %nice %system %iowait %steal %idle
03:48:09 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:10 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:11 PM all 0.00 0.00 0.99 0.00 0.00 99.01
03:48:12 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:13 PM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.20 0.00 0.00 99.80
目錄上可以看到對應的檔案。
[root@SimpleLinux sa]# cd /tmp
[root@SimpleLinux tmp]# ls -l | grep sar
-rw-r--r-- 1 root root 9024 Dec 24 15:48 sartmp.dat
另一種sar工作模式是結果輸出模式,可以從預設的檔案中輸出,也可以透過-f引數指定輸出位置。
[root@SimpleLinux sa]# sar -B -f /tmp/sartmp.dat
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM pgpgin/s pgpgout/s fault/s majflt/s
03:48:09 PM 0.00 64.00 47.00 0.00
03:48:10 PM 0.00 47.52 23.76 0.00
03:48:11 PM 0.00 31.68 13.86 0.00
03:48:12 PM 0.00 15.84 11.88 0.00
03:48:13 PM 0.00 48.00 12.00 0.00
Average: 0.00 41.35 21.67 0.00
另外常用的輸出引數-s和-e,用於規定時間範圍。
[root@SimpleLinux sa]# sar -s 14:00:00 -e 15:00:00
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 10/24/2013
02:00:52 PM LINUX RESTART
02:10:01 PM CPU %user %nice %system %iowait %steal %idle
02:20:01 PM all 0.47 0.00 1.97 2.17 0.00 95.39
02:30:01 PM all 0.37 0.00 1.34 0.29 0.00 97.99
Average: all 0.37 0.00 1.44 0.66 0.00 97.53
4、sar常用監控專案
Sar監控的範圍很廣,透過不同的引數,可以控制收集、展示的監控專案。本部分介紹幾個常見的監控點。
ü CPU和通用負載
預設或者引數-u可以輸出CPU和IO關鍵負載。
[root@SimpleLinux tmp]# sar -f /tmp/sartmp.dat
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM CPU %user %nice %system %iowait %steal %idle
03:48:09 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:10 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:11 PM all 0.00 0.00 0.99 0.00 0.00 99.01
03:48:12 PM all 0.00 0.00 0.00 0.00 0.00 100.00
03:48:13 PM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.20 0.00 0.00 99.80
ü IO負載和傳輸頻率
IO負載TPS和讀寫情況速率。
[root@SimpleLinux tmp]# sar -f /tmp/sartmp.dat -b
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM tps rtps wtps bread/s bwrtn/s
03:48:09 PM 6.00 0.00 6.00 0.00 256.00
03:48:10 PM 9.90 0.00 9.90 0.00 190.10
03:48:11 PM 5.94 0.00 5.94 0.00 126.73
03:48:12 PM 5.94 0.00 5.94 0.00 63.37
03:48:13 PM 10.00 0.00 10.00 0.00 192.00
Average: 7.55 0.00 7.55 0.00 165.41
ü 頁面進出情況
[root@SimpleLinux tmp]# sar -f /tmp/sartmp.dat -B
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM pgpgin/s pgpgout/s fault/s majflt/s
03:48:09 PM 0.00 64.00 47.00 0.00
03:48:10 PM 0.00 47.52 23.76 0.00
03:48:11 PM 0.00 31.68 13.86 0.00
03:48:12 PM 0.00 15.84 11.88 0.00
03:48:13 PM 0.00 48.00 12.00 0.00
Average: 0.00 41.35 21.67 0.00
ü 建立程式數量情況
每秒建立的系統程式數量。
[root@SimpleLinux tmp]# sar -f /tmp/sartmp.dat -c
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM proc/s
03:48:09 PM 0.00
03:48:10 PM 0.00
03:48:11 PM 0.00
03:48:12 PM 0.00
03:48:13 PM 0.00
Average: 0.00
ü 記憶體與交換Swap空間
[root@SimpleLinux tmp]# sar -r -f /tmp/sartmp.dat
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
03:48:09 PM 13732 904648 98.50 7568 448828 2421732 34056 1.39 30896
03:48:10 PM 13732 904648 98.50 7576 448844 2421732 34056 1.39 30896
03:48:11 PM 13732 904648 98.50 7584 448836 2421732 34056 1.39 30896
03:48:12 PM 13732 904648 98.50 7592 448848 2421732 34056 1.39 30896
03:48:13 PM 13732 904648 98.50 7600 448840 2421732 34056 1.39 30896
Average: 13732 904648 98.50 7584 448839 2421732 34056 1.39 30896
ü 上下文切換情況
[root@SimpleLinux tmp]# sar -w -f /tmp/sartmp.dat
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM cswch/s
03:48:09 PM 744.00
03:48:10 PM 766.34
03:48:11 PM 744.55
03:48:12 PM 759.41
03:48:13 PM 764.00
Average: 755.67
ü 網路裝置
網路裝置監控有額外的引數-n,配置值ALL、DEV、EDEV、SOCK等,對應不同的網路裝置介面。
[root@SimpleLinux tmp]# sar -n DEV -f /tmp/sartmp.dat
Linux 2.6.18-128.el5 (SimpleLinux.localdomain) 12/24/2013
03:48:08 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
03:48:09 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:48:09 PM eth0 1.00 1.00 60.00 154.00 0.00 0.00 0.00
03:48:09 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:48:10 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:48:10 PM eth0 1.98 2.97 118.81 473.27 0.00 0.00 0.00
03:48:10 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:48:11 PM lo 1.98 1.98 99.01 99.01 0.00 0.00 0.00
5、結論
Sar命令監控範圍很廣,在Linux環境上有額外的定期收集機制,對我們平時監控系統的價值值得關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1351132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sar效能監視命令-實時監控CPU
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- 實時監控系統,統一監控企業APIAPI
- Unix檔案系統頁面監控實現
- 施工現場影片監控系統
- Zabbix監控系統深度實踐
- 使用 Grafana、collectd 和 InfluxDB 打造現代監控系統GrafanaUX
- 技術分享| 如何使用Prometheus實現系統監控報警郵件通知Prometheus
- TiDB監控實現--存活監控TiDB
- Mysql 監控系統MySql
- 監控系統元件元件
- 如何實現遊戲陪玩系統原始碼前端效能監控?遊戲原始碼前端
- Unix檔案系統頁面監控實現-效果頁面
- 監控系統使用情況shell指令碼指令碼
- 基於 Prometheus 的監控系統實踐Prometheus
- 實時成本監控系統淺談薦
- 使用 Performance API 實現前端資源監控ORMAPI前端
- 只用五分鐘為系統實現基於JMX的監控
- NiosII+GPS/GSM實現汽車狀態監控系統iOS
- Mac系統監控工具Mac
- 打造前端監控系統前端
- 手刃前端監控系統前端
- JavaWeb的監控系統JavaWeb
- Cacti 監控 AIX 系統AI
- 智慧工地監控系統
- 智慧影片監控系統
- 基於施耐德PLC的水位測控系統如何實現遠端監控上下載
- 使用Python建立一個系統監控程式Python
- 分散式監控系統之Zabbix基礎使用分散式
- (轉)使用 Nmon 監控 Linux 的系統效能Linux
- Linux下使用NMON監控、分析系統效能Linux
- REDHAT環境下使用SYSSTAT監控系統效能Redhat
- 雲控系統的實現原理
- Grafana監控系統的構建與實踐Grafana
- .NET 開源實時監控系統 - WatchDog
- 系統監控&JVM監控指標資料查詢JVM指標
- 運維監控系統 PIGOSS BSM的監控策略運維Go
- 駕駛員監控系統(DMS)