2、成本可视化:搭建第一张成本仪表盘——用标签和分摊模型看清每一分钱
说实话,很多团队做成本优化,第一步就卡住了。
不是不想优化,是根本不知道钱花在哪了。月底一看账单,好家伙,一堆「通用计算实例」、「标准存储」…… 这谁看得懂?
我刚开始管 PaaS 平台成本时也这样。老板问「上个月容器集群为啥多花了 5 万?」我只能支支吾吾说「可能是业务量涨了」。后来我学乖了——没有可视化,就没有优化。今天咱们就聊聊,怎么搭出第一张真正能用的成本仪表盘。
2.1 为什么你的账单像天书?
云厂商给的原始账单,说白了就是给财务看的。它按资源类型列账,比如「ECS 实例费用 10 万」、「OSS 存储费用 3 万」。
但咱们运维和研发关心的是:哪个业务线花了多少钱?哪个项目超预算了?
这中间缺了一层映射——从「资源维度」到「业务维度」的映射。而标签(Tag),就是做这个映射的。
核心观点:成本可视化的本质,是把「云厂商的账单」翻译成「业务团队能看懂的语言」。标签是翻译器,分摊模型是语法规则。
2.2 第一步:打标签——给每份资源一个「身份证」
我见过最惨的案例:一个团队上了 2000 台服务器,只有 3 台打了标签。问为啥不打?答「太麻烦了,后面再补」。结果后面永远没补。
打标签这事,必须从第一天就强制。我个人习惯用三套标签体系:
| 标签维度 | 标签键 | 标签值示例 | 说明 |
|---|---|---|---|
| 业务归属 | business | order、payment、user | 哪个业务线在用 |
| 环境 | env | prod、staging、dev | 生产还是测试 |
| 负责人 | owner | team-a、team-b | 出问题了找谁 |
嗯,这里要注意:标签键不要用中文。我踩过坑——某云厂商对中文标签支持不好,导出报表时乱码,排查了一下午。
小技巧:用自动化工具强制打标。比如创建资源时,通过 Terraform 或 ROS 模板自动注入标签。人工打标?不存在的。
2.3 第二步:分摊模型——把共享成本「分清楚」
标签能解决「这个资源是谁的」,但解决不了「这个资源被多个团队共用」的问题。
举个例子:一台 32 核的数据库实例,订单团队用了 60% 的 QPS,支付团队用了 40%。账单上只显示一笔 5000 元的费用,怎么分?
这就得靠分摊模型了。我常用的有三种:
- 按用量分摊:比如按 CPU 使用时长、存储容量比例来分。最公平,但需要采集详细指标。
- 按调用次数分摊:适合 API 网关、消息队列这类服务。谁调得多谁多出钱。
- 按固定比例分摊:比如两个团队各 50%。简单粗暴,适合长期稳定的共享资源。
我曾经在项目中遇到过一个问题:一个 Redis 集群被 5 个微服务共用,每个服务的使用模式完全不同。按固定比例分摊,有个小团队天天喊冤。后来改成按 key 数量 + 内存占用量加权分摊,大家才没话说。
避坑指南:分摊模型一旦确定,不要频繁改。我曾经一个月改了 3 次分摊规则,结果财务对账对不上,被审计追着问。建议每季度 review 一次,年中大调,年底微调。
2.4 第三步:搭仪表盘——让数据「说话」
有了标签和分摊模型,数据就干净了。接下来就是搭仪表盘。我个人习惯用 Grafana + Prometheus 这套组合,当然用云厂商自带的成本管理工具也行。
第一张仪表盘,我建议只放 4 个核心指标:
- 总成本趋势:按天/周/月展示,一眼看出是涨是跌。
- 按业务线成本排行:哪个业务花钱最多?TOP 5 列出来。
- 按资源类型成本分布:计算、存储、网络各占多少?
- 成本异常告警:单日成本突增 20% 以上,自动发钉钉/企微通知。
代码示例(Grafana 的 PromQL 查询):
// 按业务线汇总每日成本
sum by (business) (
rate(container_cost_total[1d])
)
// 成本异常检测(与过去7天均值对比)
abs(
sum(rate(container_cost_total[1h]))
-
avg_over_time(sum(rate(container_cost_total[1h]))[7d:1h])
) > 0.2 * avg_over_time(sum(rate(container_cost_total[1h]))[7d:1h])
你想想看,有了这张仪表盘,每天早上开晨会时,你就能直接说:「订单团队昨天成本涨了 15%,查一下是不是新上线的推荐服务没关实例。」——这才叫「看清每一分钱」。
2.5 避坑指南:我踩过的三个坑
最后分享几个实战中容易翻车的地方:
- 标签覆盖不全:一开始只给新资源打标,老资源不管。结果老资源占了 70% 的成本,仪表盘上全是「未标记」——等于白搭。建议一次性补全所有存量资源的标签。
- 分摊模型太复杂:有个团队搞了 8 层分摊规则,最后没人看得懂,也没人信。记住:简单可解释,比精确更重要。
- 仪表盘没人看:搭好了不发出来,等于没搭。我习惯每周五下午把成本报表发到技术群里,@ 各业务线负责人。连续发一个月,大家就养成看成本的习惯了。
好了,这一章就聊到这。下一章咱们聊聊怎么用「弹性伸缩」来动态省钱——说白了,就是让机器该睡的时候睡,该干活的时候干活。