需用sar命令读取sysstat采集的历史负载数据:一、sar -q -f查看指定日期负载;二、脚本拼接多日数据导出CSV;三、systemd-analyze time比对启动与首次采样时间;四、sadf转TSV/JSON格式便于解析;五、三重验证sysstat采集状态。

如果您需要了解统信UOS系统在一段时间内的负载变化情况,而非仅查看当前瞬时值,则需借助sar命令读取由sysstat服务持续采集的历史负载数据。以下是获取系统负载趋势的多种可行方法:
一、使用 sar -q 查看指定日期的平均负载历史
该方式直接读取sysstat每日生成的二进制数据文件,输出包含1分钟、5分钟、15分钟三个维度的平均负载值,时间粒度为默认10分钟一次,适用于快速定位高负载时段。
1、确认目标日期对应的sa文件名,例如4月10日对应/var/log/sysstat/sa10。
2、执行命令:sar -q -f /var/log/sysstat/sa10。
3、输出中以runq-sz列标识运行队列长度,load average字段显示三组负载均值,每行代表一个采样时刻。
二、提取多日连续负载数据并导出为CSV格式
该方式通过脚本拼接多个sa文件中的负载记录,统一时间字段与列结构,便于导入表格软件绘制趋势图或进行横向对比分析。
1、执行以下循环命令提取最近7天的负载快照:for d in $(seq -w 07 13); do sar -q -f /var/log/sysstat/sa$d 2>/dev/null | awk '/^[0-9]/ {print "'$d'",$1,$2,$3,$4,$5,$6}'; done > load_7days.csv。
2、检查生成的load_7days.csv文件首行是否含日期、时间、运行队列长度及三组负载值。
3、确保各sa文件采样间隔一致,若发现某日无输出,说明当日sysstat未成功采集或文件缺失。
三、结合 systemd-analyze time 获取启动时刻与负载起始关系
该方式将系统启动时间戳与首次sar采样时间对齐,有助于判断高负载是否出现在系统启动初期,排除服务自启冲突或初始化阻塞因素。
1、运行命令获取内核启动时间:systemd-analyze time,记下Kernel started at后的时间。
2、执行:sar -q -f /var/log/sysstat/sa$(date +%d) | head -5,查看当天最早一条负载记录的时间。
3、比对两者时间差,若差值小于10分钟,表明负载监控在系统就绪后即已生效;若超过1小时,需检查sysstat服务启用状态。
四、使用 sadf 将负载数据转换为可解析的文本格式
sadf是sysstat配套工具,支持将二进制sa文件转为TSV或JSON格式,便于程序化提取字段,避免手工解析时间列错位问题。
1、安装完整版sysstat(如尚未启用sadf):sudo apt install sysstat。
2、执行转换命令:sadf -d /var/log/sysstat/sa12 -- -q | grep -E "^[0-9]" | head -10。
3、输出为带ISO时间戳的制表符分隔格式,字段依次为:时间、运行队列长度、1/5/15分钟负载均值,可直接用于awk或Python处理。
五、验证sysstat是否正在持续采集负载数据
该方式通过检查配置、服务状态与文件更新时间三重确认,确保后续所有sar查询均有有效数据源支撑,避免因采集中断导致趋势分析失效。
1、确认采集已启用:grep ENABLED /etc/default/sysstat,输出应为ENABLED="true"。
2、检查cron任务是否激活:sudo systemctl list-timers | grep sysstat,应显示活跃的sa1定时器。
3、查看最新sa文件修改时间:ls -lt /var/log/sysstat/sa* | head -3,末尾文件时间应接近当前小时,且大小不为零。

















