在Linux中使用SAR命令进行系统监视的示例

时间:2020-03-21 11:43:31  来源:igfitidea点击:

System Activity Reporter是一个重要的工具,可以帮助系统管理员在不同的时间点获得具有不同重要指标状态的服务器计算机的概述。

如果假设当前系统有问题,就像某些客户无法从数据库中列出一些数据一样。
大多数Linux系统管理员要做的第一件事是回顾同一事件的先前发生时间,如果我们还记得其先前发生的日期,则可以轻松地将内部系统统计信息与当前统计信息进行比较。

SAR在做到这一点方面非常有帮助。

我们需要做的第一件事是检查并确认计算机上是否安装了SAR实用程序。
可以通过列出所有rpm并找到该实用程序来进行检查。

SAR是sysstat中的实用程序之一。
我们可以通过YUM轻松地将其轻松下载并安装到计算机中。
(但是,不用担心,因为大多数发行版都预装有sysstat工具

)。

[root@myvm1 ~]# yum install sysstat

是的,但请确保已启用epel,rpmformge存储库以进行安装。
否则,发行DVD将是寻找包装的好地方。

SAR(系统活动报告者)将提供有关以下内容的信息:

  • 系统缓冲区活动
  • 有关系统调用的信息
  • 阻止设备信息
  • 整体分页信息
  • 信号量和内存分配信息
  • CPU利用率和进程报告

关于SAR,我们需要了解的主要内容是,所有操作都使用cron完成。
在许多Linux发行版中,默认情况下,我们将有一个名为/etc/cron.d/sysstat的文件。

让我们看看SAR的工作原理。

如果我们开始考虑系统监视,那么该工具必须具有有关系统不同方面的每一个数据,并且必须涵盖所有时间间隔。
这意味着监视系统必须能够在给定时间内提供机器的统计信息。

除了在确定的时间间隔内获取计算机的所有度量标准和统计信息外,没有其他方法。
减少收集统计信息的时间间隔将增加我们拥有的详细统计信息的数量(因为我们将拥有有关系统的更多数据)。

SAR正是这样做的。
sar在确定的时间间隔内获取机器不同方面的统计信息。
因此,SAR通过CRON运行。

[root@myvm ~]# 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
  • 因此,从上面的SAR cron文件可以看出,每10分钟运行一次的“ sa1”脚本位于“/usr/lib64/sa /”
  • 并且在一天结束时还在23.53左右运行脚本/usr/lib64/sa/sa2

因此,SAR(/usr/lib64/sa/sa1)的第一个cron条目将每10分钟运行一次,这反过来将调用sadc实用程序来收集系统统计信息并将其存储在二进制文件中(每天一个文件)

第二个cron条目会将该二进制文件的所有内容转储到另一个文本文件中,并清除早于特定天数的数据,通常默认情况下为7天(在以下文件中提到),

[root@archive ~]# cat /etc/sysconfig/sysstat
# How long to keep log files (days), maximum is a month
HISTORY=7

因此,我们可以通过编辑文件轻松地修改该“历史记录”条目。

因此,尽管通过cron每隔10分钟收集一次系统统计信息(将cron更改为每1分钟运行一次以获取更准确的信息)。
如果要查看统计信息,则需要运行以下命令。

简单的sar命令输出如下所示。

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:01:01 AM     all     73.28      0.00      1.25      0.00      0.00     25.47
12:02:01 AM     all      7.83      0.00      0.44      0.00      0.00     91.73
12:03:01 AM     all     61.65      0.00      0.70      0.00      0.00     37.66
12:04:01 AM     all     57.85      0.00      0.82      0.00      0.00     41.34
12:05:01 AM     all      4.25      0.00      0.41      0.00      0.00     95.34
12:06:01 AM     all      4.20      0.00      0.22      0.00      0.00     95.58
12:07:01 AM     all      5.05      0.00      0.33      0.00      0.00     94.63
12:08:01 AM     all      4.76      0.00      0.06      0.00      0.00     95.18
12:09:01 AM     all     37.57      0.00      0.37      0.00      0.00     62.05
12:10:01 AM     all     70.04      0.00      0.80      0.00      0.00     29.16
12:11:01 AM     all      5.03      0.00      0.12      0.00      0.00     94.84

