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

news/2024/7/7 20:16:51

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


http://lihuaxi.xjx100.cn/news/1908143.html

相关文章

Educational Codeforces Round 160 (Rated for Div. 2) A~C

目录 A. Rating Increase 题目分析: B. Swap and Delete 题目分析: C. Game with Multiset 题目分析: A. Rating Increase 题目分析: 因为首部不为零,故我们从第二个字符开始遍历,如果遇到第一个不为‘0’的字符&#xff0…

案例125:基于微信小程序的个人健康数据管理系统的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【C#】TimeSpan

文章目录 概述属性时间计算拓展来源 概述 TimeSpan结构:表示一个时间间隔。 它含有以下四个构造函数: TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。(DateTime.Tick:是计算机的一个计时周期,单位是一百纳秒&…

前端学习——关于前端框架的思考

前端框架 我们知道在AngularJS,react,vue等前端框架出现之前,前端开发都是通过js直接操作dom树来实现的,而有了前端框架之后,前端开发基本上不需要在直接操作dom树,相当于在原生html的dom树之间和前端程序…

【SpringBoot实战】基于阿里云实现文件上传

【SpringBoot实战】基于阿里云实现文件上传 在实际项目开发中&#xff0c;不可避免地会使用到阿里云OSS进行文件存储。尽管阿里云有详细的开发文档&#xff0c;但本篇博客的目的是让我们能够用简明的代码快速实现这个功能。 引入依赖 <dependencies><!-- 阿里云oss…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成

一、插件 Settings... 1.1 File -- Settings 1.2 Settings -- Plugins 1.2.1 搜索框&#xff0c;也可以直接搜索 1.3 Plugins -- 【输入 & 搜索】mybatis 1.3.1 插件不同功能介绍 1.3.2 翻译如下 1.4 选中 Update&#xff0c;更新下 1.4.1 更新中 1.4.2 Restart IDE 1…

web前端javaScript笔记——(5)原型对象和垃圾回收

原型对象 原型对象prototype 我们所创建的每一个函数&#xff0c;机械其都会向函数中添加一个属性prototype 这个属性对应着一个对象&#xff0c;这个对象就是我们所谓的原型对象 function Person(){} console.log(Person.prototype);//Object 如果函数作为普通函数调用pr…

Electron训练笔记

终端乱码解决办法&#xff1a;更改编号下载卡住解决办法&#xff1a;Electron RequestError: connect ETIMEDOUT 20.205.243.166:443electron本质是一个依赖库&#xff0c;改依赖库提供了部分对象&#xff0c;可以实现对于window的调用。electron有一个主进程&#xff0c;多个渲…