如何在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
相关产品推荐
相关产品推荐

