当前位置:首页 > 云服务器 > 正文

监控服务器cpu使用率

使用PerfMon、top命令或云监控实时查看 CPU使用率,结合Prometheus+Grafana实现历史分析及告警

监控服务器CPU使用率的实现方法与工具

常用监控工具对比

工具名称 适用系统 特点 官网/来源
top/htop Linux/Unix 实时查看进程CPU占用,支持交互式操作(htop更直观) 内置命令
vmstat Linux/Unix 提供CPU、内存、IO等系统整体状态,适合短期性能分析 内置命令
Zabbix Linux/Windows 开源监控平台,支持CPU利用率采集、历史数据存储、告警规则配置 Zabbix.com
Prometheus Linux/Windows 时序数据库,结合Node Exporter可监控CPU使用率,支持告警与可视化 Prometheus.io
PerfMon Windows 系统自带性能监视工具,可实时查看CPU使用率及进程明细 Windows性能监视器
CloudWatch AWS云服务器 集成监控服务,支持自定义CPU阈值告警,无需部署额外工具 AWS CloudWatch


Linux系统监控实践

  1. 基础命令监控

    • top:按CPU排序查看进程,1键可显示每个CPU核心的使用率
    • mpstat -P ALL 1:每秒输出各CPU核心的利用率(%usr、%sys、%idle)
    • sar -u 1 3:每1秒采样一次,连续3次记录CPU空闲率
  2. 安装Prometheus监控体系

    监控服务器cpu使用率 第1张

    # 安装Node Exporter(用于暴露系统指标) wget https://github.com/prometheus/node_exporter/releases/latest/node_exporter-.tar.gz tar -xz && cd node_exporter- ./node_exporter --web.listen-address=:9100 & # 配置Prometheus抓取指标 scrape_configs: job_name: 'node-exporter' static_configs: targets: ['localhost:9100']
  3. 设置CPU使用率告警

    在Prometheus中创建告警规则:

    groups: name: cpu_alerts rules: alert: HighCPUUsage expr: 100 (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) 100) > 80 for: 2m labels: severity: warning


Windows系统监控方案

  1. 性能监视器(PerfMon)

    监控服务器cpu使用率 第2张

    • 添加计数器:Processor(_Total)% Processor Time
    • 设置数据采样间隔为1秒,保存为.blg日志文件
  2. PowerShell脚本监控

    监控服务器cpu使用率 第3张

    $cpu = (Get-Counter "Processor(_Total)% Processor Time").NextValue().CounterValue if ($cpu -gt 80) { Send-MailMessage -From "monitor@company.com" -To "admin@company.com" ` -Subject "CPU Alert" -Body "CPU usage is $cpu%" -SmtpServer smtp.company.com }
  3. 任务计划程序

    • 每分钟执行脚本 CheckCPU.ps1
    • 触发条件:CPU > 90%持续5分钟


数据分析与优化建议

场景 特征 优化方向
CPU长期高位 某个进程持续占用80%+ 代码优化/负载均衡/扩容
突发性峰值 定时任务或批量操作引发 错峰执行/限制并发数
空闲率波动 %idle频繁低于20% 检查病度生产程序/驱动兼容性问题


相关问题与解答

Q1:如何区分CPU密集型瓶颈和IO等待型瓶颈?

A1

  • 使用pidstat命令观察进程的%cpu和%wait字段:
    • CPU密集型:%cpu接近100%,%wait接近0
    • IO等待型:%wait显著升高(如磁盘IO导致wa列升高)

  • 结合iostat查看磁盘IO等待时间(%util接近100%表示IO瓶颈)

Q2:如何监控多核CPU中单个核心的利用率?

A2

  • Linux:使用mpstat -P <核心号>(如mpstat -P 0监控第一个核心)
  • Windows:在性能监视器中添加Processor(0)% Processor Time(数字对应核心编号)
  • Prometheus:通过node_cpu_seconds_total{core=0,mode="idle"}查询特定

0