Linux 性能监控 Sar (Sysstat) 示例

网友投稿 927 2022-05-29

使用 sar,您可以实时监控各种 linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。

Sar 是 sysstat 包的一部分。

本文解释了如何安装和配置 sysstat 包(其中包含 sar 实用程序),并解释了如何使用 sar 监控以下 Linux 性能统计信息。

集体 CPU 使用率

单个 CPU 统计信息

已使用和可用的内存

已使用和可用的交换空间

系统的整体 I/O 活动

单个设备 I/O 活动

上下文切换统计

运行队列并加载平均数据

网络统计

报告特定时间的sar数据

这是 sar 实用程序所需的唯一指南。因此,请将此添加为书签以供您将来参考。

一、安装配置Sysstat

安装 Sysstat 包

首先,确保您的系统上有最新版本的 sar。根据您的发行版,使用以下任何一种方法安装它。

sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm

从源安装 Sysstat

从sysstat 下载页面下载最新版本。

您也可以使用 wget 下载

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron

注意:确保传递选项 –enable-install-cron。这会自动为您执行以下操作。如果您不使用此选项配置 sysstat,则必须自己手动完成这项丑陋的工作。

创建 /etc/rc.d/init.d/sysstat

创建从 /etc/rc.d/rc*.d/ 目录到 /etc/rc.d/init.d/sysstat 的适当链接,以在 Linux 引导过程中自动启动 sysstat。

例如,/etc/rc.d/rc3.d/S01sysstat 会自动链接到 /etc/rc.d/init.d/sysstat

在 ./configure 之后,如下图所示进行安装。

make make install

注意:这将在 /usr/local/bin 下安装 sar 和其他 sysstat 实用程序

安装后,使用“sar -V”验证 sar 版本。版本 10 是 sysstat 的当前稳定版本。

$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)

最后,确保 sar 有效。例如,下面给出系统 CPU 统计 3 次(间隔 1 秒)。

$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50

Sysstat 的实用程序部分

以下是其他 sysstat 实用程序。

sar收集并显示所有系统活动统计信息。

sadc代表“系统活动数据收集器”。这是进行数据收集的 sar 后端工具。

sa1将系统活动存储在二进制数据文件中。为此目的,sa1 依赖于 sadc。sa1 从 cron 运行。

sa2创建收集的统计信息的每日摘要。sa2 从 cron 运行。

sadf可以生成 CSV、XML 和各种其他格式的 sar 报告。使用它来将 sar 数据与其他工具集成。

iostat生成 CPU、I/O 统计信息

mpstat显示 CPU 统计信息。

pidstat根据进程 ID (PID) 报告统计信息

nfsiostat显示 NFS I/O 统计信息。

cifsiostat生成 CIFS 统计信息。

本文重点介绍 sysstat 基础知识和 sar 实用程序。

使用 cron 作业 - sa1 和 sa2 收集 sar 统计信息

在 /etc/cron.d 目录下创建 sysstat 文件,该文件将收集历史 sar 数据。

# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A

如果您从源代码安装了 sysstat,则 sa1 和 sa2 的默认位置是 /usr/local/lib/sa。如果您使用发行版更新方法(例如:yum、up2date 或 apt-get)进行安装,则可能是 /usr/lib/sa/sa1 和 /usr/lib/sa/sa2。

注意:要了解 cron 条目,请阅读Linux Crontab: 15 Awesome Cron Job Examples。

/usr/local/lib/sa/sa1

这每 10 分钟运行一次,并收集 sar 数据以供历史参考。

如果要每 5 分钟收集一次 sar 统计信息,请将上述 /etc/cron.d/sysstat 文件中的 */10 更改为 */5。

这会将数据写入 /var/log/sa/saXX 文件。XX 是一个月中的某一天。saXX 文件是一个二进制文件。您无法通过在文本编辑器中打开它来查看其内容。

例如,如果今天是该月的第 26 天,sa1 将 sar 数据写入 /var/log/sa/sa26

您可以将两个参数传递给 sa1:间隔(以秒为单位)和计数。

