sar 是系统活动报告(System Activity Report)的简写。
sar语法:
# sar {argument} {interval} {count}
CPU 使用率报告
即使我们不将任何参数与 sar 命令一起使用,它也会向我们显示总体 CPU 利用率。
但是关于 sar 最好的部分是,我们可以使用它来查看 Linux 中任何与性能相关的功能的实时活动,使用 count 和 interval 参数以及 sar 命令
[jack@test1 ~]$sar Linux 2.6.18-348.el5 (test1) 02/20/14 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:50:01 all 7.99 0.00 2.35 0.62 0.00 89.04 01:00:01 all 8.78 0.00 2.54 0.29 0.00 88.38 01:10:01 all 9.44 0.00 4.71 0.65 0.00 85.19 01:20:01 all 14.26 0.00 4.69 0.50 0.00 80.55 01:30:01 all 7.94 0.00 4.52 0.36 0.00 87.18 01:40:01 all 27.02 0.00 6.04 0.30 0.00 66.64 Average: all 17.90 0.00 10.60 1.54 0.00 69.96
在上面例子中,CPU利用率报告使用(-u)参数。由于未指定interval和count参数,因此它将显示完成日期的报告活动。
[jack@test1 ~]$sar -u 2 5 Linux 2.6.18-348.el5 (test1) 02/20/14 05:24:03 CPU %user %nice %system %iowait %steal %idle 05:24:05 all 20.05 0.00 4.24 3.50 0.00 72.21 05:24:07 all 19.88 0.00 5.72 3.12 0.00 71.28 05:24:09 all 11.22 0.00 7.72 1.94 0.00 79.12 05:24:11 all 21.12 0.00 4.45 3.37 0.00 71.05 05:24:13 all 20.45 0.00 4.44 3.61 0.00 71.49 Average: all 18.54 0.00 5.32 3.11 0.00 73.03
在上面例子中,我们已经指定了一个间隔参数2和计数参数5,因此它将为我们提供一个cpu利用率的实时报告,每2秒,总共5个输出以及所有输出的平均值。
值 | 说明 |
---|---|
%user | 在用户级别(应用程序)上执行时发生的CPU利用率的百分比。 |
%nice | 在用户级别执行时发生的CPU利用率的百分比,优先级。 |
%system | 在系统级别(内核)执行时发生的CPU利用率的百分比。 |
%iowait | CPU或者CPU闲置的时间百分比其中系统具有出色的磁盘I/O请求。 |
%steal | 显示虚拟CPU或者CPU的非自愿时间花费的时间百分比,而管理程序正在提供另一种虚拟处理器。 |
%idle | CPU或者CPU空闲的时间百分比,系统没有出色的磁盘I/O请求。 |
单个 CPU 报告
[jack@test1 ~]$sar -P ALL | less 2Linux 2.6.18-348.el5 (test1) 02/20/14 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:10:01 all 18.03 0.00 9.38 2.24 0.00 70.35 00:10:01 0 7.37 0.00 11.23 0.94 0.00 80.46 00:10:01 1 8.29 0.00 6.42 0.87 0.00 84.41 00:10:01 2 6.17 0.00 8.05 1.24 0.00 84.53 00:10:01 3 8.40 0.00 6.62 1.31 0.00 83.68 00:10:01 4 7.51 0.00 6.40 0.56 0.00 85.53 Average: CPU %user %nice %system %iowait %steal %idle Average: all 17.90 0.00 10.60 1.54 0.00 69.96 Average: 0 9.69 0.00 8.76 0.39 0.00 81.16 Average: 1 11.33 0.00 7.51 0.57 0.00 80.59 Average: 2 11.28 0.00 7.30 0.54 0.00 80.88 Average: 3 10.96 0.00 7.14 0.68 0.00 81.22 Average: 4 10.66 0.00 7.30 0.45 0.00 81.58
报告所有处理器的CPU利用率(如果未指定时间间隔和计数值,则将显示从监控开始算起的完整天数的统计信息)
[jack@test1 ~]$sar -P 1 2 4 Linux 2.6.18-348.el5 (test1) 02/20/14 05:31:27 CPU %user %nice %system %iowait %steal %idle 05:31:29 1 0.00 0.00 0.00 0.00 0.00 100.00 05:31:31 1 0.00 0.00 0.00 0.00 0.00 100.00 05:31:33 1 0.00 0.00 0.50 0.00 0.00 99.50 05:31:35 1 1.49 0.00 0.00 0.00 0.00 98.51 Average: 1 0.37 0.00 0.12 0.00 0.00 99.50
报告CPU 1的CPU利用率,时间间隔为2秒(计数=4),以及平均值
内存和交换空间使用报告
[jack@test1 ~]$sar -r 2 4 Linux 2.6.18-348.el5 (test1) 02/20/14 05:43:01 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 05:43:03 18146452 245967972 93.13 256956 225320936 33548444 5980 0.02 264 05:43:05 18085944 246028480 93.15 257016 225376624 33548444 5980 0.02 264 05:43:07 18027132 246087292 93.17 257016 225433756 33548444 5980 0.02 264 05:43:09 17964680 246149744 93.20 257040 225494048 33548444 5980 0.02 264 平均:18056052 246058372 93.16 257007 225406341 33548444 5980 0.02 264
上述命令将以2秒的间隔连续输出4个 内存和交换空间利用率统计数据。
字段 | 说明 |
---|---|
kbmemfree | 千字节以千字节提供的空闲内存量 |
kbmemused | 千字节以千字节的使用量 |
%memused | 使用的内存的百分比 |
kbbuffers | 用作千字节内核用作缓冲区的内存量 |
kbcached | 用于通过千字节内核缓存数据的内存量 |
kbswpfree | 千字节的自由交换空间数量 |
kbswpused | 二手交换空间数量以千字节为单位 |
%swpused | 二手交换空间的百分比 |
kbswpcad | 以千字节为单位的缓存交换内存量。 |
网络使用统计
[jack@test1 ~]$sar -n DEV 1 1 Linux 2.6.18-348.el5 (test1) 02/20/14 06:07:37 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 06:07:38 lo 125.00 125.00 288.00 288.00 0.00 0.00 0.00 06:07:38 eth0 671.00 794.00 387.00 437.00 0.00 0.00 1.00 06:07:38 eth1 0.00 0.00 0.00 0.00 0.00 0.00 1.00 06:07:38 eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 06:07:38 eth3 384.00 651.00 413.00 730.00 0.00 0.00 0.00 6:07:38 bond0 671.00 794.00 387.00 437.00 0.00 0.00 2.00 06:07:38 bond1 70.00 74.00 213.00 593.00 0.00 0.00 2.00 Average: IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s Average: lo 125.00 125.00 288.00 288.00 0.00 0.00 0.00 Average: eth0 671.00 794.00 387.00 437.00 0.00 0.00 1.00 Average: eth1 0.00 0.00 0.00 0.00 0.00 0.00 1.00 Average: eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth3 384.00 4651.00 413.00 730.00 0.00 0.00 0.00 Average: bond0 671.00 794.00 387.00 437.00 0.00 0.00 2.00 Average: bond1 70.00 74.00 213.00 593.00 0.00 0.00 2.00
报告网络统计数据。使用DEV关键字,报告来自网络设备的统计信息。
字段 | 说明 |
---|---|
IFACE | 报告统计信息的网络接口的名称 |
rxpck/s | 每秒接收的数据包总数 |
txpck/s | 每秒传输的数据包总数 |
rxbyt/s | 每秒收到的字节总数 |
txbyt/s | 每秒传输的字节总数 |
rxcmp/s | 每秒接收的压缩数据包数(用于CSLIP等) |
txcmp/s | 每秒传输的压缩数据包数 |
rxmcst/s | 每秒接收的多播数据包数 |
每秒创建的进程数报告
[jack@test1 ~]$sar -c 1 3 Linux 2.6.18-348.el5 (test1) 02/20/14 06:10:29 proc/s 06:10:30 1152.00 06:10:31 1059.00 06:10:32 1082.18 Average: 1097.67
使用-c参数报告进程创建活动。上面的命令显示每秒3个连续输出。
负载平均报告
[jack@test1 ~]$sar -q 2 4 Linux 2.6.18-348.el5 (test1) 02/20/14 06:20:19 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 06:20:21 7 2464 8.40 9.63 10.46 06:20:23 13 2467 8.21 9.57 10.44 06:20:25 7 2465 8.21 9.57 10.44 06:20:27 7 2460 8.21 9.57 10.44 Average: 8 2464 8.26 9.59 10.45
报告队列长度和负载平均值,间隔2秒,共输出4次。
值 | 说明 |
---|---|
runq-sz | 运行队列长度(等待运行时的进程数) |
plist-sz | 过程列表中的进程和线程数 |
ldavg-1 | 系统加载平均最后一分钟 |
ldavg-5 | 系统加载平均过去5分钟 |
ldavg-15 | 系统加载平均过去15分钟 |
将 sar 输出存储到文件中
[root@test1 ~]# sar -u 1 3 -o test.txt Linux 2.6.18-194.26.1.el5 (test1) 02/20/14 05:50:26 CPU %user %nice %system %iowait %steal %idle 05:50:27 all 0.00 0.00 0.06 0.12 0.00 99.81 05:50:28 all 0.00 0.00 0.06 0.12 0.00 99.81 05:50:29 all 0.00 0.00 0.06 0.56 0.00 99.38 Average: all 0.00 0.00 0.06 0.27 0.00 99.67
您可以将读数保存到二进制格式的文件中,可以使用sar-f参数再次查看该文件
从(上面创建的)文件中收集报告
[root@test1 ~]# sar -f test.txt Linux 2.6.18-194.26.1.el5 (test1) 02/20/14 05:50:26 CPU %user %nice %system %iowait %steal %idle 05:50:27 all 0.00 0.00 0.06 0.12 0.00 99.81 05:50:28 all 0.00 0.00 0.06 0.12 0.00 99.81 05:50:29 all 0.00 0.00 0.06 0.56 0.00 99.38 Average: all 0.00 0.00 0.06 0.27 0.00 99.67
从文件中收集特定日期的 sar 报告
默认情况下,所有sar报告都作为二进制文件存储在/var/lg/sa/saXX中。要读取这些文件,请使用下面带有show参数的命令
[jack@test1 ~]$sar -f /var/log/sa/sa19 -q Linux 2.6.18-348.el5 (test1) 02/19/14 00:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 00:10:01 14 3319 14.28 16.29 15.79 00:20:01 9 3230 18.34 17.97 16.63 00:30:01 15 3174 11.57 11.52 13.80 00:40:01 7 2949 12.50 12.58 13.07 23:30:01 6 2499 10.09 11.53 12.10 23:40:02 7 2591 19.20 16.10 13.74 23:50:01 19 3515 29.81 22.92 18.09 Average: 7 2510 9.79 9.72 9.66
使用上述命令,您正在收集当月第19天(sa19)的平均负载(-q)报告。我已经略过了这里的输出。现在,由于我没有使用任何其他与时间相关的参数,它将显示一整天的平均负载输出。
从文件中收集特定日期和特定时间的 sar 报告
[jack@test1 ~]$sar -f /var/log/sa/sa19 -q -s 19:00:00 -e 20:00:00 Linux 2.6.18-348.el5 (test1) 02/19/14 19:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 19:10:01 1 2286 2.36 1.81 1.59 19:20:01 0 2284 0.48 1.32 1.55 19:30:01 2 2286 0.39 0.48 0.97 19:40:01 1 2290 2.72 2.13 1.54 19:50:01 0 2288 2.13 2.58 2.08 Average: 1 2287 1.62 1.66 1.55
使用上面的命令,我给出了一个带有start(-s)和end(-e)time的time参数,以仅获取该特定时间间隔的报告
收集月度报告
默认情况下,我们只能查看当月的报告或者在 /etc/sysconfig/sysstat 中设置的报告
查看默认设置
[jack@test1 ~]$cat /etc/sysconfig/sysstat # 保存日志文件多长时间?(天),最多为一个月 HISTORY=7
因此,正如您所看到的,您可以保存报告的最长时间为1个月,但如果您希望保存报告超过一个月,请按照以下步骤操作。
[root@test1 201404]# cat /etc/sysconfig/sysstat # sysstat-9.0.4 configuration file. # How long to keep log files (in days). # 若该值大于28,则日志文件保存在多个目录中,每个月一个。 HISTORY=30 # cd /var/log/sa/ [root@test1 sa]# ls -l total 8 drwxr-xr-x 2 root root 4096 Apr 2 10:10 201403 drwxr-xr-x 2 root root 4096 Apr 2 10:10 201404 lrwxrwxrwx 1 root root 11 Apr 2 10:10 sa02 -> 201404/sa02 lrwxrwxrwx 1 root root 12 Apr 2 10:10 sar02 -> 201404/sar02
正如我们所看到的,为不同的月份创建了不同的目录,并且在 sa 目录中创建了指向各自路径的单独 sa 和 sar 文件(软链接)。
使用 ksar 收集图形报告
如果我们对使用 CLI 界面感到不舒服,那么还有一个替代选项可以为所有报告使用图形界面。
为此,我们必须下载 kar 包 ,解压后,进入创建ksar 目录。
双击“Ksar.jar”java文件。
之后应该出现下面的窗口。
单击“数据”并选择“启动 SSH 命令..”
在下一个弹出窗口中,使用下面提到的语法提供我们要连接的主机名
用户名@服务器名称
例如jack@192.168.0.5
单击 Yes 与主机建立连接
提供要连接的主机的密码
使用显示的命令,因为它将为我们提供一整天的完整图形报告
数据导入完成后,我们将看到以下弹出窗口。
单击确定
现在我们可以选择 ksar 左侧面板中显示的不同参数来查看所有报告。
sar
- 可用于Linux系统性能的实时监控。
- sar 命令根据 count 和 interval 参数中的值写入标准输出
- 除了显示在屏幕上之外,还可以将收集的数据保存在 -o filename 标志指定的文件中。
- 我们可以使用标志选择有关特定系统活动的信息。不指定任何标志只会选择 CPU 活动。
- sar 命令提取并写入先前保存在文件中的标准输出记录。该文件可以是由 -f 标志指定的文件之一。
- 所有数据都以二进制形式捕获并保存到默认位置为 /var/log/sa/saXX 的文件(数据文件)中,其中 XX 指定月份中的某天
需要的软件包 (Sysstat)
在开始运行 sar 命令之前,请确保机器中安装了相同的所需包,即 sysstat 包
对于红帽 Linux
检查rpm是否已经存在
# rpm -qa | grep sysstat
如果未安装,执行下面命令安装:
# yum install sysstat
查看安装的文件:
[jack@test1 ~]$rpm -ql sysstat /etc/cron.d/sysstat /usr/bin/iostat /usr/bin/mpstat /usr/bin/sadf /usr/bin/sar /usr/lib64/sa /usr/lib64/sa/sa1 /usr/lib64/sa/sa2 /usr/lib64/sa/sadc
文件(程序) | 用法 |
---|---|
sysstat | 定义最大值。拯救SAR报告的日子 |
iostat | 报告中央处理单元(CPU)统计和输入/输出统计 |
mpstat | 报告处理器相关统计数据 |
sadf | 显示由SAR收集的数据以多种格式 |
sar | 收集,报告或者保存系统活动信息 |
sa | 总结会计信息 |
sa1 | 在系统活动日常数据文件中收集和存储二进制数据 |
Sa2 | 在/var/log/sa目录中编写每日报告 |
sadc | 系统活动数据收集器 |
查看sar版本
[jack@test1 ~]$sar -V sysstat version 7.0.2 (C) Sebastien Godard
使用cron作业每天收集sar报告(默认情况下,在安装sysstat包后立即创建此条目)
[root@test1 ~]# cat /etc/cron.d/sysstat # run system activity accounting tool every 10 minutes */10 * * * * root /usr/lib64/sa/sa1 1 1 # generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A
重要说明:当我说 sa1 和 sa2 都在 /var/log/sa/中创建一个文件时,请不要混淆。
重要的区别是 sa1 创建一个具有语法 saXX 的二进制文件,而 sa2 在一天结束时创建一个报告(普通文件),如 cron 作业中提供的那样。该文件是人类可读的,其语法将为 sarXX,其中 XX 是这两种情况下的月份中的第几天。