SCAD 容器成本分配仪表板提供基于 CUR 的 Split Cost Allocation Data (SCAD) 功能的 EKS 和 ECS 集群内成本洞察。DevOps 团队、FinOps 团队或任何相关利益相关者可以深入了解其 EKS 集群内 Kubernetes 工作负载的成本,精确到 EKS pod任务级别,并基于不同的 Kubernetes 构造(pod、命名空间、控制器等)进行聚合。我们可以使用它为多租户 EKS 实施成本展示方法。
通过此链接 使用实时、交互式演示仪表板更熟悉仪表板
SCAD - 容器成本分配仪表板


如果我们为 EKS 启用 SCAD,选择"资源请求"将仅包含资源请求数据,而不包含实际使用情况。要在 CUR 中获取 pod 的实际使用数据,可以选择"Amazon Managed Service for Promentheus"选项并按照此指南 操作,或选择"Amazon CloudWatch Container Insights"选项并按照此指南 操作
部署基础仪表板 ,并确保参数"在 CUR 2.0 中启用 Split Cost Allocation Data (SCAD)“设置为"yes”。作为部署基础仪表板的一部分,将参数"启用 Split Cost Allocation Data (SCAD)“设置为"yes”,将创建一个新的 CUR,并启用 Split Cost Allocation Data。
Split Cost Allocation Data 无法在现有的 CUR 2.0 中启用或禁用。在现有 CUR 中启用或禁用 Split Cost Allocation Data 仅在传统 CUR 中支持

请注意,这些成本分配标签中的一些仅在我们为相关服务(EKS/ECS)启用 SCAD 后才会出现,并且在启用 SCAD 后需要一些时间才会出现。如果我们不使用相应的服务,则可能不会出现成本分配标签。
在为 EKS启用 Split Cost Allocation Data 并激活 AWS 生成的成本分配标签后,至少等待 24 小时(最多可能需要 48 小时)才能在 Athena CUR 表中反映新列和数据。
另外,请注意 CUR Backfill 不支持 SCAD。即使我们从 AWS Support 请求 CUR Backfill,SCAD 字段也不会被填充。如 SCAD 文档 中所述,数据将仅从当前月份开始填充:
一旦激活,split cost allocation data 会自动扫描任务和容器。它会摄取容器工作负载的遥测使用数据,并为当前月份准备详细的成本数据。
要验证 CUR 中是否存在新的 Split Cost Allocation Data 列,下面是CUR Legacy的方式:
打开 Athena 控制台并切换到 CUR 数据库
展开 CUR 表并按照下面的截图进行过滤,查看列:Split line item 列(与 EKS相关):

EKS 成本分配标签(仅在使用 EKS 时相关):

只有当我们看到所有这些列(对应于我们使用的服务)后,才能继续进行仪表板部署。
如果是CUR 2.0:
SELECT DISTINCT "key"
FROM "<table_name>"
CROSS JOIN UNNEST(MAP_KEYS("resource_tags")) AS "t"("key")
WHERE "key" LIKE 'aws_eks%'
# 返回结果:
+---+-----------------------+
| # | key |
+---+-----------------------+
| 1 | aws_eks_node |
| 2 | aws_eks_deployment |
| 3 | aws_eks_namespace |
| 4 | aws_eks_cluster_name |
| 5 | aws_eks_workload_name |
| 6 | aws_eks_workload_type |
+---+-----------------------+
注意部署这个方案前要等上面的准备工作开启,且24小时后能查到cur里多出来的字段。不然可能会报错
登录到我们的数据收集账户。
在 CloudFormation 中打开预填充的堆栈模板:
https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://aws-managed-cost-intelligence-dashboards.s3.amazonaws.com/cfn/cid-plugin.yml&stackName=SCAD-Containers-Dashboard¶m_DashboardId=scad-containers-cost-allocation
如果我们愿意,可以更改模板的堆栈名称。
保留参数值不变。
检查配置并点击创建堆栈。
我们将看到堆栈开始处于CREATE_IN_PROGRESS状态。完成后,堆栈将显示CREATE_COMPLETE状态
我们可以检查堆栈输出以获取仪表板 URL。
请注意,DataExport 可能需要 24-48 小时才能提供第一份报告。如果我们刚刚安装了 Data Exports,仪表板很可能是空的。请在 24 小时后再回来查看。