托管运维

告警太多和告警太少一样危险

我们接手过一天两千条告警的环境,值班的人早就麻木了。降噪的第一步是想清楚每条告警对应什么动作。

告警设计的一条铁律

每条告警都必须能回答一个问题:收到它以后要做什么?如果答案是「看一下」或者「不用管」,那它就不该是告警,应该降级成看板指标或日报内容。

我们做告警治理的标准流程是:先统计过去 30 天所有告警的触发次数和实际处置动作,把从未导致任何动作的告警全部关掉或降级。通常这一步就能砍掉 60%-80% 的噪声。

告警分层设计

层级监控对象示例指标告警策略
业务层用户能感知的指标下单成功率、支付成功率、页面可用性直接告警到值班,这是最重要的一层
应用层服务健康度错误率、P99 延迟、队列积压超阈值告警,配合同比判断
中间件层数据库、缓存、消息队列连接数、慢查询、复制延迟、缓存命中率分级告警,中危先记录
资源层CPU、内存、磁盘、网络使用率、IOPS、带宽只在趋势性异常时告警,不做瞬时告警
平台层云服务状态AWS Health 事件、配额使用率配额接近上限提前告警

很多团队只做了资源层监控,结果 CPU 一切正常但用户已经下不了单。业务层指标才是最终判据。

可观测性技术栈

展示与告警

Grafana 看板 CloudWatch Dashboard 企微/钉钉机器人 PagerDuty 值班轮转

指标

CloudWatch Metrics Prometheus 自定义业务指标 SLO 计算

日志

Fluent Bit 采集 CloudWatch Logs OpenSearch S3 归档 + Athena

链路

OpenTelemetry SDK X-Ray 服务依赖图 慢调用分析

合成监控

CloudWatch Synthetics 多地域拨测 关键流程巡检

日志成本很容易失控。建议:结构化日志、按级别采样、热数据留 7-14 天在 OpenSearch,冷数据归档到 S3 用 Athena 查。

SLO 与错误预算告警

yaml slo-alerts.yaml
# 基于错误预算燃烧率的告警,比固定阈值更能反映真实风险
# 目标:99.9% 可用性(30 天错误预算 = 43.2 分钟)

groups:
  - name: slo-order-service
    rules:
      # 定义 SLI:成功请求占比
      - record: sli:order_success_ratio:rate5m
        expr: |
          sum(rate(http_requests_total{service="order",code!~"5.."}[5m]))
          /
          sum(rate(http_requests_total{service="order"}[5m]))

      - record: sli:order_success_ratio:rate1h
        expr: |
          sum(rate(http_requests_total{service="order",code!~"5.."}[1h]))
          /
          sum(rate(http_requests_total{service="order"}[1h]))

      - record: sli:order_success_ratio:rate6h
        expr: |
          sum(rate(http_requests_total{service="order",code!~"5.."}[6h]))
          /
          sum(rate(http_requests_total{service="order"}[6h]))

      # 快速燃烧:1 小时内烧掉 2% 的月度预算 → 立即告警
      # 按这个速度,预算会在 2 天内耗尽
      - alert: OrderServiceFastBurn
        expr: |
          (1 - sli:order_success_ratio:rate5m) > 14.4 * 0.001
          and
          (1 - sli:order_success_ratio:rate1h) > 14.4 * 0.001
        for: 2m
        labels:
          severity: P1
          team: order
        annotations:
          summary: "订单服务错误预算快速消耗"
          description: |
            当前错误率 {{ $value | humanizePercentage }},
            按此速度月度错误预算将在 2 天内耗尽。
          runbook: "https://wiki.internal/runbook/order-service-errors"

      # 慢速燃烧:6 小时内烧掉 5% → 工作时间处理
      - alert: OrderServiceSlowBurn
        expr: |
          (1 - sli:order_success_ratio:rate6h) > 6 * 0.001
        for: 15m
        labels:
          severity: P3
          team: order
        annotations:
          summary: "订单服务错误预算缓慢消耗"
          description: "需在本周内定位并修复,避免月末预算耗尽。"

      # 延迟 SLO:P99 超过 500ms
      - alert: OrderServiceLatencyDegraded
        expr: |
          histogram_quantile(0.99,
            sum(rate(http_request_duration_seconds_bucket{service="order"}[5m])) by (le)
          ) > 0.5
        for: 5m
        labels:
          severity: P2
          team: order

燃烧率告警的好处是:短时的小波动不会打扰你,但持续性的劣化会及时暴露。比「错误率 > 1% 就告警」精准得多。

下一步

把云的复杂度交给我们,你只管做业务

留下需求,沐杉云的解决方案架构师会在一个工作日内联系你,提供免费的现状评估、迁移方案草案与 TCO 测算表。