背景
随着公有云的广泛应用,企业普遍面临云资源利用率不足、资源配置不合理(如高配低用)等挑战,导致云支出持续居高不下。据行业报告显示,超过 90% 的用云企业存在明显的资源浪费现象,云资源投入与业务收益的匹配度不足已成为企业数字化转型中的核心痛点。在此背景下,云资源管理部门亟需对低利用率的云资源进行降配或关停。
观测云作为一款现代化的监控观测云服务,不仅能满足研发、运维团队的观测需求,也能站在「云中立」的角度帮助客户持续优化云资源成本。本文以 ECS 产品为例,向大家介绍如何在观测云上构建低利用率云资源面板。针对其他云产品,读者亦可参考该模式进行资源优化。
构建低利用率云资源面板
笔者近期在服务于某客户时了解到,该客户的 ECS 的月消费金额始终位于云消费总金额的首位,比第二名的云数据库(RDS)高出 5 倍还多。因此客户认为从 ECS 入手进行成本优化,其风险小收益大。因此在双方共同努力下,在观测云上构建了「低资源利用率 ECS 面板」,具体效果如下:
第一部分:CPU、内存利用率蜂窝图
作为仪表板的第一部分,蜂窝图能帮助用户一目了然看到当前有哪些 ECS 的利用率过低。

以阿里云 ECS 为例,图表的 DQL 语句:
ruby
CPU利用率P90
M::aliyun_acs_ecs_dashboard:(percentile(`CPUUtilization_Average`, 90)) BY `cloud_provider`, `cluster_name_k8s`,`instanceId`
ruby
内存利用率P90
M::aliyun_acs_ecs_dashboard:(percentile(`memory_usedutilization_Average`, 90)) BY `cloud_provider`, `cluster_name_k8s`,`instanceId`
图表特点:
- 选择 CPU 利用率和内存利用率 P90 指标,兼顾了高峰期资源利用率升高的场景;
- 采用蜂窝图,高密度展示各 ECS 的 CPU 和内存利用率,并按照云厂、k8s 集群、环境等标签进行分组展示;
- 将资源利用率分为红、黄、绿三个档次,用红色突出显示资源利用率很低的 ECS;
- 鼠标悬浮到单个蜂窝时,浏览器将显示该 ECS 的分组信息,如 instanceId,k8s 集群名称等,支持钻取到单台 ECS 进行下钻。
第二部分:CPU、内存利用率趋势图
图表显示了 CPU 利用率 P90、CPU 利用率均值、内存利用率 P90、内存利用率均值,每个趋势图展示资源率最低的 Top20 ECS 的利用率曲线。

在蜂窝图上点击某个 instanceId 的蜂窝进行下钻,图表将过滤显示该 instanceId 的 CPU、内存利用率的 P90 趋势和均值趋势。

以阿里云 ECS 为例,图表的 DQL 语句:
ruby
CPU利用率P90
M::aliyun_acs_ecs_dashboard:(percentile(`CPUUtilization_Average`, 90)) BY `cloud_provider`, `cluster_name_k8s`,`instanceId`
ruby
CPU利用率均值
M::aliyun_acs_ecs_dashboard:(avg(`CPUUtilization_Average`)) BY `cloud_provider`,`cluster_name_k8s`, `instanceId`
ruby
内存利用率P90
M::aliyun_acs_ecs_dashboard:(percentile(`memory_usedutilization_Average`, 90)) BY `cloud_provider`, `cluster_name_k8s`,`instanceId`
ruby
内存利用率均值
M::aliyun_acs_ecs_dashboard:(avg(`memory_usedutilization_Average`)) BY `cloud_provider`, `cluster_name_k8s`,`instanceId`
图表特点:
- 通过趋势图,反映 ECS 在一个较长周期内的资源利用率变化趋势,例如 30 天、180 天、360 天等;
- 同时提供 P90 和均值趋势,以评估 ECS 在日常使用和高峰期的资源使用率
- 支持与蜂窝图联动,当用户从蜂窝图上点击单个蜂窝时(例如代表资源利用率很低的红色蜂窝),趋势图将联动该过滤条件,仅显示该 ECS 的趋势图
- 在趋势图中,同时还展示了低水位基准线,以便反映 ECS 实际资源率和基准线的差异。
第三部分:ECS 资源列表
通过前两部分的图表,用户可以明确某台 ECS 的资源利用率是长期处于低位的,而第三部分的 ECS 资源列表则将对应 ECS 的 instanceId、主机名、规格、CPU 和内存配置信息展示出来,用户无需登陆到云平台上进行二次搜索。

