Linux 监测工具SAR和KSAR

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利用率的百分比。
%iowaitCPU或者CPU闲置的时间百分比其中系统具有出色的磁盘I/O请求。
%steal显示虚拟CPU或者CPU的非自愿时间花费的时间百分比,而管理程序正在提供另一种虚拟处理器。
%idleCPU或者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 是这两种情况下的月份中的第几天。

日期:2020-06-02 22:18:42 来源:oir作者:oir