使用sar+ksar监控服务器CPU/内存/IO

声明:本篇文章地址为 使用sar+ksar监控服务器日志 转载或复制请注明


sar的安装

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

安装sysstat

sudo apt install sysstat

github安装

参考:GitHub - sysstat/sysstat:Linux 的性能监控工具https://github.com/sysstat/sysstat

dpkg安装

使用apt安装虽然快捷,但是不能安装指定包的版本,比如22.04中sysstat的版本是12.05.2,但是12.05.2版本无法正常写入记录到sysstat日志文件(关于这个问题,还可以参考 启动Sysstat 这一小节的解决方案),这个时候就可以dpkg就派上用场了,使用dpgk在22.04版本上安装12.2.0版本的sysstat,就可以正常使用sar了。

查看服务器架构

dpkg --print-architecture

在Packages for Linux and Unix - pkgs.org 搜索sysstat,找到对应ubuntu版本的架构,比如我的是amd64,就找到Ubuntu Main amd64,点进去之后搜索Download,Binary Package是二进制包,可以直接下载使用。

我这里选择的是20.04的sysstat,版本12.2.0-2的sysstat。

wget --no-check-certificate      http://archive.ubuntu.com/ubuntu/pool/main/s/sysstat/sysstat_12.2.0-2_amd64.deb

当然如果只有rpm的二进制包,也可以使用alien将其转换成deb包:

sudo apt install alien
sudo alien -k sysstat_12.2.0-2_amd64.rpm

安装deb包

sudo dpkg -i sysstat_12.2.0-2_amd64.deb

如果报错依赖问题,apt来管理依赖

sudo apt-get -f install

sar的配置

配置sar开启收集数据

默认sar是不会自动执行的(如果上一步,你能看到结果,这一步可以跳过),这个时候需要我们手动开启,重启后才会生效(重启后面会讲)

sudo vi /etc/default/sysstat

把false修改为true 

设置sar的定时任务、保存时间、压缩天数

sar的默认定时任务cron 

先查看cron默认配置 

sudo vim  /etc/cron.d/sysstat

接下来修改默认配置,将其修改为合适的时间跨度。

# Activity reports every 10 minutes everyday
#5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
* * * * *  root command -v debian-sa1 > /dev/null && debian-sa1 1 1

# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

修改sar存储时间和压缩天数

sudo vi /etc/sysstat/sysstat

sar的默认保存时间

默认保存时间7天,可以修改 HISTORY=7 为你希望的数字。解释如下

#“If value is greater than 28, then log files are kept in  multiple directories, one for each month.” //如果值大于28天,日志将会保存到多个目录,每个月一个目录

#HISTORY=7

HISTORY=180

sar压缩天数设置

默认设置时间为10天,超过十天的会压缩成压缩包,sar就无法立刻查看压缩后的数据

# Compress (using gzip or bzip2) sa and sar files older than (in days):
#COMPRESSAFTER=10

COMPRESSAFTER=28

修改默认时间为24小时制

在.profile文件中新增一行,再次打开一个新的窗口,sar就是24小时制了

sed -i '$a export LC_TIME=\"POSIX\"' .profile

在sed命令中,$a是一个命令,其作用是向文本的最后一行追加内容。具体来说,$表示匹配最后一行,而a表示追加文本。

启动sysstat 

如果显示Active: inactive (dead),那么就需要启动sysstat

sudo systemctl start sysstat

或者

sudo /etc/init.d/sysstat start

关于init.d和systemctl两种启动方式的由来,请查看Systemd 入门教程:命令篇 - 阮一峰的网络日志 (ruanyifeng.com)

启动Sysstat

执行一条写入命令,产看sar是否可用

有的版本(比如上面的22.04版本)安装sysstat后日志文件不能正常写入,其实可以使用下面的命令测试

sudo /usr/lib/sysstat/debian-sa1 1 1

再次执行sar,如果能看到记录的默认信息,就说明是正常的

使用sar+ksar监控服务器CPU/内存/IO_第1张图片

如果此时没有看到输出,需要确保sysstat是否开启数据收集

执行以下命令

sudo systemctl enable sysstat

这个时候再次执行写入命令,应该就可以看到了。

如果执行debian-sa1后执行sar命令仍然看不到记录,可以将debian-sa1命令更换为以下命令

sudo /usr/lib/sysstat/sa1 1 1

除了上面的问题,可能另一个问题,就是定时任务每分钟写入似乎不生效,此时可以修改定时任务如下:

sudo vim /etc/cron.d/sysstat

将原来的内容替换成如下内容 

* * * * * root /usr/lib/sysstat/sa1 1 1

 再次重启sysstat

sudo systemctl start sysstat

或者

sudo /etc/init.d/sysstat start

再次执行 sar -u 就可以看到数据了

Sysstat数据保存的位置

重启后,会根据保存到 /var/log/sysstat 目录下,以sa命名,其中nn为每月的日期。例如sa08为8日的sa日志,这是一个二进制文件,不能直接查看

$ tree /var/log/sysstat/
/var/log/sysstat/
├── 202110
│?? └── sa08
└── sa08 -> 202110/sa08

sar常用命令

sar [options] [-A] [-o file] t [n]

参数说明

  • options
-A:所有报告的总和
-B:报告内存分页
-b:显示I/O和传送速率的统计信息
-d:输出每一个块设备的活动信息,和-p搭配,可以看到磁盘名称
-f filename,查看某天的数据 
-o filename 表示将命令结果以二进制格式存放在文件中,file 是文件名
-P [num|ALL] 表示查看某个CPU核心或所有CPU核心运行情况
-q:输出cpu平均负载
-r:输出内存和交换空间的统计信息
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-W:输出系统交换活动信息
-num 查看前num天的数据 
  • t 为采样间隔
  • n为采样次数,默认值是1

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

输出cpu、内存、I/O,可用 sar -urbq

CPU综合

sar -u 1 3 –human

Linux 4.15.0-122-generic (ubuntu)    07/04/2022   _x86_64_ (64 CPU)



05:27:49 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle

05:27:50 PM     all      1.5%      0.0%      0.6%      2.7%      0.0%     95.2%

05:27:51 PM     all      1.5%      0.0%      0.7%      2.5%      0.0%     95.3%

05:27:52 PM     all      1.6%      0.0%      0.7%      2.4%      0.0%  

你可能感兴趣的:(linux,linux,运维)