一、sar常用性能分析场景
1.1 CPU资源分析
1、CPU使用率分析
-- 查看所有全局的CPU使用信息, ALL表示输出更详细指标
# sar -u ALL 1 3
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
10时41分21秒 CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
10时41分22秒 all 4.51 0.00 22.56 0.00 0.00 0.00 0.00 0.00 0.00 72.93
10时41分23秒 all 4.00 0.00 23.50 0.00 0.00 0.00 0.25 0.00 0.00 72.25
10时41分24秒 all 4.76 0.00 23.06 0.00 0.00 0.00 0.00 0.00 0.00 72.18
平均时间: all 4.42 0.00 23.04 0.00 0.00 0.00 0.08 0.00 0.00 72.45
-- 查看指定CPU的资源使用信息
# sar -P 1 1 3
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
10时43分53秒 CPU %user %nice %system %iowait %steal %idle
10时43分54秒 1 1.00 0.00 1.00 0.00 0.00 98.00
10时43分55秒 1 0.00 0.00 0.00 0.00 0.00 100.00
10时43分56秒 1 0.00 0.00 7.07 0.00 0.00 92.93
平均时间: 1 0.34 0.00 2.68 0.00 0.00 96.98
- %usr : 用户态CPU使用率
- %nice : 低优先级用户态CPU使用率
- %sys : 内核态CPU使用率
- %iowait : 等待IO的CPU使用率
- %steal : 当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU使用率
- %irq : 处理硬中断CPU使用率
- %soft : 处理软中断CPU使用率
- %guest : 运行虚拟机的CPU使用率
- %gnice : 以低优先级运行虚拟机的CPU使用率
- %idle : 空闲CPU使用率
2、CPU队列、整体负载分析
-- 查看CPU队列、系统整体负载信息
# sar -q 1 3
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
10时38分44秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10时38分45秒 1 247 0.09 0.11 0.09 0
10时38分46秒 1 247 0.09 0.11 0.09 0
10时38分47秒 1 247 0.09 0.11 0.09 0
平均时间: 1 247 0.09 0.11 0.09 0
- runq-sz : 运行队列的长度(等待运行的进程数);
- plist-sz : 进程列表中进程(processes)和线程(threads)的数量,很多线程可能在休眠中
- ldavg-1 : 最近1分钟的系统平均负载(单位时间内,系统处于可运行状态和不可终端状态的平均进程数)
- ldavg-5 : 最近5分钟的系统平均负载
- ldavg-15 : 最近15分钟的系统平均负载
- blocked : 因等待I/O而阻塞的队列数
1.2 磁盘资源
1、磁盘IO以及传输速率信息
-- 查看磁盘IO以及读写速率信息
# sar -b 1 3
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时00分17秒 tps rtps wtps bread/s bwrtn/s
11时00分18秒 369.00 0.00 369.00 0.00 367616.00
11时00分19秒 369.00 0.00 369.00 0.00 368008.00
11时00分20秒 373.00 0.00 373.00 0.00 370648.00
平均时间: 370.33 0.00 370.33 0.00 368757.33
- tps:每秒发送给物理设备的IO请求数,多个逻辑请求会被合并为一个I/O磁盘请求
- rtps:每秒发送给物理设备的IO读请求数
- wtps:每秒发送给物理设备的IO写请求数
- bread/s:每秒从物理设备读取的数据块数,一个数据块即一个扇区,为512kb
- bwrtn/s:每秒写入到物理设备的数据块数
2、输出每个磁盘设备的磁盘读写性能信息
-- 查看每个磁盘设备的磁盘读写性能
# sar -d -p 1 3
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时11分11秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11时11分12秒 vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分12秒 vdb 374.00 0.00 372480.00 995.94 0.38 1.02 0.21 7.70
11时11分12秒 vdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分12秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分12秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分12秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11时11分13秒 vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分13秒 vdb 374.00 0.00 372280.00 995.40 0.47 1.25 0.19 7.00
11时11分13秒 vdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分13秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分13秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分13秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11时11分14秒 vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分14秒 vdb 374.00 0.00 371824.00 994.18 0.48 1.26 0.18 6.80
11时11分14秒 vdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分14秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时11分14秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
平均时间: vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: vdb 374.00 0.00 372194.67 995.17 0.44 1.18 0.19 7.17
平均时间: vdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- DEV : 磁盘设备名称,若直接使用-d则显示为设备主编号-小编号,若使用-p可显示设备名
- tps : 每秒发送给磁盘设备的IO请求数,多个逻辑请求会被合并为一个I/O磁盘请求
- rd_sec/s : 每秒从磁盘设备读次数(每次读取读一个扇区512kb)
- wr_sec/s : 每秒发送磁盘设备写次数
- avgrq-sz : 平均每次设备I/O操作的数据大小(扇区)
- avgqu-sz : 平均请求队列长度
- await : 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间(包括请求队列等待时间和设备实际处理时间)
- svctm : 处理IO请求所需的平均时间(不包括等待请求队列时间)
- %util : 磁盘处理I/O请求时间百分比,比率越大,说明越饱和。但是由于可能存在并行IO,100%并不一定说明磁盘IO饱和
1.3 内存信息分析
1、内存使用分析
-- 查看内存使用信息
# sar -r 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时41分07秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
11时41分08秒 1778312 2081840 53.93 0 1423284 3155312 81.74 1571408 335092 70128
11时41分09秒 1608268 2251884 58.34 0 1588540 3155312 81.74 1736780 335096 40228
平均时间: 1693290 2166862 56.13 0 1505912 3155312 81.74 1654094 335094 55178
- kbmemfree : 可用内存大小(单位:kb)
- kbmemused : 内存使用大小,不包括buffer和cache内存使用
- %memused : 内存使用率
- kbbuffers : buffer的内存使用大小
- kbcached : cache的内存使用大小
- kbcommit : 当前工作负载所需内存使用大小,为保证不OOM而评估需要的内存大小(RAM + swap)
- %commit : 当前工作负载内存使用率(RAM+swap),该参数数值可能会大于100%,因为内核通常会过度提交内存
2、内存回收信息
-- 查看内存回收信息
# sar -B 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时41分31秒 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
11时41分32秒 0.00 163252.00 22.00 0.00 28193.00 27355.00 0.00 27355.00 100.00
11时41分33秒 1008.00 185108.00 29.00 0.00 55966.00 54724.00 0.00 54567.00 99.71
平均时间: 504.00 174180.00 25.50 0.00 42079.50 41039.50 0.00 40961.00 99.81
- pgpgin/s : 每秒从磁盘或swap置换到内存的字节数(KB)
- pgpgout/s : 每秒从内存置换到磁盘或swap的字节数(KB)
- fault/s : 系统每秒产生的缺页数,即主缺页与次缺页之和(major + minor)
- majflt/s : 系统每秒钟产生的主缺页数
- pgfree/s : 每秒被放入空闲队列中的页个数
- pgscank/s : 每秒被kswapd扫描的页个数
- pgscand/s : 每秒直接被扫描的页个数
- pgsteal/s : 为满足内存需要,每秒钟从缓存中回收的页的个数(pagecache and swapcache),该参数持续比较大的情况下说明内存存在一定的瓶颈
- %vmeff : 页回收效率( = pgsteal / pgscan)。如果该参数接近100%,说明非活跃list的页面在不断的被复用;如果该参数过小,说明此时内存回收存在一定的压力,需要考虑是否存在内存瓶颈;如果pgscan扫描页个数为0,那么该参数为0
3、swap信息
# sar -W 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时42分30秒 pswpin/s pswpout/s
11时42分31秒 0.00 0.00
11时42分32秒 0.00 0.00
平均时间: 0.00 0.00
- pswpin/s : 每秒从交换分区到系统的交换页面(swap page)数量
- pswpout/s : 每秒从系统交换到swap的交换页面(swap page)的数量
1.4 网络
1、查看网络流入流出信息
# sar -n DEV 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时43分35秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11时43分36秒 eth0 2.00 1.00 0.12 0.17 0.00 0.00 0.00
11时43分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时43分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11时43分37秒 eth0 1.00 1.00 0.06 0.11 0.00 0.00 0.00
11时43分37秒 lo 2.00 2.00 0.10 0.10 0.00 0.00 0.00
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: eth0 1.50 1.00 0.09 0.14 0.00 0.00 0.00
平均时间: lo 1.00 1.00 0.05 0.05 0.00 0.00 0.00
- IFACE : 网络设备接口名称
- rxpck/s : 每秒接收的数据包数
- txpck/s : 每秒发送的数据包数
- rxkB/s : 每秒接收的字节数
- txkB/s : 每秒发送的字节数
- rxcmp/s : 每秒接收的压缩数据包
- txcmp/s : 每秒发送的压缩数据包
- rxmcst/s : 每秒钟接收的组播报文数
2、网络错误统计
# sar -n EDEV 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时44分11秒 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
11时44分12秒 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时44分12秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时44分12秒 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
11时44分13秒 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时44分13秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
平均时间: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- IFACE : 网络设备接口名称
- rxerr/s : 每秒接收的坏数据包数
- txerr/s : 每秒发送的坏数据包数
- coll/s : 每秒发送数据包时发生的冲突数
- rxdrop/s : 因Linux buffer打满,每秒丢弃的接收数据包数
- txdrop/s : 因Linux buffer打满,每秒丢弃的发送数据包数
- txcarr/s : 每秒发送数据包时发生的载波错误数
- rxfram/s : 每秒在接收的数据包上发生的帧对齐错误数
- rxfifo/s : 每秒在接收的数据包上发生的FIFO超限错误数
- txfifo/s : 每秒在发送的数据包上发生的FIFO超限错误数
3、查看套接字相关信息
# sar -n SOCK 1 2
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)
11时44分35秒 totsck tcpsck udpsck rawsck ip-frag tcp-tw
11时44分36秒 591 10 2 0 0 0
11时44分37秒 591 10 2 0 0 0
平均时间: 591 10 2 0 0 0
- totsck : 使用的套接字总数量
- tcpsck : 使用的TCP套接字数量
- udpsck : 使用的UDP套接字数量
- rawsck : 使用的RAW套接字数量
- ip-frag : 当前的IP分片的数目
- tcp-tw : TCP套接字中处于TIME-WAIT状态的连接数量
二、sar周期性监控采集
当服务器安装sysstat工具后,sar默认会创建一个crontab任务以用来每十分钟进行一次监控采集,按天形成一份监控采集日志。其监控采集数据存储在/var/log/sa下,具体的crontab任务可查看/etc/cron.d/sysstat。
对于一个运维工作者,对我们业务服务器做好监控是一个基础工作,但是工作中我们也会碰到一些客户环境,他们的服务器没有做任何的监控。我们无法很细粒度的从监控中推断故障时间段服务器发生了什么。此时sar工具可能就是我们的一颗救命稻草,sar工具安装后默认每10分钟进行一次监控采集,虽然粒度很粗,但是也一定程度上帮助我们推断历史故障时间段是否存在一定的资源瓶颈。
1、sar默认crontab任务,需要的情况下我们也可以通过修改crontab任务调度周期来获取每天更细粒度的一个监控采集日志
# cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
2、如何利用sar采集日志进行分析
针对服务器CPU、磁盘、内存、网络的分析参数如第一章节讲解一样,对不同的资源分析使用不同的参数对sar日志文件进行解析即可,解析历史文件时通过-f指定我们需要查看的日志文件。
-- 查看07-12日sar日志文件的CPU资源监控采集信息
# sar -u ALL -f sa12
Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月12日 _x86_64_ (4 CPU)
00时00分01秒 CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
00时10分01秒 all 0.63 0.00 1.39 0.01 0.01 0.00 0.00 0.00 0.00 97.96
00时20分01秒 all 0.18 0.00 0.19 0.00 0.00 0.00 0.00 0.00 0.00 99.62
00时30分01秒 all 0.17 0.00 0.19 0.00 0.01 0.00 0.00 0.00 0.00 99.63
00时40分01秒 all 0.83 0.00 2.32 0.00 0.01 0.00 0.00 0.00 0.00 96.82
00时50分01秒 all 0.17 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 99.64
01时00分02秒 all 0.19 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 99.63
01时10分01秒 all 0.31 0.00 0.45 0.00 0.01 0.00 0.00 0.00 0.00 99.23
01时20分01秒 all 0.18 0.00 0.19 0.00 0.01 0.00 0.00 0.00 0.00 99.62
01时30分01秒 all 0.18 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 99.63
01时40分01秒 all 0.23 0.00 0.27 0.01 0.01 0.00 0.00 0.00 0.00 99.48
文章参考:https://cloud.tencent.com/developer/article/1513543
|