以阿里云 ECS 为例,图表 DQL 如下:
ruby
ECS资源列表
CO::aliyun_ecs:(`HostName`, `InstanceName`, `Cpu`, `Memory`, `Status`, `CreationTime`, `InstanceType`, `PublicIpAddress_IpAddress`) [1h] BY `InstanceId`
图表特点:
- 显示规格、CPU、内存等信息
- 支持与蜂窝图联动,从蜂窝图下钻到单台 ECS 后,资源列表也将同步过滤显示该 ECS 的规格情况
第四部分:汇报部分
在开展云资源优化的工作并取得阶段性成果后,用户需要向管理层汇报优化工作的前后对比,例如本月的低资源利用率主机数量相对于上月的数量变化情况,因此需要直观的数据对比,这部分图表内容如下:

图表 promQL:
less
最近30天- CPU资源利用率P90小于20%的主机数
count(quantile_over_time(0.9, aliyun_acs_ecs_dashboard:CPUUtilization_Average[30d:1h]) < 20)
less
上一个30天- CPU资源利用率P90小于20%的主机数
count(quantile_over_time(0.9, aliyun_acs_ecs_dashboard:CPUUtilization_Average[30d:1h]) < 20) offset 30d
less
最近30天- 内存资源利用率P90小于40%的主机数
count(quantile_over_time(0.9, aliyun_acs_ecs_dashboard:memory_usedutilization_Average[30d:1h]) < 40)
less
上一个30天- 内存资源利用率P90小于40%的主机数
count(quantile_over_time(0.9, aliyun_acs_ecs_dashboard:memory_usedutilization_Average[30d:1h]) < 40) offset 30d
less
最近30天- CPU资源利用率P90小于20%的主机明细表
quantile_over_time(0.9, aliyun_acs_ecs_dashboard:CPUUtilization_Average[30d:1h]) < 20
less
最近30天- 内存资源利用率P90小于40%的主机明细表
quantile_over_time(0.9, aliyun_acs_ecs_dashboard:memory_usedutilization_Average[30d:1h]) < 40
图表特点:
- 分周期展示低资源利用率的 ECS 数量,清晰且客观,方便汇报优化成果
- 支持导出为 CSV 文件,方便核查明细
云资源利用率指标采集的步骤
在本章中我们将介绍绘制低利用率云资源面板所需要的一些前置条件和步骤,帮助大家轻松完成相关指标接入和指标管理。
第一步,开启观测云「云账号管理」功能
登陆到观测云工作空间后,进入「集成」-「云账号管理」,添加公有云账号,输入具有 readOnly 权限的 AK/SK。如企业无法提供云平台的 AK/SK 信息,可考虑通过在企业内网自建 Func 的方式,来进行云资源采集。

第二步,采集指定云产品的指标
在配置完云账号之后,接下来是配置具体的云产品指标采集,选择 Region,添加关注的资源利用率指标后保存即可。

第三步,对指标集的存储时间配置为较长时间
资源利用率相关的指标通常需要进行长期保存,因此用户可以在「指标」-「指标管理」中为相关指标集配置长期存储策略,如下图所示。

总结
在完成「低利用率 ECS 面板」的第二天,我们向该客户运维团队进行了演示汇报,对方认为这张仪表板完全满足他们对 ECS 进行成本优化的需求,并计划在下一步开展对 RDS、云硬盘等支出相对较高的云产品进行相同的分析和优化工作。大家还聊到了近期产业链上游硬件涨价的相关新闻。继内存、SSD 涨价引发市场震荡后,CPU 等其他硬件的价格上涨接踵而至,这无疑给明年的公有云价格体系带来了很大不确定性。企业尽早开始掌握分析、优化低利用率的云资源,就越能从容应对每月的云支出账单。