本文结合企业实际情况进行成本洞察,演示云原生架构下如何更准确地计算业务成本分摊,从而实现让企业在享受云原生带来的灵活性和效率的同时,也能有效地管理和控制成本。
前提条件
已开启成本洞察功能。具体操作,请参见启用成本洞察功能。
已开启阿里云Prometheus监控。具体操作,请参见步骤一:开启阿里云Prometheus监控。
已确保Prometheus指标存储时长大于成本治理周期。关于如何确定成本治理周期,请参见步骤一:确定成本治理周期;如何调整指标存储时长,请参见如何调整指标的存储时长?。
背景信息
在传统的IT治理场景中,业务往往独享一套云资源,例如节点、负载均衡、存储资源等。这些云资源独立计费,成本追踪相对直接且简单。
进入云原生时代,资源的使用模式发生了变化。一个节点可能同时运行来自不同业务的容器,网络、存储资源也可能被多个应用共用。这种资源共享的模式增大了成本分摊的复杂性,即成本难以被明确分摊到各个业务单元,导致成本洞察和管理更为复杂。
为此,ACK提供一种通用性的成本数据模型,以更准确计算业务成本分摊。具体实现如下所示:
首先,分析每个Pod使用的资源(如CPU、内存、存储等),计算出Pod的模拟成本。
其次,根据Pod的模拟成本,按比例将整个集群的总账单(包括所有资源的费用)分配给各个Pod。按比例拆分集群总账单,即可获得Pod分摊集群总账单的费用。
最后,通过汇总一个周期内所有关联到特定业务的Pod分摊的成本,即可得出该业务单元的总成本。
场景示例
如下图所示,某企业将所有业务部署在一个ACK集群上,组织架构包括四个业务部门:部门A负责应用A,部门B和部门C共同负责应用B,部门D负责应用C和应用D。
其中,应用A和应用B是Web服务,需要稳定的业务负载,调度到包年包月的ECS节点;应用C和应用D负责数据处理和数据分析业务,有资源弹性的需求,调度到按量付费的ECS节点。
使用成本洞察实现成本管理及优化
以下演示如何通过可视化的成本洞察大盘,查看部门和应用的成本。
您也可以通过HTTP API查看部门和应用的成本。详情请参见通过Allocation API获取。
步骤一:确定成本治理周期
集群费用查看周期:
ECS实例有两种出账周期,包年包月的实例以月或周为出账周期;按量付费的实例以小时为出账周期。由于本场景集群同时包含两种付费类型的实例,在查看集群总费用时,周期需设置在月维度。为便于直接对比和分析账单数据,一般可将ECS出账日作为成本治理起始和结束日期。
部门、应用费用查看周期:
部门A、B、C的业务都运行在包年包月的节点上,所以成本治理周期以月为维度。
部门D的业务都运行在按量付费的节点上,所以成本治理周期以天为维度。
应用费用查看周期可根据所属部门确定。
步骤二:根据业务类型确定成本分摊策略
在计算业务成本分摊时,会涉及到估算业务关联Pod的成本,ACK提供单资源估算策略和权重混合资源估算策略。
估算策略 | 细分策略 | 使用场景 |
CPU和内存资源的单资源策略 | 集群中一种资源的调度水位明显高于另一种资源,或者集群中的业务资源申请类型比较集中的场景。 | |
CPU-内存混合策略(推荐权重)和CPU-内存混合策略(自定义权重)。 | 集群中混合部署了CPU型和内存型的应用,或者集群CPU和内存水位持平的场景。 |
默认情况下,对于集群中的业务资源申请类型比较集中的场景,推荐您使用单资源估算策略。比如集群业务都是CPU密集型,可以直接选择CPU单资源策略。
更多场景选型及策略分析,请参见成本估算策略介绍。
步骤三:查看集群费用
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在成本洞察页面的集群维度页签,设置如下筛选项,然后查看花费结果。
实际/原价账单:选择集群成本统计选项,本示例设置为优惠后实际账单成本。
时间范围:本示例设置为2024-05-01 00:00:00 to 2024-05-31 23:59:59。
在本月累计花费-优惠后实际账单成本区域,查看集群在2024年05月的总费用。
步骤四:查看部门成本
在成本洞察页面,单击命名空间维度页签,设置如下筛选项,然后查看成本估算结果。
命名空间(Namespace):选择部门对应的命名空间,本示例设置为默认命名空间default。
实际/原价账单:选择命名空间成本统计选项,本示例设置为优惠后实际账单成本。
时间范围:本示例设置为2024-05-31 00:00:00 to 2024-05-31 23:59:59。
在本示例中,部门D负责的业务对资源需求有波动性,您也可以将时间调整到具体某天,例如2024-05-31,查看部门D每天的成本。
然后,在命名空间费用分摊区域,查看该部门的分摊费用。
步骤五:查看应用成本
在成本洞察页面,单击应用维度页签,设置如下筛选项,然后查看应用花费。
命名空间(Namespace):选择应用所在的命名空间,本示例设置为默认命名空间default。
标签对筛选(LableSelector):应用对应的标签。
时间范围。本示例设置为2024-05-31 10:00至2024-05-31 16:59。
在本示例中,由于应用C和应用D的业务特性,导致每天的成本可能存在波动,因此将时间范围调整到某天的具体时间段,例如10:00至16:59,查看应用具体时间段的成本。
然后,在应用花费区域,查看结果。
常见问题
开通成本洞察后,查看上月或者上周花费时,为什么没有数据?
成本洞察功能从您开通后开始记录数据,如果所选时间范围内还未开通,将不会展示数据。
查看历史花费时,为什么展示的数据低于实际花费?
ARMS Prometheus的默认存储时长为15天,请确保您所选的时间范围在Prometheus的存储时间内。如果有更长成本洞察周期的需求,请参见如何调整指标的存储时长?。
相关文档
除了可视化的成本洞察大盘,您也可以通过HTTP API查看部门和应用分摊集群账单的成本。ACK提供Allocation API帮助您按Namespace、Controller、Label、Pod等维度聚合业务成本,详情请参见通过Allocation API获取。
关于成本洞察指标的详细说明,请参见集群维度成本分析、命名空间维度成本分析、节点池维度成本分析、应用维度成本分析。
如有降低容器配置Request和Limit复杂性的需求,可以通过资源画像功能实现容器粒度的资源规格推荐,帮助您调整应用规格配置。详细信息,请参见资源画像。
对于多云和混合云场景,资源可能来自不同云厂商甚至线下环境,使统一视图的资源监控和成本管理变得更具挑战性。关于如何通过ACK One实现混合云成本管理,请参见集群成本洞察。