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

如何在CloudWatch中按单台服务器展示统计数据而非整体平均值?

按服务器分组展示CloudWatch Logs指标统计数据

我已经把JVM线程数、CPU使用率等指标发布到了CloudWatch Logs(后续转为CloudWatch Metrics可能更合适)。

基础查询语句

fields @timestamp, jvm.threads.live, process.cpu.usage, server , system.load.average.1m , jvm.memory.usage.after.gc
| sort by @timestamp desc

示例数据

{
    "@timestamp": "2022-xx-xxT11:03:00.027Z",
    "jvm.gc.overhead": "0",
    "jvm.memory.usage.after.gc": "0.036",
    "jvm.threads.live": "47",
    "process.cpu.usage": "1",
    "server": "MyServer.localdomain",
    "system.load.average.1m": "2.351"
}

之前用以下语句生成图表,但它会计算所有服务器的平均值,没有区分单台服务器:

fields @timestamp, jvm.threads.live, process.cpu.usage, server , system.load.average.1m , jvm.memory.usage.after.gc
| stats avg(jvm.threads.live) as threads, avg(process.cpu.usage * 100) as cpuPercentage, avg(system.load.average.1m) as loadAvg, avg(jvm.memory.usage.after.gc * 100) as memoryPercentage  by bin(1m)

因为服务器名称是随机生成的,无法提前获取完整列表,要展示每台服务器的单独统计数据,只需在stats语句的by子句中加入server字段即可:

fields @timestamp, jvm.threads.live, process.cpu.usage, server , system.load.average.1m , jvm.memory.usage.after.gc
| stats avg(jvm.threads.live) as threads, avg(process.cpu.usage * 100) as cpuPercentage, avg(system.load.average.1m) as loadAvg, avg(jvm.memory.usage.after.gc * 100) as memoryPercentage  by bin(1m), server

修改后的查询会按1分钟时间分片和服务器名称双重分组,自动为每台服务器计算对应时间区间内的指标平均值,生成图表时也会按server字段区分不同系列,无需提前知晓服务器列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:18