关于sar的学习

发布时间 2023-06-15 21:23:31作者: 济南小老虎

关于sar的学习


背景

公司一套基于某冷门Python架构的系统前几天出现异常卡顿.
当时安装的时候必须使用ubuntu系统. 
所以当时默认安装的ubuntu1804, 本来想尝试使用一下sar查看卡顿时期的系统状况
但是发现没有默认安装.
并且最近虽然有node-exporter 以及prometheus 和 grafana 
但是想着文字数字型的应该更好处理一下. 

Ubuntu的安装与使用

apt-get install  sysstat

需要注意, ubuntu不会默认开启系统性能日志监控
需要进行如下的设置: 
vim /etc/default/sysstat  文件
ENABLED="true"
然后就会进行记录. 

sudo systemctl enable --now sysstat.service
设置开机启动,并且启动 sysstat

修改定时任务:
注意修改方式如下: 
第一行修改为 每一分钟收集一次
第二行修改为 凌晨前一分钟进行一次监控文件的创建. 
vim /etc/cron.d/sysstat

*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

然后需要注意一个区别:
归档sysstat记录的日志 两种系统位置是不一样的
centos的路径在/var/log/sa
ubuntu的日志路径在/var/log/sysstat

关于sysstat工具

Sysstat 软件包集成如下工具:

 iostat 工具提供CPU使用率及硬盘吞吐效率的数据;
 mpstat 工具提供单个处理器或多个处理器相关数据;
 sar 工具负责收集、报告并存储系统活跃的信息;
 sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,
     是为sadc所设计的程序前端程序;
 sa2 工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用
 sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;
 sadf 显示被sar通过多种格式收集的数据;

进行简要分析的方法

先看帮助信息: 
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
主选项和报告:
        -b      I/O 和传输速率信息状况
        -B      分页状况
        -d      块设备状况
        -F [ MOUNT ]
                Filesystems statistics
        -H      交换空间利用率
        -I { <中断> | SUM | ALL | XALL }
                中断信息状况
        -m { <关键词> [,...] | ALL }
                电源管理统计信息
                关键字:
                CPU     CPU 频率
                FAN     风扇速度
\t\tFREQ\tCPU 平均时钟频率
                IN      输入电压
                TEMP    设备温度
\t\tUSB\t连接的USB 设备
        -n { <关键词> [,...] | ALL }
                网络统计信息
                关键词可以是:
                DEV     网卡
                EDEV    网卡 (错误)
                NFS     NFS 客户端
                NFSD    NFS 服务器
                SOCK    Sockets (套接字)        (v4)
                IP      IP 流   (v4)
                EIP     IP 流   (v4) (错误)
                ICMP    ICMP 流 (v4)
                EICMP   ICMP 流 (v4) (错误)
                TCP     TCP 流  (v4)
                ETCP    TCP 流  (v4) (错误)
                UDP     UDP 流  (v4)
                SOCK6   Sockets (套接字)        (v6)
                IP6     IP 流   (v6)
                EIP6    IP 流   (v6) (错误)
                ICMP6   ICMP 流 (v6)
                EICMP6  ICMP 流 (v6) (错误)
                UDP6    UDP 流  (v6)
        -q      队列长度和平均负载
        -r      内存利用率
        -R      内存状况
        -S      交换空间利用率
        -u [ ALL ]
                CPU 利用率
        -v      Kernel table 状况
        -w      任务创建与系统转换统计信息
        -W      交换信息
        -y      TTY 设备状况

一个简单的使用验证

验证CPU的使用情况
# 将当天的CPU使用情况转成一个 txt文档 
sar -f /var/log/sysstat/sa13 |grep -v user >13.txt
# 查看CPU使用率大于50%的情况 主要是反馈一个时间节点
awk -F " " '$3>50' 13.txt
# 查看当天CPU的平均使用情况
cat 13.txt  | awk 'Begin{sum=0}{sum+=$3}END{print sum/NR}'
# 查看八点都十点的磁盘读写情况
sar -b -s 08:00:00 -e 10:00:00
# 查看13号 上班时间的CPU总体占用情况

sar -u -s 08:00:00 -e 18:00:00 -f /var/log/sysstat/sa13
# 结果为, 注意这个是查询的ubuntu的日志文件.
17时32分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
17时59分01秒     all      1.46      0.00      0.66      0.00      0.00     97.88
Average:        all     13.86      0.00      1.88      0.01      0.00     84.26

# 查看网络情况
sar -n DEV 
# 查看内存信息
sar -R  1 1