上一篇                     
               
			  监控服务器cpu使用率
- 数据库
- 2025-07-23
- 3295
 使用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系统监控实践
-  基础命令监控 - top:按CPU排序查看进程,- 1键可显示每个CPU核心的使用率
- mpstat -P ALL 1:每秒输出各CPU核心的利用率(%usr、%sys、%idle)
- sar -u 1 3:每1秒采样一次,连续3次记录CPU空闲率
 
-  安装Prometheus监控体系 # 安装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']
-  设置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系统监控方案
-  性能监视器(PerfMon) - 添加计数器:Processor(_Total)% Processor Time
- 设置数据采样间隔为1秒,保存为.blg日志文件
 
- 添加计数器:
-  PowerShell脚本监控  $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 }
-  任务计划程序 - 每分钟执行脚本 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列升高)
 
- CPU密集型:
- 结合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"}查询特定
 
  
			