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

linux性能指标监控工具



目          录

一、sar工具介绍

二、sar工作原理

(一)原理概述

(二)sar数据收集器

三、sar命令语法

四、sar主要功能介绍

(一)功能概述

(二)CPU统计数据

(三)磁盘I/O统计数据

(四)网络统计数据

1、是使用-n DEV选项的sar输出

2、关于网络错误的信息可以用sar -n EDEV显示

3、SOCK参数显示IPCS套接字信息 

五、sar的版本和安装

1、版本号

2、安装


        sar(System Activity Reporter)是一个优秀的性能分析工具,用于收集、报告和分析系统活动。它可以输出Linux所完成的几乎所有工作的数据。sar命令在sysetat rpm中提供。示例中使用sysstat版本10.1.5。

        sar可以显示CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。 可以访问https://sysstat.github.io/   获取版本和下载信息。

        sar的工作原理主要是通过读取和解析系统日志文件或使用专门的数据收集器来收集系统性能数据。sar的数据来源主要有两种:

  1. 读取系统日志文件:sar可以读取系统日志文件(如/var/log/sa下的日志文件),这些日志文件包含了之前收集的系统性能数据。通过读取这些文件,sar可以提供历史性能数据的报告和分析。
  2. 使用sar数据收集器:sar还配备了一个数据收集器,通常称为sadc(System Activity Data Collector)。sadc是一个后台进程,它定期收集系统性能数据,并将其写入到系统日志文件中。这些数据包括CPU使用情况、内存使用情况、磁盘I/O、网络活动等。sadc可以根据配置的时间间隔和迭代次数来收集数据,从而提供实时或近实时的系统性能信息。

        当使用sar命令时,它会根据指定的时间间隔和迭代次数,从系统日志文件中提取相应的数据,并生成报告。sar提供了丰富的选项和参数,可以根据需要选择不同的报告类型、时间范围和数据粒度。

        Sar获取的数据对于系统管理员和性能调优人员来说非常重要,可以帮助他们了解系统的运行状况、识别瓶颈和问题,并采取相应的优化措施。

        sar数据收集通过/usr/lib64/sa 中的一个二进制可执行文件和两个脚本来完成。sar数据收集器是一个位于/usr/lib64/sa/sadc 的二进制可执行文件。sadc的工作是写入数据收集文件/var/1og/sa/。可以为sadc提供几个选项。常见语法是:

/usr/lib64/sa/sadc [ 选项 ] [ <时间间隔> [ <次数> ] ] [ <输出文件> ]

       <时间间隔>是取样间的秒数,<次数>是要取得的样本数量,<输出文件>定义输出文件。简单的sadc语法是

        /usr/lib/sa/sadc 360 5 /tmp/sadc.dat。

        这个命令在6分钟间隔取得5个样本并将它们保存在/tmp/sadc.dat。我们可以定期收集样本,因此需要一个由cron运行的脚本。应该把样本放在一个有意义的地方sysstat rpm提供/usr/lib64/sa/sa1脚本来完成所有这些事情。

        /usr/lib64/sa/sa1是一个非常简单的脚本,使用语法

        sadc -F -L 1 1 /var/log/sa/sa

        来运行sadc,其中是某月的日期。较老版本的sa1使用date+.%Y_%m_%d的输出作为文件后缀。如果需要,可以使用  -F 选项使sadc强制创建输出文件。-L  在写入输出文件之前锁定它,以防止两个sadc进程同时运行时损坏该文件。较老版本的sadc没有-L选项,因此sa1脚本执行手工锁定。sa1脚本的选项只是样本之间的间隔和取样迭代的次量。cron文件(/etc/cron.d/sysstat)和sysstat一起提供,在各sysstat版本之间它有所不同。以下是10.1.5版本的sysstat的条目:

 

        可见,在sysstat rpm安装之后,sadc开始取得样本。

        现在让我们研究 sar语法。

        sar命令的语法结构如下:

sar [options] [-A] [-f file] [interval [count]]

        其中,options 是可选的参数,用于指定sar命令的行为。-A 是一个特殊的选项,表示显示所有的报告信息。-f file 用于从指定的文件中提取报告,而不是实时收集数据。interval 是两次报告之间的时间间隔,单位是秒。count 是要显示的报告次数。

        sar命令的选项非常丰富,以下是一些常用的选项:

-A:显示所有报告信息。

-b:显示I/O速率,包括每秒读取和写入的块数。

-B:显示换页状态,包括换页活动的次数和频率。

-c:显示进程创建活动,包括每秒创建的进程数。

-d:显示每个块设备的状态,包括设备的读写活动。

-e:设置显示报告的结束时间。

-f:从指定文件提取报告。

-i:设置状态信息刷新的间隔时间。

-P:报告每个CPU的状态,包括CPU的使用率和负载情况。

-R:显示内存状态,包括内存的使用情况和交换分区的使用情况。

-u:显示CPU利用率,包括用户态、系统态和空闲态的CPU时间比例。

-v:显示索引节点、文件和其他内核表的状态。

-w:显示交换分区状态,包括交换分区的使用情况。

-x:显示给定进程的状态。

        sar命令的选项和参数可以组合使用,以满足不同的需求。同时,sar命令的输出结果也可以通过管道和重定向等方式进行进一步的处理和分析。

        sar命令的语法非常灵活,可以通过不同的选项和参数组合来实现对系统性能的全面监控和分析。同时,sar命令的输出结果也非常详细,可以帮助系统管理员和性能调优人员深入了解系统的运行状态和性能瓶颈,从而采取相应的优化措施。