从输出中可以看到,它向我报告每分钟收集的统计信息的输出(这意味着我每隔1分钟就有我的cron),并且将显示整天的详细信息(或者显示直到我们键入了命令)。

了解SAR命令的输出

%user:这显示处理器在不同进程YCX5UKN5ZKEJ上花费的总时间

%sys:显示处理器花费在操作系统任务上的时间百分比(因为前一个用户显示了用户终端进程花费的时间)

%iowait:iowait本身的名称提示它是处理器等待设备(输入和输出)所花费的时间

%nice:你们中的大多数人都必须知道用户可以通过更改Linux中的nice值来更改Linux中进程的优先级。

下表显示了CPU花费在更改其漂亮值的进程上的时间。

%steal:此列显示CPU(已虚拟化)为物理CPU上的资源花费的时间

%idle:这表明处理器花费的空闲时间。

缺省情况下,sar将其所有数据存储在/var/log/sa /下,并且一天的名称如下所示。

s01表示每月的第一天

s02-每月的第二天

s03,s04 ..等等。

SAR命令中的-d选项

此-d选项可用于报告与连接到系统的不同设备(块设备)有关的每个活动。
带有-d选项的sar命令的典型输出如下所示。

12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
12:01:01 AM    dev3-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Cards Typically
12:01:01 AM   dev3-64      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:01:01 AM    dev8-0     55.62      9.98   8317.87    149.72     13.68    245.96      2.61     14.52
12:01:01 AM   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:02:01 AM    dev3-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:02:01 AM   dev3-64      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:02:01 AM    dev8-0      1.55      0.00     35.29     22.70      0.01      7.26      1.86      0.29
12:02:01 AM   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:03:01 AM    dev3-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:03:01 AM   dev3-64      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

DEV:此列根据Linux块设备的主要和次要名称为计算机上的设备命名。
我们可以通过在/dev目录中执行ls -l进行检查。
如下所示。

brw-r-----  1 root disk   8,    0 Nov 16 16:29 sda
brw-r-----  1 root disk   8,    1 Nov 16 16:29 sda1
brw-r-----  1 root disk   8,    2 Nov 16 16:29 sda2

在上面显示的“ sda”的“ ls -l”输出中,主要数字为“ 8”,次要数字为“ 0” ...因此我们可以轻松识别sar命令输出中提到的磁盘。

tps:tps表示每秒的传输,因此它显示了每秒到该特定设备的传输

rd_sec/s:这将显示正在读取的该设备上的扇区总数

wr_sec/s:如果rd_sec/s是每秒读取的扇区,那么显然wr_sec是每秒写入的扇区。

avgrq-sz:此列显示平均值。

await:这显示处理器等待有关IO的请求的总时间

%util:此列以百分比显示生成请求时cpu的使用情况

在SAR命令中显示内存使用情况

sar命令中可用的-r选项非常有用。
它显示每个时间间隔或者所需时间间隔的内存,交换,缓存的内存等。

02:20:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
02:30:01 AM    609500   1487652     70.94    242420    777560   1075980       364      0.03       360
02:40:01 AM    609500   1487652     70.94    242424    777568   1075980       364      0.03       360
02:50:01 AM    609500   1487652     70.94    242424    777592   1075980       364      0.03       360
03:00:01 AM    608980   1488172     70.96    242424    777600   1075980       364      0.03       360
03:10:01 AM    608584   1488568     70.98    242424    777628   1075980       364      0.03       360
03:20:01 AM    608584   1488568     70.98    242424    777648   1075980       364      0.03       360

在上面的输出中,大多数列都是不言自明的(并且大多数输出以KB为单位)。

