- CentOS/RHEL
- Ubuntu
- veLinux
- OpenSUSE
- Debian
- SAR 是用于收集和报告系统活动的实用程序。它收集与大多数核心系统功能相关的数据,并将这些指标写入二进制数据文件。
- SAR 也是一个二进制文件 (/usr/bin/sar),可用于专门查询 sa## 文件(例如:sa01)或从系统请求当前正在运行的统计信息。
收集的信息和统计数据包括
- CPU / IO / System / Nice / Idle percentages
- Network Traffic / Network Errors
- Load Average 和 Run queue
- Interrupts
- Memory Free / Cached / Buffered / Swapped
- Device usage per Major/Minor number
- SAR 由 sysstat 包提供,该包还提供其他统计报告工具,如 iostat,目前火山引擎提供的官方Linux镜像全部已经安装。
SAR是如何工作的呢?
- SAR 写入 中的日志文件 /var/log/sa。此目录包含两种类型的文件 - sa## 文件(二进制文件)和 sar## 文件(文本)。
- 文件末尾的数字对应于文件记录的月份中的某一天。
- 例如,sa03 文件引用该月的 03 天。
- 安装 sysstat 软件包时,它会将文件放入 /etc/cron.d/sysstat 中。
使用命令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
第一条命令会每10分钟执行一次;第二条命令会在每天23:53执行一次。 如果 SAR 希望更频繁地收集数据,只需更改 '*/10' 到新的间隔。
SAR命令常用格式
sar [options] [-A] [-o file] [ <interval> [ <count> ] ]
其中:interval为采样间隔,count为采样次数,默认值是1; -o file表示将命令结果以二进制格式存放在文件中,file 是文件名
参数说明
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
-B:显示换页状态;
-e:设置显示报告的结束时间
-f:从指定文件提取报告
-i:设状态信息刷新的间隔时间
-p:报告每个CPU的状态
-q:平均负载分析
基本用法
统计CPU使用情况
每间隔1秒钟统计一次总共统计五次,并将采样结果以二进制形式存入当前目录下的文件monitor中,使用命令sar -u -o monitor 1 5
如图所示。
其中-o表示以二进制的格式把结果存入到monitor文件中,不能使用cat,more,less等查看。
%user
:用户空间的CPU使用
%nice
:改变过优先级的进程的CPU使用率
%system
:内核空间的CPU使用率
%iowait
:表示在一个采样周期内:CPU空闲、并且有仍未完成的I/O请求
%steal
:虚拟机的虚拟机CPU使用的CPU
%idle
:空闲的CPU。
平均负载统计分析
每间隔1秒钟统计一次总共统计五次,使用命令sar -q 1 5
,如图所示。
runq-sz
:运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
plist-sz
:进程列表中的进程(processes)和线程数(threads)的数量
ldavg-1
:最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
ldavg-5
:最后5分钟的CPU平均负载
ldavg-15
:最后15分钟的CPU平均负载
内存统计分析
每间隔1秒钟统计一次总共统计五次,使用命令sar -r 1 5
,如图所示。
kbmemfree
:空闲的物理内存大小
kbmemused
:使用中的物理内存大小
%memused
:物理内存使用率
kbbuffers
:内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcached
:缓存的文件大小
kbcommit
:保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
commit
:这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值
查看磁盘IO
每间隔1秒钟统计一次总共统计五次,使用命令sar -b 1 5
如图所示。
tps
:磁盘每秒钟的IO总数,等于iostat中的tps
rtps
:每秒钟从磁盘读取的IO总数
wtps
:每秒钟从写入到磁盘的IO总数
bread/s
:每秒钟从磁盘读取的块总数
bwrtn/s
:每秒钟此写入到磁盘的块总数
查看磁盘使用情况
每间隔1秒钟统计一次总共统计五次,使用命令sar -d 1 5
如图所示。
DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
tps
:每秒I/O的传输总数
rd_sec/s
:每秒读取的扇区的总数
wr_sec/s
:每秒写入的扇区的总数
avgrq-sz
:平均每次次磁盘I/O操作的数据大小
avgqu-sz
:磁盘请求队列的平均长度
svctm
:I/O的服务处理时间,即不包括请求队列中的时间
%util
:I/O请求占用的CPU百分比
网络使用分析
选项-n
提供所有网络统计信息。 共有 18 个不同的关键字(如 NFS、IP、DEV、TCP 等)可以与-n
选项一起使用来获取相关参数。每个关键字都有近 8-10 个参数要显示。所以在调用中,如果你使用 ALL 关键字,那么输出将是一个巨大的参数列表,不利于问题的排查。此处演示常用的DEV
参数。
每间隔1秒钟统计一次总共统计三次,使用命令sar -n DEV 1 5
如图所示。
IFACE
:它的接口名称。您可以在此处轻松查看 eth0、eth1、环回 (lo) 接口。
rxpck/s
:每秒接收的数据包
txpck/s
:每秒传输的数据包
rxkB/s
:每秒接收的千字节数
txkB/s
:每秒传输的千字节数
rxcmp/s
:每秒收到的压缩包
txcmp/s
:每秒传输的压缩包
rxmcst/s
:每秒接收的组播数据包数
常用命令
sar 5 5 // CPU和IOWAIT统计状态
sar -b 5 5 // IO传送速率
sar -B 5 5 // 页交换速率
sar -c 5 5 // 进程创建的速率
sar -d 5 5 // 块设备的活跃信息
sar -n DEV 5 5 // 网路设备的状态信息
sar -n SOCK 5 5 // SOCK的使用情况
sar -n ALL 5 5 // 所有的网络状态信息
sar -P ALL 5 5 // 每颗CPU的使用状态信息和IOWAIT统计状态
sar -q 5 5 // 队列的长度(等待运行的进程数)和负载的状态
sar -r 5 5 // 内存和swap空间使用情况
sar -R 5 5 // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
sar -u 5 5 // CPU的使用情况和IOWAIT信息(同默认监控)
sar -v 5 5 // inode, file and other kernel tablesd的状态信息
sar -w 5 5 // 每秒上下文交换的数目
sar -x 2906 5 5 // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
sar -y 5 5 // TTY设备的活动状态
本文介绍的SAR命令的日常用法,对于SAR命令的其他用法请参考Linux man手册。 如果您有其他问题,欢迎您联系火山引擎技术支持服务