sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。
它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。
系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。
查看CPU使用情况
%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
明系统中最需要解决的资源是CPU。
sar 1 10 > data.txt
//每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。
sar 1 0 -e 15:00:00 > data.txt
//每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)
sar 1 0 -r -e 15:00:00 > data.txt
//每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。
sar 1 0 -n DEV -e 15:00:00 > data.txt
//每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。
例二:使用命行sar -v t n
例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:
# sar -v 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz (-v)
10:33:53 305/ 321 0 1337/2764 0 1561/1706 0 40/ 128
10:34:23 308/ 321 0 1340/2764 0 1587/1706 0 37/ 128
10:34:53 305/ 321 0 1332/2764 0 1565/1706 0 36/ 128
10:35:23 308/ 321 0 1338/2764 0 1592/1706 0 37/ 128
10:35:53 308/ 321 0 1335/2764 0 1591/1706 0 37/ 128
显示内容包括:
proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。
inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数
MAX-INODE控制。
file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控
制。
ov:溢出出现的次数。
Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE
控制。
显示格式为
实际使用表项/可以使用的表项数
显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如
果出现溢出时,要调整相应的核心参数,将对应的表项数加大。
例三:使用命行sar -d t n
例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:
# sar -d 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
11:06:43 device %busy avque r+w/s blks/s avwait avserv (-d)
11:07:13 wd-0 1.47 2.75 4.67 14.73 5.50 3.14
11:07:43 wd-0 0.43 18.77 3.07 8.66 25.11 1.41
11:08:13 wd-0 0.77 2.78 2.77 7.26 4.94 2.77
11:08:43 wd-0 1.10 11.18 4.10 11.26 27.32 2.68
11:09:13 wd-0 1.97 21.78 5.86 34.06 69.66 3.35
Average wd-0 1.15 12.11 4.09 15.19 31.12 2.80
显示内容包括:
device: sar命令正在监视的块设备的名字。
%busy: 设备忙时,传送请求所占时间的百分比。
avque: 队列站满时,未完成请求数量的平均值。
r+w/s: 每秒传送到设备或从设备传出的数据量。
blks/s: 每秒传送的块数,每块512字节。
avwait: 队列占满时传送请求等待队列空闲的平均时间。
avserv: 完成传送请求所需平均时间(毫秒)。
在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有
效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统
的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。
例四:使用命行sar -b t n
例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:
# sar -b 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)
14:55:29 0 147 100 5 21 78 0 0
14:55:59 0 186 100 5 25 79 0 0
14:56:29 4 232 98 8 58 86 0 0
14:56:59 0 125 100 5 23 76 0 0
14:57:29 0 89 100 4 12 66 0 0
Average 1 156 99 5 28 80 0 0
显示内容包括:
bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。
lread/s: 平均每秒从系统buffer读出的逻辑块数。
%rcache: 在buffer cache中进行逻辑读的百分比。
bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。
lwrit/s: 平均每秒写到系统buffer逻辑块数。
%wcache: 在buffer cache中进行逻辑读的百分比。
pread/s: 平均每秒请求物理读的次数。
pwrit/s: 平均每秒请求物理写的次数。
在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效
率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer
数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数
值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到
提高。
例五:使用命行sar -g t n
例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:
# sar -g 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 11/22/2001
17:07:03 ovsiohw/s ovsiodma/s ovclist/s (-g)
17:07:33 0.00 0.00 0.00
17:08:03 0.00 0.00 0.00
17:08:33 0.00 0.00 0.00
17:09:03 0.00 0.00 0.00
17:09:33 0.00 0.00 0.00
Average 0.00 0.00 0.00
显示内容包括:
ovsiohw/s:每秒在串口I/O硬件出现的溢出。
ovsiodma/s:每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。
ovclist/s :每秒字符队列出现的溢出。
在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢
出现象。
--------------------------
初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。
1)查看网卡流量 sar -n DEV
[root@localhost ~]# sar -n DEV
Linux 2.6.32-358.el6.i686 (localhost.localdomain) 2013年05月25日 _i686_ (1 CPU)
00时00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
00时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00时10分01秒 eth0 31.94 0.09 3.89 0.02 0.00 0.00 0.00
00时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00时20分01秒 eth0 32.40 0.04 3.96 0.01 0.00 0.00 0.00
00时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00时30分01秒 eth0 31.18 0.06 3.76 0.02 0.00 0.00 0.00
。 IFACE这列表示设备名称,rxpck/s 表示每秒进入收取的包的数量,txpck/s 表示每秒发送出去的包的数量,rxbyt/s 表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量。后面几列不需要关注。如果有一天您所管理的服务器丢包非常严重,那么您就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值大于4000,或者rxbyt/s那列大于5,000,000则很有可能是被攻击了,正常的服务器网卡流量不会高于这么多,除非是您自己在拷贝数据。上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢?
[root@localhost ~]# sar -n DEV 1 5
Linux 2.6.32-358.el6.i686 (localhost.localdomain) 2013年05月25日 _i686_ (1 CPU)
16时46分55秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时46分56秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时46分56秒 eth0 36.36 0.00 4.16 0.00 0.00 0.00 0.00
16时46分56秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时46分57秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时46分57秒 eth0 69.39 1.02 10.66 0.39 0.00 0.00 0.00
16时46分57秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时46分58秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时46分58秒 eth0 42.00 1.00 7.56 0.38 0.00 0.00 0.00
16时46分58秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时46分59秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时46分59秒 eth0 51.52 1.01 7.73 0.39 0.00 0.00 0.00
16时46分59秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时47分00秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时47分00秒 eth0 60.00 1.00 5.51 0.38 0.00 0.00 0.00
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: eth0 51.81 0.81 7.11 0.31 0.00 0.00 0.00
另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果您的系统格式Redhat或者CentOS那么sar的库文件一定是在/var/log/sa/目录下的。:
[root@localhost ~]# sar -n DEV -f /var/log/sa/sa24
Linux 2.6.32-358.el6.i686 (localhost.localdomain) 2013年05月24日 _i686_ (1 CPU)
10时49分36秒 LINUX RESTART
10时50分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11时00分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时00分01秒 eth0 58.96 0.02 7.87 0.01 0.00 0.00 0.00
11时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时10分01秒 eth0 61.36 0.34 8.29 0.05 0.00 0.00 0.00
11时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时20分01秒 eth0 57.17 0.22 7.65 0.03 0.00 0.00 0.00
11时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时30分01秒 eth0 54.99 0.05 7.03 0.01 0.00 0.00 0.00
11时40分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2)查看历史负载 sar -q
[root@localhost ~]# sar -q
Linux 2.6.32-358.el6.i686 (localhost.localdomain) 2013年05月25日 _i686_ (1 CPU)
00时00分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
00时10分01秒 0 142 0.00 0.00 0.00
00时20分01秒 0 143 0.00 0.00 0.00
00时30分01秒 0 143 0.00 0.01 0.00
00时40分01秒 0 143 0.05 0.01 0.00
00时50分01秒 0 143 0.00 0.00 0.00
01时00分01秒 0 143 0.00 0.00 0.00
01时10分01秒 0 143 0.08 0.03 0.00
这个命令有助于我们查看服务器在过去的某个时间的负载状况。介绍这个命令的目的只是让您学会查看网卡流量(这是非常有用的)。如果您很感兴趣那就man一下吧,它的用法太多了。