Linux:使用 sar、kSar 监控系统性能

概况

        sar是老牌和著名的命令行工具之一,经常被忽视。 当遇到性能瓶颈时,它提供了丰富的信息。 它本身只提供冗长的数字数据列,很难解释。 sar存在于大多数Linux发行版上,例如Ubuntu,Debian,CentOS,Gentoo,也可在Solaris,AIX和其他商业Unices上使用。

        ksar是用于sar数值数据的基于Java的前端。 它生成可以导出为.pdf和其他格式的友好图形。

SAR

        sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。算是一个万能的小能手。

sar是sysstat中的一个工具之一,sysstat里面包含了很多工具,可以对系统进行详细的统计。

sysstat 包

        sysstat 包含sar、sa1、和 sa2 命令,是 Linux 包含的性能监视工具集合。

  • sar :   显示数据
  • sa1:是调用sadc(二进制文件),将数据收集到二进制日志文件的一个Shell脚本。它调用 sadc 去记录报告到 /var/log/sa/sadX 格式。

                sa1命令还确保每天使用不同的文件每隔十分钟运行一次该命令,最好不要改这个值,这是对一般系统折中的值。

                二进制日志文件存放在/var/log/sa/目录下,命名为sa${DATE}。

  • sa2:是将当日二进制日志文件中所有的数据转储到文本文件(sar)的另一个Shell脚本,然后它将清除七天之前的所有日志文件。它调用 sar 去记录报告到 /var/log/sa/sarX 格式。

                参数-A指定了从二进制文件中提取哪些数据转储到文本文件中。

                转储的文件存放在/var/log/sa/目录下,命名为sar${DATE}。

安装sysstat

yum install sysstat                                      -----centos7

sudo apt install sysstat                              ------ubuntu

github参考

配置文件

        配置文件所在目录:

/etc/sysconfig/sysstat

  1 # sysstat-10.1.5 configuration file.
  2 
  3 # How long to keep log files (in days).
  4 # If value is greater than 28, then log files are kept in
  5 # multiple directories, one for each month.
  6 HISTORY=28
  7 
  8 # Compress (using gzip or bzip2) sa and sar files older than (in days):
  9 COMPRESSAFTER=31
 10 
 11 # Parameters for the system activity data collector (see sadc manual page)
 12 # which are used for the generation of log files.
 13 SADC_OPTIONS="-S DISK"
 14 
 15 # Compression program to use.
 16 ZIP="bzip2"

定时任务文件

        定时任务文件所在:

/etc/cron.d/sysstat

[root@localhost hhd]# cat /etc/cron.d/sysstat 
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

设置为开机启动

systemctl enable sysstat                                                        -----开机启动
systemctl start sysstat.service                                               -----开启服务
systemctl status sysstat.service                                             -----查看状态

状态信息示例:

[root@localhost hhd]# systemctl status sysstat.service
● sysstat.service - Resets System Activity Logs
   Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2022-06-20 09:48:00 CST; 1 day 4h ago
 Main PID: 968 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/sysstat.service

Jun 20 09:48:00 localhost.localdomain systemd[1]: Starting Resets System Activity Logs...
Jun 20 09:48:00 localhost.localdomain systemd[1]: Started Resets System Activity Logs.

sar命令详解

 

Usage: sar [ options ] [ <interval> [ <count> ] ]

Options are:

[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]

[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]

[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]

[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]

[ -j { ID | LABEL | PATH | UUID | ... } ]

[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]

