sar(System Activity Reporter)是Linux下系统运行状态统计工具,提供了网卡流量、CPU使用、磁盘I/O、内存使用状况等信息的采集和展示,是系统监控和排障非常好用的工具。
-
安装
sar工具在sysstat工具集里面, linux操作系统通常都包含这个安装包, centos可以用过yum install sysstat 进行安装 安装完成后通过sar -V查看有版本输出: - 命令参数简介
常用的命令参数简介如下
-a:文件读写情况
-A:所有报告的总和
-B:分页状况
-b:显示I/O和传送速率的统计信息
-c:输出进程统计信息,每秒创建的进程数
-d:块设备状况
-F [ MOUNT ]:文件系统统计信息
-H:交换空间利用率
-I { <中断> | SUM | ALL | XALL }:中断信息状况
-n:汇报网络情况
-P:设定CPU
-q:队列长度和平均负载
-R:输出内存页面的统计信息
-r [ ALL ]:输出内存和交换空间的统计信息
-S:交换空间利用率信息
-u [ ALL ]:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-W:输出系统交换活动信息
-w:任务创建与系统转换信息
-y:终端设备活动情况
3. 网络采集
sar可以查看网卡的流量速率情况,使用命令 sar -n DEV 2, 其中2表示2s输出一次,屏幕会一直输出,直到主动停止
如果值需要采集3次, 后面加上参数10, 即sar -n DEV 2 3, 结束后输出采集的平均值:
[root@VM-0-9-centos ~]# sar -n DEV 2 3
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
02:36:38 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
02:36:40 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:40 PM eth1 2.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00
02:36:40 PM veth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:40 PM eth0 7.00 2.00 0.37 0.66 0.00 0.00 0.00 0.00
02:36:40 PM veth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:40 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
02:36:42 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:42 PM eth1 2.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00
02:36:42 PM veth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:42 PM eth0 6.00 5.00 0.40 1.69 0.00 0.00 0.00 0.00
02:36:42 PM veth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:42 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
02:36:44 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:44 PM eth1 2.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00
02:36:44 PM veth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:36:44 PM eth0 2.00 1.50 0.10 0.65 0.00 0.00 0.00 0.00
02:36:44 PM veth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth1 2.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00
Average: veth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 5.00 2.83 0.29 1.00 0.00 0.00 0.00 0.00
Average: veth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字段说明 下面的average是在多次统计后的平均值
-
IFACE 本地网卡接口的名称 -
rxpck/s 每秒钟接受的数据包 -
txpck/s 每秒钟发送的数据库 -
rxKB/S 每秒钟接受的数据包大小,单位为KB -
txKB/S 每秒钟发送的数据包大小,单位为KB -
rxcmp/s 每秒钟接受的压缩数据包 -
txcmp/s 每秒钟发送的压缩包 -
rxmcst/s 每秒钟接收的多播数据包注意: sar采集网卡流量采集的所有网卡的,没有支持对指定网卡采集命令,当系统有很多网卡使用的不方便,
可以使用iftop或者vnstat工具代替
采集连接统计情况sar -n SOCK 2 2:
[root@VM-0-9-centos ~]# sar -n SOCK 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
02:39:03 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
02:39:05 PM 110 5 3 0 0 0
02:39:07 PM 110 5 3 0 0 0
02:39:09 PM 110 5 3 0 0 1
02:39:11 PM 110 5 3 0 0 1
^C
Average: 110 5 3 0 0 0
-
ip-frag 当前的IP分片的数目, 在排查性能和丢包时候比较有用 -
tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量
4. cpu采集
(1)CPU利用率
使用sar -u,和top命令中的cpu指标意义是一样的。
[root@VM-0-9-centos ~]# sar -u 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
02:50:01 PM CPU %user %nice %system %iowait %steal %idle
02:50:03 PM all 1.01 0.00 2.01 0.00 0.00 96.98
02:50:05 PM all 0.51 0.00 1.02 0.51 0.00 97.97
^C
Average: all 0.76 0.00 1.52 0.25 0.00 97.47
字段说明
-
%user #用户空间的CPU使用 -
%nice 改变过优先级的进程的CPU使用率 -
%system 内核空间的CPU使用率 -
%iowait CPU等待IO的百分比 -
%steal 虚拟机的虚拟机CPU使用的CPU -
%idle 空闲的CPU -
在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。
(2)CPU负载 使用sar -q,可以统计所有cpu的负载和运行进程的情况
[root@VM-0-9-centos ~]# sar -q 1 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
02:52:10 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
02:52:11 PM 0 152 0.21 0.12 0.09 0
02:52:12 PM 0 151 0.21 0.12 0.09 0
Average: 0 152 0.21 0.12 0.09 0
字段说明
-
runq-sz 运行队列的长度(等待运行的进程数,每个核的CP不能超过3个) -
plist-sz 进程列表中的进程(processes)和线程数(threads)的数量 -
ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推 -
ldavg-5 最后5分钟的CPU平均负载 -
ldavg-15 最后15分钟的CPU平均负载
(3)中断
使用sar -I统计硬中端触发的数量, -I SUM表示所有的中断触发的总量,-I ALL会输出每个中断号的统计
[root@VM-0-9-centos ~]# sar -I SUM 1 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
02:59:42 PM INTR intr/s
02:59:43 PM sum 454.00
02:59:44 PM sum 500.00
Average: sum 477.00
[root@VM-0-9-centos ~]# sar -I ALL 1 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
03:00:03 PM INTR intr/s
03:00:04 PM sum 561.00
03:00:04 PM 0 0.00
03:00:04 PM 1 0.00
03:00:04 PM 2 0.00
......
(4)上下文切换
使用sar -w(小写, -W是查看swap相关的)
[root@VM-0-9-centos ~]# sar -w 2 2
Linux 5.4.119-19-0008 (VM-0-9-centos) 06/07/2024 (1 CPU)
03:03:55 PM proc/s cswch/s
03:03:57 PM 19.00 1252.00
03:03:59 PM 3.50 1038.00
Average: 11.25 1145.00
-
proc 新建任务数量 -
cswch 上下文切换次数