sar的主要功能包括:

  1. 数据收集:sar可以收集实时或定期生成的系统活动数据。
  2. 报告生成:它可以生成多种格式的报告,包括文本、CSVXML,方便用户分析和理解系统性能。
  3. 数据存储:sar可以将收集的数据存储到文件中,以便于离线分析。这些文件可以使用sar工具或其他系统分析工具进行查看。
  4. 多维度分析:sar提供了多个维度分析系统性能的选项,比如按时间、用户、进程等。
  5. 资源监控:它可以监控系统资源的使用情况,包括CPU、内存、磁盘和网络等。
  6. 历史数据比较:通过存储的数据,sar可以进行历史数据比较,帮助管理员识别性能问题趋势。
  7. 定制报告:用户可以根据需要定制报告的内容,只收集和显示对用户有用的信息。

        sar -u输出显示CPU信息。

        -u选项是sar的默认选项。该输出以百分比显示CPU的使用情况。下表解释输出的字段的意义。 

字    段

说    明

CPU

CPU编号

통/p>

在用户模式中运行进程所花的时间

%nice

运行正常进程所花的时间

%system

在内核模式(系统)中运行进程所花的时间

%iowait

没有进程在该CPU上执行时,处理器等待I/O完成的时间

%idle

没有进程在该CPU上执行的时间

        这些看起来应该比较熟悉,它和top报告中的CPU信息内容相同。以下显示输出格式的实例:

 

其中的5 10导致sar5秒钟间隔取得10个样本。任何sar报告的第一列都是时间戳。

我们可以使用-f选项通过sadc创建的文件。如下 sar语法

sar -f /var/log/sa/sa22 | head -n 20

        显示sar -f/var/log/ sa/sa22的输出,实际操作效果如下:

 

在多CPU Linux系统中,sar命令也可以为每个CPU分解该信息,如以下sar -u -P ALL 5 5输出所示:

 

        sar是一个研究磁盘I/O的优秀工具。以下是sar磁盘I/O输出的一个示例。

 

第一行 -d 显示磁盘I/O信息,5 2 选项是间隔和迭代,就像sar数据收集器那样。下表列出了字段和说明。

字    段

说    明

DEV

磁盘设备

tps

每秒传输数(或者每秒IO数)

rd_sec/s

每秒512字节读取数

wr_sec/s

每秒512字节写入数

512 只是一个测量单位,不表示所有磁盘I/O均使用 512 字节块。DEV列是 dev#-#  格式的磁盘设备,其中第一个#是设备主编号,第二个 是次编号或者连续编号。例如,在sar -d 输出中看到的dev8-0。它们对应于/dev/sda。请看/dev中的以下显示:

 

/dev/hda有主编号8和次编号0

        sar提供四种不同的语法选项来显示网络信息。-n 选项使用四个不同的开关:DEVEDEVSOCKFULLDEV显示网络接口信息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息,FULL显示所有三个开关。它们可以单独或者一起使用。下表显示通过-n DEV选项报告的字段。

字    段

说   明

IFACE

LAN接口

rxpck/s

每秒钟接收的数据包

txpck/s

每秒钟发送的数据包

rxbyt/s

每秒钟接收的字节数

txbyt/s

每秒钟发送的字节数

rxcmp/s

每秒钟接收的压缩数据包

txcmp/s

每秒钟发送的压缩数据包

rxmcst/s

每秒钟接收的多播数据包

1、是使用-n DEV选项的sar输出

如下示例,采用命令 sar -n DEV 5 3 ,效果如下:

 

2、关于网络错误的信息可以用sar -n EDEV显示

        如下示例,采用命令 sar -n EDEV 5 3 ,效果如下:

 

下表列出了显示的字段。

字    段

说    明

IFACE

LAN接口

rxerr/s

每秒钟接收的坏数据包

txerr/s

每秒钟发送的坏数据包

coll/s

每秒冲突数

rxdrop/s

因为缓冲充满,每秒钟丢弃的已接收数据包数

txdrop/s

因为缓冲充满,每秒钟丢弃的已发送数据包数

txcarr/s

发送数据包时,每秒载波错误数

rxfram/s

每秒接收数据包的帧对齐错误数

rxfifo/s

接收的数据包每秒FIFO过速的错误数

txfifo/s

发送的数据包每秒FIFO过速的错误数

3、SOCK参数显示IPCS套接字信息 

   下表列出显示的字段及其意义。

字    段

说    明

totsck

使用的套接字总数量

tcpsck

使用的TCP套接字数量

udpsck

使用的UDP套接字数量

rawsck

使用的raw套接字数量

ip-frag

使用的IP段数量

        如下示例,采用命令 sar -n SOCK 5 3 ,效果如下:

 

        sar可以产生许多其他报告。我们可以仔细阅读sar1)手册页,查看是否有自己需要的其他报告。

        在CentOS中,要查看sar的版本,你可以使用sar -V命令。

 

        请确保你已经安装了sysstat软件包,因为sar工具通常是sysstat软件包的一部分。

        可以使用以下命令来安装sysstat:

sudo yum install sysstat

        安装完成后,你可以通过运行以下命令来查看sysstat的版本:

        rpm -qa | grep sysstat

 

版权声明


相关文章:

  • 数据结构第5章树和二叉树答案2025-03-15 11:30:04
  • linux中waitpid的作用2025-03-15 11:30:04
  • 分布式缓存服务redis2025-03-15 11:30:04
  • 自动开关机软件哪个好2025-03-15 11:30:04
  • 指针运算c语言2025-03-15 11:30:04
  • java测试项目2025-03-15 11:30:04
  • 结构体数组的常见问题2025-03-15 11:30:04
  • 深度置信网络 简单理解2025-03-15 11:30:04
  • libcurl教程2025-03-15 11:30:04
  • 什么叫线程安全2025-03-15 11:30:04