Linux资源趋势分析需依托sysstat长期采集数据,通过sar命令回溯分析CPU、内存、I/O、网络等指标,结合多日同段对比识别周期性变化或缓慢增长,辅以脚本自动化和ksar图形化增强可观测性。

看Linux资源使用趋势,核心是采集历史数据并可视化分析,不能只靠实时命令拍快照。
用sysstat收集长期指标
sysstat(包含sar、iostat、mpstat)是Linux最可靠的系统级历史监控工具。安装后启用服务,它会每10分钟自动记录CPU、内存、磁盘I/O、网络等指标到/var/log/sa/目录下,保留默认7天(可配置)。
- 运行sar -u 1 5查看当前CPU实时采样,sar -u -f /var/log/sa/sa15读取12月15日的CPU历史记录
- sar -r查内存使用率,sar -b查I/O吞吐量,sar -n DEV查网卡流量,所有选项都支持-f回溯指定日期文件
- 关键技巧:用sar -A -f /var/log/sa/saXX | grep "10:00"快速筛选某时段整体负载情况
结合时间维度做趋势比对
单日数据看不出规律,至少对比3–7天同时间段才能识别周期性波动或缓慢增长趋势。
- 比如每天早9点CPU使用率从65%升到82%,连续4天,可能预示某定时任务负载加重
- 内存使用率逐日上涨但swap未动,说明缓存增长或内存泄漏;若swap同步上升且pgpgin/pgpgout频繁,则物理内存已持续不足
- 用sar -r -s 09:00:00 -e 10:00:00 -f /var/log/sa/sa12和-f /var/log/sa/sa13分别导出两天早高峰内存数据,再用awk或Excel做折线对比
用脚本简化高频分析场景
人工翻日志效率低,建议写轻量脚本自动提取关键趋势。例如:
- 统计过去5天每小时平均内存使用率:sar -r | awk '/^[0-9]/ {print $1,$4}' | awk '{sum[$1]+=$2; cnt[$1]++} END {for (h in sum) print h, sum[h]/cnt[h]}' | sort
- 检测异常高负载时段:sar -u | awk '$5 > 80 {print $1,$5}'($5是%idle,低于20即CPU使用超80%)
- 将常用sar查询封装为alias或shell函数,如alias memtrend='sar -r -s $(date -d "5 days ago" +%H:%M:%S)'
补充:图形化与告警延伸
如果需要更直观的趋势图或自动告警,可在已有sar数据基础上对接简单方案:
- 用ksar(Java GUI工具)直接加载/var/log/sa/文件生成带颜色标记的折线图,支持导出PNG
- 配合logrotate定期归档+rsync同步到中心节点,便于集中分析多台VPS趋势
- 对关键指标(如内存使用率连续3次>90%)写定时检查脚本,触发邮件或钉钉通知










