系统活动报告器 :sar 优化性能 | 解读系统运行状态

发布时间:2023年12月22日

sar:系统活动报告器

sar 是 System Activity Reporter 的缩写,是一个系统性能监视工具,用于收集、报告以及分析系统的活动信息。能够收集系统各种资源的使用情况,如CPU利用率、内存使用、磁盘I/O等,并将这些信息保存在文件中,供后续分析和监视使用。

sar 能够提供关于系统资源的历史信息,对于系统性能分析和故障排除非常有用。通过预先设置的时间间隔,定期地记录系统的活动状态,并将数据保存在指定的文件中,这样就可以在需要的时候进行查看和分析。

sar包含在 sysstat 软件包中。通过命令行可以调用 sar 监视查看资源历史数据,还可以分析和比较不同时间段的数据,从而了解系统在不同时间的性能状况。
::: hljs-center

image.png

:::

起源 | 介绍

最初由 Solbourne Computer 公司开发,用于 SunOS 操作系统。随后被移植到多个 UNIX 和类 UNIX 操作系统上,包括 Linux。

sar主要基于在系统上运行的后台守护进程,守护进程定期收集系统的性能指标数据。数据可以通过配置文件来控制收集的频率和种类。
默认情况下,sar每隔(10分钟)收集一次数据。
sar 工作流程:

  1. 数据收集:sar会在后台周期性地收集系统性能数据,比如CPU使用率、内存利用率、磁盘I/O、网络活动等。
  2. 数据存储:收集到的数据以二进制或文本文件的形式存储在指定的位置,默认/var/log/sa目录下。
  3. 报告生成:sar命令来生成报告,根据需要查看历史性能数据。

sar 的力量

sar 收集的系统统计信息包括:

  • 输入/输出以及传输速率统计信息(全局、每个设备、每个分区和每个网络文件系统);
  • CPU 统计信息(全局和每个 CPU),包括对虚拟化体系结构的支持;
  • 内存、大页和交换空间利用率统计信息;
  • 虚拟内存、分页和故障统计信息;
  • 流程创建活动;
  • 中断统计信息(全局、每个 CPU 和每个中断,包括潜在的 APIC 中断源、硬件和软件中断);
  • 广泛的网络统计信息:网络接动(每秒接收和传输的数据包数和 kB 数等),包括网络设备的故障;基于SNMPv2标准的IP、TCP、ICMP和UDP协议的- 网络流量统计;支持 IPv6 相关协议;
  • 光纤通道流量统计;
  • 基于软件的网络处理(softnet)统计信息;
  • NFS 服务器和客户端活动;
  • 套接字统计信息;
  • 运行队列和系统负载统计信息;
  • 内核内部表利用率统计信息;
  • 交换统计;
  • TTY 设备活动;
  • 电源管理统计信息(瞬时和平均 CPU 时钟频率、风扇速度、设备温度、电压输入);
  • 插入系统的 USB 设备;
  • 文件系统利用率(索引节点和块);
  • 压力失速信息统计;

基本语法

sar [选项] [时间间隔] [次数]
  • 选项:指定要获取的性能数据,比如 -u 用于CPU使用率,-r 用于内存使用情况等。
  • 时间间隔:表示每次采样的时间间隔。
  • 次数:表示执行 sar 命令的次数,即采样的次数。

sar 还支持许多其他选项和标志,允许你筛选特定时间段的数据、将数据保存到文件中、显示历史数据等。

常用选项
  • -u:显示CPU使用情况。
  • -r:显示内存的使用情况。
  • -b:显示磁盘I/O统计信息。
  • -n:显示网络统计信息。
  • -q:显示负载统计信息。
  • -P:显示系统中每个CPU的统计信息。
  • -A:显示系统所有可用的报告。

此外,还可以使用以下参数:

  • -f:指定历史文件分析已记录的数据。
  • -s-e:指定开始和结束时间。
  • -o:将数据保存到文件中。
  • -p:显示指定 PID 的数据。
  • -h:显示帮助信息。
  • -c: 用于指定要发送的命令, -c ls /root
  • #时间间隔:表示数据收集的时间间隔。例如,-u 5表示每5秒收集一次CPU使用情况。
  • #次数:表示数据收集的次数。例如,-u 5 10表示每5秒收集一次CPU使用情况,共收集10次。