在上面的 crontab 示例中:sa1 1 1 表示 sa1 以 1 秒的间隔(每 10 分钟)收集 sar 数据 1 次。

/usr/local/lib/sa/sa2

这将在接近午夜(23:53)运行,以创建 sar 数据的每日摘要报告。

sa2 创建 /var/log/sa/sarXX 文件(请注意,这与 sa1 创建的 saXX 文件不同)。sa2 创建的这个 sarXX 文件是一个 ascii 文件,您可以在文本编辑器中查看它。

这也将删除超过一周的 saXX 文件。因此,编写一个每周运行的快速 shell 脚本,将 /var/log/sa/* 文件复制到其他目录以进行历史 sar 数据分析。

二、10 个实用的 Sar 用法示例

有两种调用 sar 的方法。

sar 后跟一个选项(不指定 saXX 数据文件)。这将查找当天的 saXX 数据文件并报告在当天该点之前记录的性能数据。

sar 后跟一个选项,并使用 -f 选项另外指定一个 saXX 数据文件。这将报告该特定日期的性能数据。即 XX 是一个月中的哪一天。

在下面的所有示例中,我们将解释如何查看当天的某些性能数据。要查找特定日期,请在 sar 命令末尾添加“-f /var/log/sa/saXX”。

所有 sar 命令将在其输出中的第一行包含以下内容。

$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)

Linux 2.6.18-194.el5PAE – 系统的 Linux 内核版本。

(dev-db) – 收集 sar 数据的主机名。

2011 年 3 月 26 日 – 收集 sar 数据的日期。

_i686_ – 系统架构

(8 CPU) – 此系统上可用的 CPU 数量。在多核系统上,这表示内核总数。

1.所有CPU的CPU使用率(sar -u)

这给出了所有 CPU 的累积实时 CPU 使用率。“1 3”每1秒报告3次。您很可能会关注最后一个字段“%idle”来查看 CPU 负载。

$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50

以下是一些变化:

sar -u显示当天收集到的 CPU 使用率。

sar -u 1 3每 1 秒显示一次实时 CPU 使用情况,共 3 次。

sar -u ALL与“sar -u”相同,但显示附加字段。

sar -u ALL 1 3与“sar -u 1 3”相同,但显示附加字段。

sar -u -f /var/log/sa/sa10显示 sa10 文件中每月 10 天的 CPU 使用率。

2.单个CPU或Core的CPU使用率(sar -P)

如果您的机器上有 4 个核心,并且想查看各个核心在做什么,请执行以下操作。

“-P ALL”表示它应该显示所有单个核心的统计信息。

在以下示例中,“CPU”列下的 0、1、2 和 3 表示相应的 CPU 内核编号。

$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00

“-P 1”表示它应该只显示第二个核心的统计信息。(请注意,核心编号从 0 开始)。

$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89

以下是一些变化:

sar -P ALL显示当天按所有核心细分的 CPU 使用率。

sar -P ALL 1 3每 1 秒显示所有内核的实时 CPU 使用率,共 3 次(按所有内核细分)。

sar -P 1显示当天 1 号核心的 CPU 使用率。

sar -P 1 1 3显示 1 号核心的实时 CPU 使用率,每 1 秒显示 3 次。

sar -P ALL -f /var/log/sa/sa10显示 sa10 文件中每月 10 天的所有核心细分的 CPU 使用率。

3. 可用和已用内存 (sar -r)

这会报告内存统计信息。“1 3”每1秒报告3次。您很可能会关注“kbmemfree”和“kbmemused”的空闲和已用内存。

$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204

以下是一些变化:

sar -r

sar -r 1 3

sar -r -f /var/log/sa/sa10

4. 使用的交换空间 (sar -S)

这会报告交换统计信息。“1 3”每1秒报告3次。如果“kbswpused”和“%swpused”为 0,那么您的系统没有交换。

$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00

以下是一些变化:

sar-S

sar -S 1 3

sar -S -f /var/log/sa/sa10

笔记:

使用“sar -R”来确定系统每秒释放、使用和缓存的内存页数。

使用“sar -H”标识已使用和可用的大页面(以 KB 为单位)。

使用“sar -B”生成分页统计信息。即每秒从磁盘调入(和调出)的 KB 数。

使用“sar -W”生成页面交换统计信息。即每秒换入(换出)页面。

5. 总体 I/O 活动 (sar -b)

这会报告 I/O 统计信息。“1 3”每1秒报告3次。

以下字段显示在下面的示例中。

tps – 每秒事务数(包括读取和写入)

rtps – 每秒读取事务

wtps – 每秒写入事务

bread/s– 每秒读取的字节数

bwrtn/s – 每秒写入的字节数

$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90

以下是一些变化:

sar -b

sar -b 1 3

sar -b -f /var/log/sa/sa10

注意:使用“sar -v”显示系统使用的 inode 处理程序、文件处理程序和伪终端的数量。

6. 单个块设备 I/O 活动 (sar -d)

要识别各个块设备(即特定的挂载点、LUN 或分区)的活动,请使用“sar -d”

$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91

在上面的示例中,“DEV”表示特定的块设备。

例如:“dev53-1”表示块设备,主设备号为 53,次设备号为 1。

设备名称(DEV 列)可以显示实际的设备名称(例如:sda、sda1、sdb1 等),如果使用 -p 选项(漂亮打印)如下图所示。

$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91

以下是一些变化:

Linux 性能监控 Sar (Sysstat) 示例

sar -d

sar -d 1 3

sar -d -f /var/log/sa/sa10

sar -p -d

7.每秒显示上下文切换(sar -w)

这会报告每秒创建的进程总数和每秒上下文切换的总数。“1 3”每1秒报告3次。

$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00

以下是一些变化:

sar -w

sar -w 1 3

sar -w -f /var/log/sa/sa10

8. 报告运行队列和平均负载(sar -q)

这将报告最后 1 分钟、5 分钟和 15 分钟的运行队列大小和平均负载。“1 3”每1秒报告3次。

$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0

注意: “阻塞”列显示当前阻塞并等待 I/O 操作完成的任务数。

以下是一些变化:

sar -q

sar -q 1 3

sar -q -f /var/log/sa/sa10

9. 报告网络统计信息(sar -n)

这会报告各种网络统计信息。例如:通过网卡接收(发送)的数据包数量,数据包失败的统计信息等。“1 3”每1秒报告3次。

sar -n KEYWORD

KEYWORD 可以是以下之一:

DEV – 显示 eth0、eth1 等的网络设备重要统计信息,

EDEV - 显示网络设备故障统计

NFS – 显示 NFS 客户端活动

NFSD – 显示 NFS 服务器活动

SOCK – 显示用于 IPv4 的套接字

IP – 显示 IPv4 网络流量

EIP – 显示 IPv4 网络错误

ICMP – 显示 ICMPv4 网络流量

EICMP – 显示 ICMPv4 网络错误

TCP – 显示 TCPv4 网络流量

ETCP – 显示 TCPv4 网络错误

UDP – 显示 UDPv4 网络流量

SOCK6、IP6、EIP6、ICMP6、UDP6 用于 IPv6

ALL – 显示以上所有信息。输出会很长。

$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00

使用 sar,您可以实时监控各种 Linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。

10. 使用开始时间报告 Sar 数据 (sar -s)

当您使用“sar -f”选项查看 /var/log/sa/saXX 文件中的历史 sar 数据时,它会显示该特定日期从当天凌晨 12:00 开始的所有 sar 数据。

使用“-s hh:mi:ss”选项,可以指定开始时间。例如,如果您指定“sar -s 10:00:00”,它将显示从上午 10 点开始(而不是从午夜开始)的 sar 数据,如下所示。

您可以将 -s 选项与其他 sar 选项结合使用。

例如,要从上午 10 点开始报告本月 26 日的平均负载,请组合 -q 和 -s 选项,如下所示。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0

没有限制结束时间的选项。您只需要发挥创意并使用 head 命令,如下所示。

例如,从上午 10 点开始,如果要查看 7 个条目,则必须将上述输出通过管道传输到“head -n 10”。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2

Linux Ubuntu

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【云驻共创】火遍网络的KPI异常检测到底什么梗?
下一篇:saas模式
相关文章