“五分钟学命令系列”之二十《sar命令》

2015年10月21日17:07:29 评论 7,075

sar主要负责收集、汇报与存储系统运行信息。

一、控制信息输出的时间间隔和次数

时间间隔表示两次信息输出之间的时间间隔,单位是秒。如果这个值被设置为0,则表示所输出的信息是从开机到现在为止的信息平均值。如果不是0,sar计算就都是从当前开始的信息的平均值;

输出次数表示输出系统信息的次数,默认是1次。如果这个值被设置为0,则会永远的输出下去。

# sar 5 6

表示每6秒输出一次,共输出5次

二、把sar输出的信息存到文件中

命令-o filename

# sar 5 6 -o sys_info

但是当你用cat看sys_info时发现全都是乱码,这时只要使用sar -f filename选项就可以了

三、使用-o命令时忘了输入文件名

如果输入时忘了加文件名,那么sar会自动把输出信息更记录在/var/log/saDD文件里,其中DD表示当天的日期数字。

# sar 5 6 -o

输出信息会记录在/var/log/sa/sa21文件里,因为今天是2015年10月21日。

四、查看CPU信息

当在使用sar命令而没有设定-P选项时,sar会根据所有核给出一个宏观汇报,也就是平均的值。

如果使用了-P选项来指定某一个核,那么就会针对这个单独的核给出具体性能信息。

当使用-P ALL时,sar就会根据每一个核都给出其具体性能信息,然后再给出一个总的性能信息

查看一个8核CPU命令如下:

# sar -P ALL 1 1
Linux 2.6.32-431.29.2.el6.x86_64 10/21/2015 _x86_64_ (8 CPU)

04:18:59 PM CPU %user %nice %system %iowait %steal %idle
04:19:00 PM all 0.13 0.00 0.25 0.00 0.00 99.62
04:19:00 PM 0 1.00 0.00 0.00 0.00 0.00 99.00
04:19:00 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
04:19:00 PM 2 1.00 0.00 0.00 0.00 0.00 99.00
04:19:00 PM 3 1.00 0.00 1.00 0.00 0.00 98.00
04:19:00 PM 4 0.00 0.00 0.00 0.00 0.00 100.00
04:19:00 PM 5 0.00 0.00 0.00 0.00 0.00 100.00
04:19:00 PM 6 0.00 0.00 0.99 0.00 0.00 99.01
04:19:00 PM 7 0.00 0.00 0.00 0.00 0.00 100.00

Average: CPU %user %nice %system %iowait %steal %idle
Average: all 0.13 0.00 0.25 0.00 0.00 99.62
Average: 0 1.00 0.00 0.00 0.00 0.00 99.00
Average: 1 0.00 0.00 0.00 0.00 0.00 100.00
Average: 2 1.00 0.00 0.00 0.00 0.00 99.00
Average: 3 1.00 0.00 1.00 0.00 0.00 98.00
Average: 4 0.00 0.00 0.00 0.00 0.00 100.00
Average: 5 0.00 0.00 0.00 0.00 0.00 100.00
Average: 6 0.00 0.00 0.99 0.00 0.00 99.01
Average: 7 0.00 0.00 0.00 0.00 0.00 100.00

想查看第6个核的信息,命令如下:

# sar -P 5 1 1
Linux 2.6.32-431.29.2.el6.x86_64 (intranet.zabbix.cnc) 10/21/2015 _x86_64_ (8 CPU)

04:17:16 PM CPU %user %nice %system %iowait %steal %idle
04:17:17 PM 5 0.00 0.00 1.00 0.00 0.00 99.00
Average: 5 0.00 0.00 1.00 0.00 0.00 99.00

PS:因为cpu内核是从0开始算的,所有第六个核命令应该写成-P 5。

五、查看其它系统信息

sar命令在默认情况下是输出CPU信息的,只有当用户专门使用选项来设定要查看网络信息时,sar才会输出网络的当前信息,内存信息和IO信息也是同样道理。

-b:报告I/O使用情况以及传输速率。(只适用于2.5及之前的内核,所以新内核有可能不支持这个选项)

-B:报告“页”使用情况

-c:报告进程创建情况

-d:报告每一个块设备的使用情况

(当你使用时,你会发现在DEV列有类似dev1-7格式的字符串,其中1代表设备的主序号,n代表设备的从序号,而且rd_sec/s列和wr_sec/s列的单位都是512bytes,也就是512B,也就是0.5KB)

-I:汇报中断情况

-n:汇报网络情况

-P:设定CPU

-q:汇报队列长度和负载信息

-r:汇报内存和交换区使用情况

-R:汇报内存情况

-u:汇报CPU使用情况

