目录
sysstat 工具简介
Linux Sysstat是linux系统免费提供用于收集主机性能的一个软件包,不是默认安装的,需要自己安装。
sysstat 是 Linux 系统中的常用工具包。它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。
sysstat 工具包中包含两类工具:
即时查看工具:iostat、mpstat、sar
累计统计工具:sar
也就是说,sar 具有这两种功能。因此,sar 是 sysstat 中的核心工具。
包含的工具
-
iostat
输出CPU的统计信息和所有I/O设备的输入输出(I/O)统计信息
-
mpstat
关于CPU的详细信息(单独输出或者分组输出)
-
pidstat
关于运行中的进程/任务、CPU、内存等的统计信息
-
sar
保存并输出不同系统资源(CPU、内存、IO、网络、内核等)的详细信息
-
sadc
系统活动数据收集器,用于收集sar工具的后端数据
-
sa1
系统收集并存储sadc数据文件的二进制数据,与sadc工具配合使用
-
sa2
配合sar工具使用,产生每日的摘要报告
-
sadf
用于以不同的数据格式(CVS或者XML)来格式化sar工具的输出
-
sysstat
sysstat 工具包的 man 帮助页面。
-
nfsiostat
NFS(Network File System)的I/O统计信息
-
cifsiostat
CIFS(Co
安装
-
CentOS
通过
yum
安装:yum install sysstat
或者通过
rpm
包安装:wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm sudo rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
推荐
rpm
包方式安装,因为能随时安装最新版本。 -
Ubuntu
apt-get install sysstat
查看是否成功安装:
mpstat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)
sar 的累计统计
为了实现 sar 的累计统计,系统必须周期地记录当时的信息,这是通过调用 /usr/lib/sa/ 中的三个工具实现的:
-
sa1 :收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc 的前端程序
-
sa2 :收集每天的系统活跃信息写入总结性的报告,用作 sar 的前端程序
-
sadc :系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar 工具的后端
文档:https://download.csdn.net/download/bandaoyu/12532051 《sar和skar分析linux性能教程.doc》
定时统计任务
如果是用yum
或apt-get
方式安装,默认已经在/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(红色部分改为sa1和sa2实际所在地址,用yum和apt-get安装sysstat后可以用命令 man sa1和man sa2 或find / -name sa1可以查看其所在的实际地址)
统计的日志文件会存放在/var/log/sa
这个目录下。每10分钟就进行一次日志的记录,在23:53对一天的日志进行汇总。
改为1分钟一次:*/1 * * * * root /usr/lib64/sa/sa1 1 1
/usr/lib64/sa/sa1
是一个可以使用 cron 进行调度生成二进制日志文件的 shell 脚本/usr/lib64/sa/sa2
是一个可以将二进制日志文件转换为用户可读的编码方式的 shell 脚本
可能会碰到的问题:
安装后首次执行sar
会报如下错误:
(看到在这:/var/log/sysstat/--------------------------------------------------sar log存放目录)
无法打开 /var/log/sa/sa25: 没有那个文件或目录
原因是安装完sysstat
后,定时任务还没生成那个文件。此处的 25 指的是日期。可以手动生成文件:
(在守护进程 /etc/rc.d/init.d/sysstat 中使用 /usr/lib/sa/sadc -F -L -
命令创建当日记录文件,文件为 /var/log/sa/saDD
,其中 DD 为当天的日期。)
sudo sar -o 5 #每5秒记录一条信息,生成当日文件saDD
sar
在使用 Linux 系统时,常常会遇到各种各样的问题,比如系统容易死机或者运行速度突然变慢,这时我们常常猜测:是否硬盘空间不足,是否内存不足,是否 I/O 出现瓶颈,还是系统的核心参数出了问题?这时,我们应该考虑使用 sar 工具对系统做一个全面了解,分析系统的负载状况。
sar(System Activity Reporter)是系统活动情况报告的缩写。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息,sar 提供了丰富的选项、因此使用较为复杂。
sar 的命令格式
sar 的命令格式为:
sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]
[ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
[ -o [ filename ] | -f [ filename ] ]
[ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[ interval [ count ] ]
其中:
-
interval : 为取样时间间隔
-
count : 为输出次数,若省略此项,默认值为 1
常用选项:
选项 | 说明 |
---|---|
-A | 等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL |
-b | 显示I/O和传送速率的统计信息 |
-B | 输出内存页面的统计信息 |
-c | 输出进程统计信息,每秒创建的进程数 |
-d | 输出每一个块设备的活动信息 |
-i interval | 指定间隔时长,单位为秒 |
-p | 显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np |
-q | 输出进程队列长度和平均负载状态统计信息 |
-r | 输出内存和交换空间的统计信息 |
-R | 输出内存页面的统计信息 |
-t | 读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间 |
-u | 输出CPU使用情况的统计信息 |