[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息,类似iostat

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-B:显示内存与“磁盘或SWAP空间”交换情况,监控分页情况

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出每秒上下文切换数

-W:输出系统交换活动信息

下面列举几个例子

获取cpu信息

        使用 sar 命令去显示操作系统中选定的累积活动计数器输出。在这个示例中,运行 sar 命令行,去实时获得 CPU 使用率的报告:

其中:

  • 3 表示间隔时间
  • 10 表示次数
[root@localhost hhd]# sar -u 3 10
Linux 3.10.0-1127.19.1.rt56.1116.el7.x86_64 (localhost.localdomain) 	06/21/2022 	_x86_64_	(14 CPU)

02:29:35 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:29:38 PM     all     13.22      0.00     13.88      0.00      0.00     72.90
02:29:41 PM     all     13.14      0.00     13.90      0.00      0.00     72.96
02:29:44 PM     all     13.24      0.00     13.89      0.00      0.00     72.86
02:29:47 PM     all     13.24      0.00     13.90      0.00      0.00     72.86
02:29:50 PM     all     13.26      0.00     13.89      0.00      0.00     72.85
02:29:53 PM     all     13.27      0.00     13.87      0.00      0.00     72.86
02:29:56 PM     all     13.24      0.00     13.94      0.00      0.00     72.82
02:29:59 PM     all     13.22      0.00     13.92      0.00      0.00     72.86
02:30:02 PM     all     13.65      0.00     14.30      0.00      0.00     72.06
02:30:05 PM     all     13.24      0.00     13.92      0.00      0.00     72.85
Average:        all     13.27      0.00     13.94      0.00      0.00     72.79

查看 I/O 和传输率统计数据

[root@localhost hhd]# sar -b 3  10
Linux 3.10.0-1127.19.1.rt56.1116.el7.x86_64 (localhost.localdomain) 	06/21/2022 	_x86_64_	(14 CPU)

02:33:05 PM       tps      rtps      wtps   bread/s   bwrtn/s
02:33:08 PM      0.67      0.00      0.67      0.00     10.67
02:33:11 PM      0.00      0.00      0.00      0.00      0.00
02:33:14 PM      0.00      0.00      0.00      0.00      0.00
02:33:17 PM      2.00      0.00      2.00      0.00     21.33
02:33:20 PM      0.00      0.00      0.00      0.00      0.00
02:33:23 PM      1.00      0.00      1.00      0.00     16.00
02:33:26 PM      2.33      0.00      2.33      0.00     32.00
02:33:29 PM      0.00      0.00      0.00      0.00      0.00
02:33:32 PM      1.00      0.00      1.00      0.00      8.00
02:33:35 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.70      0.00      0.70      0.00      8.80

生成服务器所有数据

kSar 介绍

        sar 和 sadf 提供了基于命令行界面的输出。这种输出可能会使新手用户/系统管理员感到无从下手。

        因此,你需要使用 kSar,它是一个图形化显示你的 sar 数据的 Java 应用程序。它也允许你以 PDF/JPG/PNG/CSV 格式导出数据。你可以用三种方式去加载数据:本地文件、运行本地命令、以及通过 SSH 远程运行的命令。

        如果你的Linux系统是可以安装图形界面的话,可以在该机上安装该工具,否则,建议在windows电脑上安装该工具

        使用ksar的前提是该机安装了java,如果没安装,请自行安装。

安装

     kSar链接:

        github链接

     java链接(windows):

        jdk下载链接

     windows安装jdk参考

启动ksar

   java -jar ksar-5.2.4-b396_gf0680721-SNAPSHOT-all.jar

启动后欢迎界面:

主窗口:

三种加载数据方式:

使用 kSar 去生成 sar 图表

         sar直接生成过sa<xx>的文件,无法直接为ksar所用,要想生成可用的数据,我们需要导出sar为txt。

其中

 -A 表示导出所有数据,包括CPU、内存、IO、网络等等所有数据

LC_ALL=C sar -A  > /tmp/sar.IP.202XXXXX.data.txt

然后拷贝到ksar所在设备。

数据文件的其他操作

1、将多个日期的整合为一个

        如果我们要查看指定时间间隔的数据。

ls -tr /var/log/sysstat/sa[0-9][0-9] | while read safile   ; do LC_TIME=en_UK.utf8 sar -r -f "$safile"  ;done  | sudo tee  "$(date +'%Y-%m-%d')"_"$(hostname -I)_"
ls -tr /var/log/sysstat/sa202[1-9][0-1][0-9][0-3][0-9] | while read safile   ; do LC_TIME=en_UK.utf8 sar -r -f "$safile"  ;done  | sudo tee  "$(date +'%Y-%m-%d')"_"$(hostname -I)_"

其中 

  • sa[0-9][0-9]表示 sa00至sa99所有文件
  •  LC_TIME=en_UK.utf8意思是以24小时格式输出,没有它将会存在PM/AM

    

        也可通过find 和grep找到相关文件

       例如:找到最近28天内的数据并整合为一个文件

ls -tr $(find -type f -mtime -28) | grep -E 'sa[0-9]{8}$' | while read safile   ; do LC_TIME=en_UK.utf8 sar -r -f "$safile"  ;done  | sudo tee  "$(date +'%Y-%m-%d')"_"$(hostname -I)_"

其中 

  • ls -tr $(find -type f -mtime -28) | grep -E 'sa[0-9]{8}$', 是查询最近28天内的所有文件,例如今天是2022年3月28日,那么将会查询sa20220228 至20220328的文件
  • find -mtime -n  代表查询今天往前减n天(包含n天前)后所有的文件,

        例如:今天日期为2022年3月28日,n为1,则查询2022年3月27日后创建(包含27日)的到当前时间的所有文件;find -mtime n 代表查询今天往前n+1天当天的所有文件,如上条件,则查询2022年3月26日当天的所有文件;find -mtime +n代表今天往前n+1天前的所有文件(不包含n+1天),如山条件,则查询2022年3月26前(不包含26日)之前日期的所有文件。

  • grep -E regex 是grep的延伸型正規表示法
     

        经过上面的步骤,会生成一个‘日期_IP_‘格式的文件,将改文件传输到本地,后面可以放到本地电脑的软件中生成图形样式

导入数据

        点击 “Data” > “Load from a file” > 从 /tmp/ 中选择 sar.data.txt > 点击 “Open” 按钮。

cpu0的示例数据

  1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
  2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
  3. 若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

了解 kSar 图像和 sar 数据

        强烈建议你去阅读 sar 和 sadf 命令的 man 页面。

$ man sar
$ man sadf

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值