You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DigitalOcean Monitoring API计算CPU使用率百分比

计算DigitalOcean Droplet CPU使用率百分比的方法

核心逻辑说明

DigitalOcean Monitoring API返回的CPU metrics是累计CPU时间值(单位为秒,所有vCPU核的时间总和),因此必须通过两个连续时间点的采样数据才能计算出这段时间内的CPU使用率,单一个时间点的数据无法直接得出使用率。

计算步骤

  1. 获取两个连续时间点的采样数据
    调用Get Droplet CPU Metrics接口时,指定时间范围或间隔,获取至少两个时间戳的完整mode数据(包含idle、user、system等所有8种mode)。

  2. 计算每个时间点的总CPU时间
    对每个时间点,将所有mode的数值相加:

    总CPU时间 = idle + iowait + irq + nice + softirq + steal + system + user
    

    以你提供的单个时间点为例,总时间为:

    974654.94 + 6101.52 + 0 + 58.76 + 162.72 + 202.2 + 36283.5 + 156733.06 = 1174196.7
    
  3. 计算时间差值
    设第一个时间点为t_prev,第二个为t_current:

    • 总时间差值:total_diff = total_current - total_prev
    • 空闲时间差值:idle_diff = idle_current - idle_prev
  4. 计算CPU使用率
    非空闲时间为总时间差值减去空闲时间差值,再除以总时间差值得到使用率百分比:

    CPU使用率 = ((total_diff - idle_diff) / total_diff) * 100%
    

注意事项

  • 你的服务器是2核vCPU,上述计算已经自动考虑多核因素(因为总时间是所有核的累计时间总和,差值反映的是所有核在时间段内的总工作/空闲时长),计算结果和DigitalOcean控制台显示的整体CPU使用率一致。
  • 如果需要单核心使用率,可以将总时间差值除以核数(2),再对应计算单个核的使用率,但控制台默认显示的是整体使用率,用上述方法即可。

模拟示例

假设你获取到两个时间点的数据:

  • t1(1663234200):idle=974654.94,总时间=1174196.7
  • t2(1663234300,1分钟后):idle=980000,总时间=1185000

计算:

total_diff = 1185000 - 1174196.7 = 10803.3
idle_diff = 980000 - 974654.94 = 5345.06
CPU使用率 = ((10803.3 - 5345.06) / 10803.3) * 100% ≈ 50.52%

内容的提问来源于stack exchange,提问作者Nissen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:25:17