Sysstat是一种在Linux系统服务器中常用的软件工具包,可以用来监控服务器的性能。比如可以监控CPU、硬盘、网络等数据,我们可以用来进行分析服务器的性能和资源的使用效率。我们将在在这篇文章中学习、使用Sysstat监控工具包的安装和常用命令。

Linux下,我们多用ssh链接服务器远程操控。对于系统的监控必不可少,sysstat很不错的监控工具包。

对sysstat做一个介绍:“SYSSTAT是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手”。

Linux下Sysstat性能监控工具的安装

目前主流的Linux系统里都自带有sysstat的集成包

1、Ubuntu下安装方法

sudo apt-get install sysstat

2、Git安装包安装

yum install -y git
git clone git://github.com/sysstat/sysstat
cd sysstat
./configure
make &&make install

CentOS/Red Hat平台下我们可以通过下列命令安装:

yum -y install sysstat

3、检查是否成功,安装完毕之后,用命令检查是否可以看到当前版本。

linuxmi@linuxmi:~/www.linuxmi.com$ sar -V
sysstat 版本 12.2.0
(C) Sebastien Godard (sysstat <at> orange.fr)

如下图:

Linux下sysstat安装使用图文详解

看到上图,就表示Sysstat安装成功。

Linux下sysstat使用方法:

sysstat工具包包含的工具:

  • iostat 工具提供CPU使用率及硬盘吞吐效率的数据;  #比较核心的工具
  • mpstat 工具提供单个处理器或多个处理器相关数据;
  • pidstat: 关于运行中的进程/任务、CPU、内存等的统计信息
  • sar 工具负责收集、报告并存储系统活跃的信息;    #统计数据的核心工具
  • sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序;
  • sa2工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用
  • sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;
  • sadf 显示被sar通过多种格式收集的数据;
  • nfsiostat: NFS(Network File System)的I/O统计信息。
  • cifsiostat: CIFS(Common Internet File System)的统计信息

主要说明其所包含的工具sadc、sdaf、sar、iostat、mpstat的用法。

查看命令的参数:  xxx –help

[ <interval> [ <count> ] ] [ <outfile> ]

间隔 s          次数                输出文件

1、iostat

linuxmi@linuxmi:~/www.linuxmi.com$ iostat –help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | … } ]
[ –dec={ 0 | 1 | 2 } ] [ –human ] [ -o JSON ]
[ [ -H ] -g <用户组名> ] [ -p [ <设备> [,…] | ALL ] ]
[ <设备> […] | ALL ]

 如下图:

参数释义:

-c : 仅显示cpu的状态
-d : 仅显示存储设备的状态,不可以和-c一起使用
-k :默认显示的是读入读出的block信息,用-k可以改成KB大小来显示 -m
-t  : 显示日期
-p device | ALL :
device为某个设备或者某个分区,如果使用ALL,就表示要显示所有分区和设备的信息

示例:

linuxmi@linuxmi:~/www.linuxmi.com$ iostat -c 1 3
Linux 5.9.0-050900-generic (linuxmi)     2020年11月22日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.58    0.26    3.39    0.06    0.00   93.71

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.52    0.00    3.26    0.00    0.00   90.22

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.26    0.00    5.32    0.00    0.00   90.43

-x 显示扩展状态,显示出更多内容

linuxmi@linuxmi:~/www.linuxmi.com$ iostat -x
Linux 5.9.0-050900-generic (linuxmi) 2020年11月22日 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
2.59 0.26 3.39 0.06 0.00 93.70

如下图:(点击下图看大图)

说明:

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。
delta(use)/s/1000 (因为use的单位为毫秒)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.  #CPU空闲等待时间

2、mpstat

mpstat 用于多处理器系统中的CPU的利用率的统计。细化到具体某个cpu的状态时可以使用参数-P,处理器的ID从0开始

linuxmi@linuxmi:~/www.linuxmi.com$ mpstat –help
用法: mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]
[ –dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <CPU_列表> | ALL } ]

linuxmi@linuxmi:~/www.linuxmi.com$ mpstat -P 0 1 2

说明:

%user    显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice    显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。
%irq  显示在interval时间段内,硬中断占用的CPU总时间。
%soft  显示在interval时间段内,软中断占用的CPU总时间。
%steal  管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
%idle    显示 CPU 空闲时间占用CPU总时间的百分比。
intr/s 在internal时间段里,每秒CPU接收的中断的次数。

3、sadf

sadf 能从二进制文件中提取sar所收集的数据;显示的格式不如sar直观,其主要用于导出为csv、xml等格式的文件,方便导入数据库或excel等程序.

linuxmi@linuxmi:~/www.linuxmi.com$ sadf –help
用法: sadf [ 选项 ] [ <时间间隔> [ <次数> ] ] [ <数据文件> | -[0-9]+ ]
选项:
[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]
[ -O <选项> [,…] ] [ -P { <cpu> [,…] | ALL } ]
[ –dev=<设备列表> ] [ –fs=<文件系统列表> ] [ –iface=<iface_列表> ]
[ -s [ <时:分[:秒]> ] ] [ -e [ <时:分[:秒]> ] ]
[ — <sar_选项> ]

如下图:

4、sar

sar 工具比较强大,既能收集系统CPU、硬盘、动态数据,也能显示动态显示,更能查看二进制数据文件;sar 的应用比较多,而且也比较复杂,数据更为精确。我们只了解一下常用的内容就行,大多数内容我们了解就行。

linuxmi@linuxmi:~/www.linuxmi.com$ sar –help
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
主要选项和报告(报告名以方括号分隔):
-B 分页状况 [A_PAGE]
-b I/O 和传输速率信息状况 [A_IO]
-d 块设备状况 [A_DISK]
-F [ MOUNT ]
文件系统统计信息 [A_FS]
-H 巨大页面利用率 [A_HUGE]
-I { <中断列表> | SUM | ALL }
中断信息状况 [A_IRQ]
-m { <关键字> [,…] | ALL }
电源管理统计信息 [A_PWR_…]
关键字:
CPU CPU 瞬时时钟频率
FAN 风扇速度
……

如下图:

参数说明:

-A 显示所有历史数据,通过读取/var/log/sar目录下的所有文件,并把它们分门别类的显示出来;
-b 通过设备的I/O中断读取设置的吞吐率;
-B 报告内存或虚拟内存交换统计;
-c 报告每秒创建的进程数;
-d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp
-f 从一个二进制的数据文件中读取内容,比如 sar -f filename
-i interval 指定数据收集的时间,时间单位是秒;
-n 分析网络设备状态的统计,后面可以接的参数有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV
-o 把统计信息写入一个文件,比如 -o filename ;
-P 报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;
-p 显示友好设备名字,以方便查看,也可以和-d和-n 参数结合使用,比如 -dp 或-np
-r 内存和交换区占用统计;
-R
-t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准 读出;
-u 报告CPU利用率的参数;
-v 报告inode,文件或其它内核表的资源占用信息;
-w 报告系统交换活动的信息; 每少交换数据的个数;
-W 报告系统交换活动吞吐信息;

#高版本新加的
-x 用于监视进程的,在其后要指定进程的PID值;
-X 用于监视进程的,但指定的应该是一个子进程ID

注: 如果只用sar 命令,sar就是读取 /var/log/sa目录下最近系统状态文件。sar -A 读取/var/log/sa目录下所有文件数据。

linuxmi@linuxmi:~/www.linuxmi.com$ sar -u 1 5
Linux 5.9.0-050900-generic (linuxmi)     2020年11月22日     _x86_64_    (1 CPU)

21时14分27秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
21时14分28秒     all      2.11      0.00      7.37      0.00      0.00     90.53
21时14分29秒     all     27.66      0.00      6.38      0.00      0.00     65.96
21时14分30秒     all     12.77      0.00      7.45      0.00      0.00     79.79
21时14分31秒     all     13.40      0.00      7.22      0.00      0.00     79.38
21时14分32秒     all      9.47      0.00      5.26      0.00      0.00     85.26
平均时间:     all     13.05      0.00      6.74      0.00      0.00     80.21

sar -n DEV 2 4  #查看网络设备的网络吞吐量

linuxmi@linuxmi:~/www.linuxmi.com$ sar -n DEV 2 4

如下图:

参数释义:

IFACE:设备名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的所有包的数量 ;
txbyt/s:每秒发送的所有包的数量 ;
txbyt/s:每秒发送的所有包的大小;
rxcmp/s:每秒收到数的据压缩包的数量;
txcmp/s :每秒传输的数据压缩包的数据;
rxmcst/s: 每秒收到的多播的包数量;

想获取某块网卡的流量情况,我们可以使用grep过滤。  #sar -n DEV 2 4 | grep eth0

5、pidstat

linuxmi@linuxmi:~/www.linuxmi.com$ pidstat –help
用法:pidstat [ 选项 ] [ <时间间隔> [ <计数> ] ] [ -e <程序> <参数> ]
选项:
[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <用户名> ] ]
[ -u ] [ -V ] [ -v ] [ -w ] [ -C <命令> ] [ -G <进程名> ]
[ -p { <pid> [,…] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]

如下图:

linuxmi@linuxmi:~/www.linuxmi.com$ pidstat -dl

总结

在本教程中,您学习了在Ubuntu 20.04系统上安装和配置sysstat性能监视实用程序的过程。

发表评论