-v:汇报i节点、文件和其他内核表信息

-w:汇报系统上下文切换情况

-x:可以针对某个特定PID给出统计信息,

可以直接指定进程ID号;也可以指定为SELF,这样就是检测sar进程本身;如果设定为ALL,则表示汇报所有系统进程信息。

-X:汇报特定PID的子进程的信息

-y:设定TTY设备的信息。

六、全能选项

sar提供了一个全能选项,即-A,它代表all,而且还是大写的。

这个-A就相当于-bBcdqrRuvwWy -I SUM -n FULL -P ALL这么一堆选项了;不过-A轻易不要用,否则一大坨信息输出到屏幕上,刷屏就要刷N年。

七、后台监控

只要借助linux的后台符就可以了,但是别忘了把标准输出重定向

# sar -o monitor.res interval count >/dev/null 2>&1 &

PS:记得把interval和count都替换为你想要的间隔和次数。这样所有的性能信息就全都存入二进制格式的数据文件monitor.res里了。当读取时使用-f就可以了

八、让sar在某个特定时间结束

使用-e hh:mm:ss选项就可以了,设定好你的结束时间,sar就会乖乖的在这个时间结束。

默认的结束时间是18:00:00,也就是说如果你使用-e但没有指定具体时间,sar就会在晚上6点结束。

需要注意的一点是,-e选项只能用在读取(-f)或写入(-o)信息文件时才可用。

九、实例

a、每个两秒报告一次CPU使用情况,共报告5次

# sar -u 2 5

b、汇报IRQ14的信息,每两秒一次,共10次,所有输出信息存入sys_info中

# sar -I 14 -o sys_info 2 10

c、显示内存使用情况、交换区使用情况以及网络情况,所有输出信息存入sys_net文件中

# sar -r -n DEV -f sys_net

十、监控网络

sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL

a、汇报和网络设备相关的信息

# sar -n DEV 1 2
Linux 2.6.32-431.29.2.el6.x86_6410/21/2015 _x86_64_ (8 CPU)

04:52:22 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
04:52:23 PM lo 36.00 36.00 7.94 7.94 0.00 0.00 0.00
04:52:23 PM em1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:52:23 PM em2 149.00 144.00 24.21 23.89 0.00 0.00 1.00
04:52:23 PM em3 124.00 117.00 8.48 7.82 0.00 0.00 4.00
04:52:23 PM em4 1.00 0.00 0.07 0.00 0.00 0.00 0.00

IFACE:就是网络设备的名称

rxpck/s:每秒钟接收到的包数目

txpck/s:每秒钟发送出去的包数目

rxbyt/s:每秒钟接收到的字节数

txbyt/s:每秒钟发送出去的字节数

rxcmp/s:每秒钟接收到的压缩包数目

txcmp/s:每秒钟发送出去的压缩包数目

txmcst/s:每秒钟接收到的多播包的包数目

b、对网络设备汇报其失败情况

# sar -n EDEV 1 3
Linux 2.6.32-431.29.2.el6.x86_64 10/21/2015 _x86_64_ (8 CPU)

04:54:22 PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
04:54:23 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:54:23 PM em1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:54:23 PM em2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:54:23 PM em3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:54:23 PM em4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

rxerr/s:每秒钟接收到的损坏的包的数目

txerr/s:当发送包时,每秒钟发生的错误数

coll/s:当发送包时,每秒钟发生的冲撞(collisions)数(这个是在半双工模式下才有)

rxdrop/s:由于缓冲区满,网络设备接收端,每秒钟丢掉的网络包的数目

txdrop/s:由于缓冲区满,网络设备发送端,每秒钟丢掉的网络包的数目

txcarr/s:当发送数据包时,每秒钟载波错误发生的次数

rxfram/s:在接收数据包时,每秒钟发生的帧对齐错误的次数

rxfifo/s:在接收数据包时,每秒钟缓冲区溢出错误发生的次数

txfifo/s:在发送数据包时,每秒钟缓冲区溢出错误发生的次数

c、统计socket连接信息

# sar -n SOCK 1 3
Linux 2.6.32-431.29.2.el6.x86_64 10/21/2015 _x86_64_ (8 CPU)

04:55:42 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
04:55:43 PM 1258 414 2 0 0 116
04:55:44 PM 1258 414 2 0 0 117
04:55:45 PM 1257 413 2 0 0 117
Average: 1258 414 2 0 0 117

totsck:被使用的socket的总数目

tcpsck:当前正在被使用于TCP的socket数目

udpsck:当前正在被使用于UDP的socket数目

rawsck:当前正在被使用于RAW的socket数目

ip-frag:当前的IP分片的数目

d、如果你使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合

weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: