本节摘要:国内云对"成本治理"的重视程度比海外云更高——多部门共用云账号时,按部门/项目分账是硬需求。阿里云提供 Cloud Monitor(云监控)+ SLS(日志服务)+ 资源编排 ROS + 成本中心 Budget 四件套,把"出问题能看见、账单能分摊"做成工程闭环。本节讲清云监控告警配置、SLS 日志查询、成本中心预算告警、资源标签治理这四个核心动作。
阅读完本节,你应当能够:
某公司 2022 年发生了一次"安静的财务事故":某个测试项目跑了 6 个月的 GPU 实例忘了关,月账单从 8000 元跳到 12 万。财务 3 个月后才发现——因为账单汇总报告是按月自动发的,但没人设置"超预算告警"。
正解:成本中心的 Budget 功能可以设"月预算 5 万元,超过 80% 发邮件、超过 100% 发短信 + 触发自动停机"。预算告警是云成本治理的硬工具,不用等于裸奔。
# 创建告警联系人组 aliyun cms PutContactGroup --ContactGroupName ops-team --Describe "Ops team" \ --ContactNames '[{"Name":"alice","Channels":{"Email":"alice@example.com","SMS":"+86-138-xxxx-xxxx"}}]' # 创建告警规则:ECS CPU > 80% 持续 5 分钟 aliyun cms PutEventRule --RuleName ec2-high-cpu \ --EventPattern '{ "product":"ECS", "level":["CRITICAL","WARN"], "status":"Running" }' # 创建告警策略 aliyun cms PutEventTargets --RuleName ec2-high-cpu \ --Targets '[{ "Type":"ContactGroup", "ContactGroupName":"ops-team", "Level":["CRITICAL"] }]'
# 创建日志项目(Project)和日志库(Logstore) aliyun sls CreateProject --ProjectName my-app-logs --Region cn-hangzhou aliyun sls CreateLogStore --ProjectName my-app-logs --LogstoreName app-logs # 把 ECS 上的应用日志接入 SLS # (在 ECS 上装 Logtail 客户端,配置采集路径 /var/log/myapp/*.log) # 用类 SQL 查询最近 1 小时的 ERROR aliyun sls GetLogs --ProjectName my-app-logs --LogstoreName app-logs \ --From $(date -d '1 hour ago' +%s) --To $(date +%s) \ --Query '* | SELECT COUNT(*) as cnt WHERE level="ERROR"'
# 创建月度预算:5 万元 aliyun bssopenapi CreateBudget --BudgetName my-app-monthly \ --BudgetType Monthly \ --BudgetAmount 50000 \ --AlertRule '{ "Rules": [ {"Threshold":80,"TriggerType":"Equal","ContactType":"Email"}, {"Threshold":100,"TriggerType":"Exceed","ContactType":"SMS"} ] }'
# 给 ECS 打标签 aliyun ecs AddTags \ --ResourceId i-xxxxxx \ --ResourceType Instance \ --Tags '[{"TagKey":"Department","TagValue":"Engineering"},{"TagKey":"Project","TagValue":"my-app"}]' # 按 Tag 查询资源 aliyun ecs DescribeInstances --Tag.1.Key Department --Tag.1.Value Engineering # 成本中心按 Tag 统计账单 # (控制台:成本中心 → 账单明细 → 按 Tag 分组)
| 级别 | 触发条件 | 通知方式 | 响应时间 |
|---|---|---|---|
| P0 紧急 | 服务完全不可用 | 电话 + 短信 + 钉钉 | 5 分钟 |
| P1 重要 | 关键指标异常 | 短信 + 钉钉 | 30 分钟 |
| P2 警告 | 性能降级 | 钉钉 | 4 小时 |
| P3 提示 | 资源预警 | 邮件 | 1 个工作日 |
告警疲劳是真实问题:一个团队的告警群 1 天发 200 条 vs 1 周发 3 条,工程师的响应速度差 10 倍。分级 + 收敛是必须的。
| Tag Key | 含义 | 例子 |
|---|---|---|
| Department | 部门 | Engineering / Marketing / HR |
| Project | 项目名 | my-app / data-platform |
| Environment | 环境 | production / staging / dev |
| CostCenter | 成本中心代码 | CC-2024-001 |
| Owner | 资源负责人 | alice@example.com |
| ExpireTime | 过期时间(资源清理) | 2024-12-31 |
强制要求:所有新建资源必须打 Department + Project + Environment 三个 Tag,否则财务不予报销。这是某互联网公司的硬制度。
某 SaaS 公司月账单 35 万,做了以下动作后降到 22 万(节省 37%):
| 治理项 | 节省金额 | 实施成本 |
|---|---|---|
| 测试环境定时启停 | 4.5 万 | 1 人天 |
| 旧版 RDS 降配 | 3.2 万 | 0.5 人天 |
| 跨区复制改成单区 + 异步异地备份 | 5 万 | 2 人天 |
| 资源标签治理(找出无主资源) | 0.5 万 | 1 人天 |
| 总计 | 13.2 万 | 4.5 人天 |
4.5 人天换 13.2 万/月,年化节省 158 万——ROI 极高。
| 反例 | 后果 | 正解 |
|---|---|---|
| 没有预算告警 | 账单超 3 倍才发现 | Budget 设月预算 + 80%/100% 通知 |
| 告警只发邮件 | 工程师不看邮件 | 重要告警发短信 + 电话 |
| 没有资源标签 | 账单无法分摊到部门 | 强制 Tag + 财务对接 |
| 告警没有 Runbook | 收到告警不知道怎么处理 | 每个告警配 Runbook 文档 |
| 日志只存 7 天 | 排错时找不到一个月前的日志 | 强制保留 90 天 + 归档到 OSS |
| 工具 | 用途 |
|---|---|
| 操作审计(ActionTrail) | 记录所有 API 调用,等保合规必备 |
| 资源编排 ROS | IaC(基础设施即代码),用模板管理云资源 |
| 配置审计 Config | 检查资源配置是否符合合规基线 |
| 云安全中心 | 漏洞扫描、基线检查、告警 |
国内合规项目(等保 2.0 三级及以上)必须开操作审计——这是合规检查的硬要求。
⚠️ 常见坑:国内云"等保 2.0"合规不是免费的。一个系统过等保三级,咨询费 + 测评费 + 整改费合计 5-20 万。预算时要把这部分算进去。
💡 关键直觉:国内云的"成本治理"是合规要求,不是可选项。等保、密评、信创等合规检查都会问"你的资源怎么分的、谁用的、出了事能追到谁"——没有资源标签和审计日志,审计直接 FAIL。
至此阿里云深度上手结束。下一章切到腾讯云——同样的链路,平行的命令。