加油
努力

如何查看服务器CPU的最高使用记录?

要查看服务器CPU的最高使用记录,由于Linux系统本身不会默认长期保存“历史最高CPU使用率”,因此需要结合实时监控工具、日志记录或性能监控软件来实现。以下是几种常见的方法:


方法一:使用 sar 命令(推荐)

sar 是系统性能分析工具(属于 sysstat 包),可以记录并查询历史CPU使用情况。

1. 安装 sysstat(如未安装)

# Ubuntu/Debian
sudo apt-get install sysstat

# CentOS/RHEL/Rocky Linux
sudo yum install sysstat
# 或者
sudo dnf install sysstat

2. 启用并配置 sysstat 记录

编辑配置文件启用数据收集:

sudo vim /etc/default/sysstat

确保 ENABLED="true"

启动并启用服务:

sudo systemctl enable sysstat
sudo systemctl start sysstat

3. 查看历史CPU使用情况

# 查看今天的CPU使用情况
sar -u

# 查看某一天的数据(例如昨天)
sar -u -f /var/log/sysstat/saXX   # XX是日期,如 sa05 表示5号

4. 找出最高CPU使用率

你可以导出数据并用脚本处理,例如:

sar -u | awk 'NR>3 && $8!="AM" && $8!="PM" {print $8}' | sort -n | tail -1

这会输出最低空闲率(即最高使用率):$8%idle,所以最小的 %idle 对应最高的 CPU 使用率。

更准确的方式:

# 计算CPU使用率 = 100 - %idle,并找出最大值
sar -u | awk 'NR>3 && $8 ~ /^[0-9]/ {usage=100-$8; if(usage>max) max=usage} END{print "Max CPU Usage: " max"%"}'

方法二:使用 tophtop 实时观察(无法查历史)

适用于当前实时监控,但不能查看历史最高记录。

top
# 按 1 查看每个核心
# 按 P 按CPU排序

或使用 htop(更友好):

htop

⚠️ 注意:这些工具不保存历史数据。


方法三:使用 mpstat(来自 sysstat)

查看详细CPU统计:

mpstat -P ALL 1 5   # 每秒采样一次,共5次

可用于脚本中定期采集并记录最大值。


方法四:自定义脚本 + 日志记录(长期监控)

编写脚本定期记录CPU使用率,并保存最大值。

示例脚本:

#!/bin/bash
LOG_FILE="/var/log/cpu_max.log"
CURRENT_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MAX_USAGE=$(awk 'BEGIN{max=0} $1>max{max=$1} END{print max}' "$LOG_FILE" 2>/dev/null || echo 0)

# 更新最大值
if (( $(echo "$CURRENT_USAGE > $MAX_USAGE" | bc -l) )); then
    echo "$CURRENT_USAGE" > "$LOG_FILE"
    echo "New CPU usage high: $CURRENT_USAGE% at $(date)" >> /var/log/cpu_history.log
fi

配合 cron 每分钟运行一次。


方法五:使用专业监控工具(推荐用于生产环境)

  • Prometheus + Node Exporter + Grafana:可视化展示CPU趋势,可查询历史峰值。
  • ZabbixNagiosDatadog 等:自动记录并告警高负载。

总结

方法 是否能查历史最高 说明
sar ✅ 强烈推荐 需提前开启 sysstat
top / htop 仅实时查看
mpstat ⚠️ 可临时分析 不自动存历史
自定义脚本 需手动部署
Prometheus等 ✅✅✅ 生产环境最佳

🔔 提示:若你之前未开启 sysstat,则无法查看过去的历史数据。建议现在就安装并启用,以便未来分析。


如有具体需求(如“过去一周的CPU最高使用率”),可进一步提供系统环境,我可以给出更精确命令。

云服务器