语法示例
  • 显示CPU使用情况:

    sar -u
    
  • 显示磁盘I/O统计信息:

    sar -b
    
  • 显示网络统计信息:

    sar -n
    
  • 指定时间间隔和次数:

    sar -u 5 10
    

sar命令执行后,会显示收集的性能数据。此外,sar的输出也可以重定向到文件进行保存以供日后分析

sar -u > cpu_usage.txt

image.png

数据收集

  • 性能监控:收集 CPU、内存、磁盘 I/O、网络等资源的使用情况。
  • 数据记录:周期性记录系统活动数据,并保存为文件以供后续分析。
  • 时间间隔设置:用户可以设置收集数据的时间间隔,从而灵活控制数据的采集频率。
  • 历史数据比较:允许比较不同时间段的数据,帮助了解系统性能的变化。
    sar,可以监视系统性能的变化,识别潜在的性能问题,并根据历史数据做出调整和优化,确保系统运行最佳状态。
    sar命令的高级功能和用法允许更深入地分析系统性能,包括定时收集、报告生成以及与其他工具的结合等。
定时收集

可以使用crontab或其他定时任务工具设置sar命令周期性地收集系统性能数据,保存到文件中进行分析。

报告生成

sar命令生成报告,将性能数据整理为易读的格式。结合选项 -f-o 来读取之前保存的数据文件并生成报告:

sar -f /var/log/sa/sar -n DEV > network_report.txt

image.png

数据存储

sar命令收集的数据存储在指定的系统日志目录(默认 /var/log/sa/)中。

报告示例

使用sar 和 awk 结合,提取系统负载信息:

#!/bin/bash

# 收集系统活动数据
sar -q 1 5 > system_load.txt  # 每秒采样一次,共采样5次,保存到文件

# 使用 awk 分析并提取数据
awk '/Average:/ {print "Average load: "$4}' system_load.txt  # 提取平均负载信息
awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt  # 提取CPU空闲百分比

# 删除临时文件
rm system_load.txt

示例释义:

  1. 使用 sar -q 1 5 > system_load.txt 命令采集系统活动数据。每秒采集一次,共采集5次,将结果保存到名为 system_load.txt 的文件中。
    详细输出:
Linux 5.4.0-70-generic (hostname)    07/10/21    _x86_64_    (4 CPU)

12:00:01 AM    runq-sz   plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
12:00:02 AM         1       120       0.01       0.03       0.00         0
12:00:03 AM         1       120       0.01       0.03       0.00         0
12:00:04 AM         1       120       0.01       0.03       0.00         0
12:00:05 AM         1       120       0.01       0.03       0.00         0
Average:            1       120       0.01       0.03       0.00         0

这里是每秒采集一次的系统负载情况,包括 runq-sz(运行队列长度)、plist-sz(进程列表长度)和 ldavg-1ldavg-5ldavg-15(1分钟、5分钟和15分钟的平均负载)以及 blocked(被阻塞的进程数)等信息。最后一行是这五次采样的平均值。

这些指标提供系统负载和进程等待情况的重要信息,有助于评估系统的性能和稳定性。
2. 使用 awk 命令分析 system_load.txt 文件提取所需的数据。
3. awk '/Average:/ {print "Average load: "$4}' system_load.txt 提取平均负载信息
4. awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt 提取CPU空闲百分比。
5. 最后, rm system_load.txt 删除文件。

场景

  • 收集数据:收集系统活动数据。
  • 分析和比较:对数据进行分析和比较。
  • 监视性能:定期查看和监视系统活动文件,了解系统性能变化。
  • 性能调优:帮助系统管理员优化系统性能,发现系统瓶颈并进行优化。
  • 故障排查:通过历史性能数据帮助排查问题并进行故障排除。
  • 资源规划:根据历史数据制定资源规划和管理策略。

总结

sar 是一款强大的系统性能监视工具,通过收集和记录系统的活动信息,展示系统在不同时间段的性能数据,帮助我们更好的了解系统的性能状况并进行问题排查。对于系统性能分析和故障排除都具有重要作用。因其提供了丰富的系统性能数据和监控能力而受到青睐。
sar 在几乎所有主流的 Linux 发行版中都有支持,并且是轻量级的监控工具,不会对系统性能造成很大负担。

参考链接:

https://github.com/sysstat/sysstat
http://pagesperso-orange.fr/sebastien.godard/


喜欢的话,请收藏+关注~
万一有趣的事还在后头呢~
42CF4001.png

文章来源:https://blog.csdn.net/u010691082/article/details/135142188
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。