finops

云成本分摊、预算告警与优化优先级

补充说明

FinOps 的核心是让成本可见、可归属、可决策:先分摊到团队和服务,再看单位成本,最后按“节省金额 × 确定性 / 投入”排序优化。只看总账单无法驱动行动。

成本优化顺序通常是:删除闲置资源 → 调整规格和副本 → 使用弹性/竞价 → 购买承诺折扣。承诺折扣最后做,否则业务变化后会被长期合约锁死。

常用示例

成本分摊标签(缺失即无法归属):

标签 必填 示例 用途
team 是 checkout 团队分摊
service 是 payment-api 单服务成本
env 是 prod 区分生产/非生产
owner 是 @pay-team 异常联系人
cost-center 是 CC-1024 财务对账

预算消耗分级动作:

预算消耗 动作
50% 通知 owner,检查增长趋势
80% 周报附优化建议,限制非生产扩容
100% 冻结非生产扩容,例外需审批
120% 按事故复盘,检查标签和分摊错误

按命名空间查看资源申请,作为分摊基数:

kubectl get pods -A -o custom-columns='NS:.metadata.namespace,CPU:.spec.containers[*].resources.requests.cpu,MEM:.spec.containers[*].resources.requests.memory'

用 Infracost 在 PR 阶段看变更成本:

infracost breakdown --path . --format table
infracost diff --path . --compare-to infracost-base.json

单位成本计算:

# 月成本 12000 美元,月请求 8 亿
awk 'BEGIN {printf "每百万请求成本: $%.2f\n", 12000/(800000000/1000000)}'

承诺折扣覆盖决策:

覆盖率 策略
< 60% 按稳定基线补 1 年期承诺,不覆盖峰值
60%–80% 保持,按季度评估
> 90% 检查是否过度承诺,保留突发弹性

资源优化优先级 = 年化节省金额 × 实施确定性 / 实施人日:

动作 年节省 确定性 人日 优先级
删除闲置 PVC $18,000 高 2 高
非生产定时关机 $42,000 高 5 高
调整过度申请的 CPU $60,000 中 15 中
购买 3 年承诺 $120,000 低 10 低

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. 为什么成本要先分摊再优化?
  2. 承诺折扣为什么应该最后买?
  3. 计算优化优先级时,除了节省金额还要考虑什么?
答案
  1. 只有成本能归属到团队和服务,才有人对浪费负责并采取行动;总账单无法定位问题。
  2. 承诺折扣锁定长期用量;业务下滑或架构调整后,未使用的承诺仍要付费。
  3. 实施确定性和投入人日;高节省但低确定性、长周期的项目应排在后面。

相关条目