kbmemfree:这显示可用内存量

Kbmemused:已使用的内存

%memused:已使用的内存百分比

kbbuffers:内核使用的缓冲内存。

kbcached:内核使用的缓存内存

内存的所有其他条目都是swap(可用,已用,百分比等)

如何在Linux中使用SAR获取特定日期的指标

如前所述,特定日期的所有指标均以sa <month of day>的方式保存。
因此,如果我想知道当月27日的指标,就可以轻松找到该指标,如下所示。

[root@archive ~]# sar -f /var/log/sa/sa27
Linux 2.6.18-194.el5xen (archive.r)     11/27/2012

02:20:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
02:30:01 AM       all      2.58      0.00      0.70      1.12      0.05     95.55
02:40:01 AM       all      2.56      0.00      0.69      1.05      0.04     95.66
02:50:01 AM       all      2.64      0.00      0.65      1.15      0.05     95.50
03:00:01 AM       all      3.27      0.00      0.71      1.12      0.04     94.86

在上面的命令中,我们已将/var/log/sa/sa27作为参数传递,因为我当天需要统计数据。
按照上面的命令中的要求传递sa <month of day>

如何在特定日期的特定时间获取SAR指标

这可以通过传递如下所示的另一个参数来实现。

[root@archive ~]# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00
Linux 2.6.18-194.el5xen (archive.r)     11/27/2012

02:20:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
02:30:01 AM       all      2.58      0.00      0.70      1.12      0.05     95.55
02:40:01 AM       all      2.56      0.00      0.69      1.05      0.04     95.66
02:50:01 AM       all      2.64      0.00      0.65      1.15      0.05     95.50
03:00:01 AM       all      3.27      0.00      0.71      1.12      0.04     94.86
03:10:01 AM       all      2.72      1.06      0.75      1.09      0.04     94.33
Average:          all      2.76      0.21      0.70      1.11      0.04     95.18

在上面显示的示例中,我要求sar在当月27日的2:20:00和3:20:00之间获取指标

我们甚至可以传递任何其他度量标准选项以及时间间隔...,例如-d或者-r

你注意到了吗 ?
SAR可以准确地向我们显示特定日期在特定时间的机器统计信息,因此可以更轻松地识别瓶颈。

结合使用-A选项和上述命令,将显示ALL(由sar收集的所有度量标准)。

sar -f/var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A

输出将是详尽的。
屏幕上的-A选项将使我们几乎获得sar中的所有内容!

使用sar命令显示网络统计信息

sar命令甚至显示网络统计信息。
这可以通过在sar命令中使用-n DEV选项来完成。

[root@archive ~]# sar -n DEV
Linux 2.6.18-194.el5xen (archive.r)     11/27/2012

02:20:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
02:30:01 AM        lo      0.01      0.01      0.77      0.77      0.00      0.00      0.00
02:30:01 AM      eth0     12.30      0.12   1285.06     27.59      0.00      0.00      0.00
02:30:01 AM      eth1     14.45      0.00   1399.34      0.00      0.00      0.00      0.00
02:30:01 AM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:40:01 AM        lo      0.01      0.01      0.77      0.77      0.00      0.00      0.00
02:40:01 AM      eth0     10.65      0.12   1139.38     27.00      0.00      0.00      0.00
02:40:01 AM      eth1     13.96      0.00   1352.87      0.00      0.00      0.00      0.00

IFACE:代表网卡接口名称

rxpck/s:显示每秒接收的总数据包

txpck/s:每秒传输的数据包

rxcmp/s:收到压缩包

txcmp/s:传输压缩包

rxmcst/s:每秒组播的数据包。

可以使用sar确定的其他一些指标

sar中的-y选项:可用于确定tty详细信息

sar中的-X选项可获取特定进程的详细信息。
我们需要将pid作为参数传递给该选项。

sar中的-n SOCK选项:此选项将报告所有套接字详细信息。