当前位置:网站首页 > 技术博客 > 正文

linux性能监控系统



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

Sar 是 sysstat 包的一部分。

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

  1. 集体 CPU 使用率
  2. 单个 CPU 统计信息
  3. 已使用和可用的内存
  4. 已使用和可用的交换空间
  5. 系统的整体 I/O 活动
  6. 单个设备 I/O 活动
  7. 上下文切换统计
  8. 运行队列并加载平均数据
  9. 网络统计
  10. 报告特定时间的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 的方法。

  1. sar 后跟一个选项(不指定 saXX 数据文件)。这将查找当天的 saXX 数据文件并报告在当天该点之前记录的性能数据。
  2. 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”。

  • 上一篇: redis category
  • 下一篇: sscom v5.12.1使用说明
  • 版权声明


    相关文章:

  • redis category2025-06-07 20:30:02
  • pycharm 单元测试2025-06-07 20:30:02
  • 介绍计算机的发展历程2025-06-07 20:30:02
  • flowable springboot2.02025-06-07 20:30:02
  • 异步fifo使用2025-06-07 20:30:02
  • sscom v5.12.1使用说明2025-06-07 20:30:02
  • 软件安装提示错误代码25032025-06-07 20:30:02
  • 数据库基础学习2025-06-07 20:30:02
  • qfile使用2025-06-07 20:30:02
  • c单例模式的几种实现方式2025-06-07 20:30:02