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

如何将小时级CPU数据聚合为日维度的空闲/使用率百分比?

从小时级CPU监控数据聚合每日空闲/已用百分比的方法

刚好之前处理过类似的服务器监控数据聚合需求,我来给你一步步拆解怎么实现,不管用脚本还是Python都能搞定:

先搞清楚你的数据结构

首先得明确日志里每列的含义,从你给的示例18-JUN-15 05.00.15.571 AM 98.75 .69 .55 .01来看,这应该是类似sar工具输出的CPU监控数据——通常这类数据的字段是用户态、系统态、nice值、空闲率(顺序可能有差异,得确认)。核心逻辑是:空闲率直接取对应字段,已用率=100%-空闲率,这样比加总其他字段更准确。

具体实现方案

方案1:用Shell脚本快速处理(适合Linux服务器直接跑)

假设你的日志文件叫cpu_logs.txt,且每行最后一个数值是空闲率,用awk就能轻松按日期分组算平均值:

awk '{
    # 提取日期,这里第一个字段就是"18-JUN-15",直接拿
    date = $1
    # 累加该日期的空闲率总和,以及数据条数
    idle_total[date] += $NF
    line_count[date] += 1
}
END {
    # 遍历每个日期,计算平均并输出
    for (day in idle_total) {
        avg_idle = idle_total[day] / line_count[day]
        avg_used = 100 - avg_idle
        # 四舍五入取整,输出成你要的格式
        printf("%s的CPU空闲率为%d%%、忙碌率为%d%%\n", day, int(avg_idle+0.5), int(avg_used+0.5))
    }
}' cpu_logs.txt | sort

要是你的空闲率不是最后一个字段,把$NF改成对应的字段号就行(比如第4列就写$4)。最后加sort是为了让日期按顺序输出,更直观。

方案2:用Python处理(适合复杂数据或需要后续扩展)

如果日志格式有点乱,或者你需要做数据清洗(比如过滤异常值),Python会更灵活:

from collections import defaultdict

# 用字典存每天的累加数据:key是日期,value是[空闲率总和, 数据条数]
daily_stats = defaultdict(lambda: [0.0, 0])

# 读取日志文件
with open("cpu_logs.txt", "r") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 拆分每行的字段
        parts = line.split()
        day = parts[0]
        # 把空闲率转成浮点数,这里假设是最后一个字段,按需调整
        idle = float(parts[-1])
        # 过滤异常值(比如超过100或者负数的无效数据)
        if 0 <= idle <= 100:
            daily_stats[day][0] += idle
            daily_stats[day][1] += 1

# 按日期排序输出结果
for day in sorted(daily_stats.keys()):
    total_idle, count = daily_stats[day]
    avg_idle = total_idle / count
    avg_used = 100 - avg_idle
    # 用round函数四舍五入取整,输出成你要的格式
    print(f"{day}的CPU空闲率为{round(avg_idle)}%、忙碌率为{round(avg_used)}%")

几个要注意的细节

  • 字段确认:一定要先搞清楚哪个字段是空闲率!如果日志里没有直接的空闲率,就把所有非空闲的字段加起来(比如用户态+系统态+等待IO的占比)作为已用率,空闲率=100%-已用率。
  • 数据清洗:要是日志里有异常值(比如占比超过100%或者负数),一定要过滤掉,不然会拉低平均值的准确性。
  • 时区问题:如果你的监控数据是UTC时间,要确保日期提取是你想要的本地日期,避免跨天的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:31:15