使用 sar,您可以实时监控各种 Linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。
Sar 是 sysstat 包的一部分。
本文解释了如何安装和配置 sysstat 包(其中包含 sar 实用程序),并解释了如何使用 sar 监控以下 Linux 性能统计信息。
- 集体 CPU 使用率
- 单个 CPU 统计信息
- 已使用和可用的内存
- 已使用和可用的交换空间
- 系统的整体 I/O 活动
- 单个设备 I/O 活动
- 上下文切换统计
- 运行队列并加载平均数据
- 网络统计
- 报告特定时间的sar数据
这是 sar 实用程序所需的唯一指南。因此,请将此添加为书签以供您将来参考。
首先,确保您的系统上有最新版本的 sar。根据您的发行版,使用以下任何一种方法安装它。
从sysstat 下载页面下载最新版本。
您也可以使用 wget 下载
注意:确保传递选项 –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
在 https://bbs.huaweicloud.com/blogs/configure 之后,如下图所示进行安装。
注意:这将在 /usr/local/bin 下安装 sar 和其他 sysstat 实用程序
安装后,使用“sar -V”验证 sar 版本。版本 10 是 sysstat 的当前稳定版本。
最后,确保 sar 有效。例如,下面给出系统 CPU 统计 3 次(间隔 1 秒)。
以下是其他 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 实用程序。
在 /etc/cron.d 目录下创建 sysstat 文件,该文件将收集历史 sar 数据。
如果您从源代码安装了 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。
- 这每 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 次。
- 这将在接近午夜(23:53)运行,以创建 sar 数据的每日摘要报告。
- sa2 创建 /var/log/sa/sarXX 文件(请注意,这与 sa1 创建的 saXX 文件不同)。sa2 创建的这个 sarXX 文件是一个 ascii 文件,您可以在文本编辑器中查看它。
- 这也将删除超过一周的 saXX 文件。因此,编写一个每周运行的快速 shell 脚本,将 /var/log/sa/* 文件复制到其他目录以进行历史 sar 数据分析。
有两种调用 sar 的方法。
- sar 后跟一个选项(不指定 saXX 数据文件)。这将查找当天的 saXX 数据文件并报告在当天该点之前记录的性能数据。
- sar 后跟一个选项,并使用 -f 选项另外指定一个 saXX 数据文件。这将报告该特定日期的性能数据。即 XX 是一个月中的哪一天。
在下面的所有示例中,我们将解释如何查看当天的某些性能数据。要查找特定日期,请在 sar 命令末尾添加“-f /var/log/sa/saXX”。
所有 sar 命令将在其输出中的第一行包含以下内容。
- Linux 2.6.18-194.el5PAE – 系统的 Linux 内核版本。
- (dev-db) – 收集 sar 数据的主机名。
- 2011 年 3 月 26 日 – 收集 sar 数据的日期。
- _i686_ – 系统架构
- (8 CPU) – 此系统上可用的 CPU 数量。在多核系统上,这表示内核总数。
这给出了所有 CPU 的累积实时 CPU 使用率。“1 3”每1秒报告3次。您很可能会关注最后一个字段“%idle”来查看 CPU 负载。
以下是一些变化:
- 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 使用率。
如果您的机器上有 4 个核心,并且想查看各个核心在做什么,请执行以下操作。
“-P ALL”表示它应该显示所有单个核心的统计信息。
在以下示例中,“CPU”列下的 0、1、2 和 3 表示相应的 CPU 内核编号。
“-P 1”表示它应该只显示第二个核心的统计信息。(请注意,核心编号从 0 开始)。
以下是一些变化:
- 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 使用率。
这会报告内存统计信息。“1 3”每1秒报告3次。您很可能会关注“kbmemfree”和“kbmemused”的空闲和已用内存。
以下是一些变化:
- sar -r
- sar -r 1 3
- sar -r -f /var/log/sa/sa10
这会报告交换统计信息。“1 3”每1秒报告3次。如果“kbswpused”和“%swpused”为 0,那么您的系统没有交换。
以下是一些变化:
- sar-S
- sar -S 1 3
- sar -S -f /var/log/sa/sa10
笔记:
- 使用“sar -R”来确定系统每秒释放、使用和缓存的内存页数。
- 使用“sar -H”标识已使用和可用的大页面(以 KB 为单位)。
- 使用“sar -B”生成分页统计信息。即每秒从磁盘调入(和调出)的 KB 数。
- 使用“sar -W”生成页面交换统计信息。即每秒换入(换出)页面。
这会报告 I/O 统计信息。“1 3”每1秒报告3次。
以下字段显示在下面的示例中。
- tps – 每秒事务数(包括读取和写入)
- rtps – 每秒读取事务
- wtps – 每秒写入事务
- bread/s– 每秒读取的字节数
- bwrtn/s – 每秒写入的字节数
以下是一些变化:
- sar -b
- sar -b 1 3
- sar -b -f /var/log/sa/sa10
注意:使用“sar -v”显示系统使用的 inode 处理程序、文件处理程序和伪终端的数量。
要识别各个块设备(即特定的挂载点、LUN 或分区)的活动,请使用“sar -d”
在上面的示例中,“DEV”表示特定的块设备。
例如:“dev53-1”表示块设备,主设备号为 53,次设备号为 1。
设备名称(DEV 列)可以显示实际的设备名称(例如:sda、sda1、sdb1 等),如果使用 -p 选项(漂亮打印)如下图所示。
以下是一些变化:
- sar -d
- sar -d 1 3
- sar -d -f /var/log/sa/sa10
- sar -p -d
这会报告每秒创建的进程总数和每秒上下文切换的总数。“1 3”每1秒报告3次。
以下是一些变化:
- sar -w
- sar -w 1 3
- sar -w -f /var/log/sa/sa10
这将报告最后 1 分钟、5 分钟和 15 分钟的运行队列大小和平均负载。“1 3”每1秒报告3次。
注意: “阻塞”列显示当前阻塞并等待 I/O 操作完成的任务数。
以下是一些变化:
- sar -q
- sar -q 1 3
- sar -q -f /var/log/sa/sa10
这会报告各种网络统计信息。例如:通过网卡接收(发送)的数据包数量,数据包失败的统计信息等。“1 3”每1秒报告3次。
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,您可以实时监控各种 Linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。
当您使用“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 选项,如下所示。
没有限制结束时间的选项。您只需要发挥创意并使用 head 命令,如下所示。
例如,从上午 10 点开始,如果要查看 7 个条目,则必须将上述输出通过管道传输到“head -n 10”。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/14326.html