下面给你一套「SaaS 技术+运营一体化监控」落地方案,覆盖指标体系、数据采集、告警与看板、数据治理与安全,以及适用于你现有通信类业务(短信、语音、号码能力)的示例与 PromQL/事件模型。你可以直接按模块实施。

一、监控目标与分层(看什么)

把监控拆成 MELT 四类 + 运营指标,两条线并行:

  • Metrics 指标:SLO/容量/业务 KPI(延迟、错误率、成功率、吞吐)。
  • Events 事件:用户/业务事件流(下单、发送、接通、计费)、系统事件(发布、扩容、故障)。
  • Logs 日志:调试与审计(异常堆栈、风控命中、计费轨迹)。
  • Traces 链路:端到端请求/消息流追踪(跨服务 RT、瓶颈)。
  • Ops(运营):增长与经营(转化、留存、ARPU、成本、毛利、工单、NPS)。

二、指标体系(量什么)

1) 技术/可靠性 SLI

  • 可用性availability = 1 - (5xx_requests / all_requests)
  • 延迟:P50/P95/P99(API、队列处理、DB、缓存);语音 PDD(拨出到振铃)、通话 ASR。
  • 错误率:整体/按租户/按运营商/按地区/按功能(例如验证码短信 vs 营销短信)。
  • 吞吐/并发:QPS、队列堆积、活跃通道、连接数。
  • 资源:CPU、内存、磁盘 I/O、网络、连接池、GC、慢 SQL。
  • 交付/变更:发布失败率、回滚次数、MTTR、变更窗口内异常升高。

2) 安全与合规

  • 登录失败率、敏感接口调用频次、IP 画像、风控命中率、审计日志完整性、凭证/密钥轮换时效。

3) 成本/FinOps

  • 单位成本与毛利:每条短信/每分钟语音/每次查询的 单价、通道成本、毛利率(可分运营商/国家/租户/产品线)。
  • 云资源成本:按标签(service/tenant/env)聚合;单位 QPS 成本、单位订单成本。

4) 运营/业务 KPI

  • 漏斗:访问→注册→实名认证→集成→首发→稳定使用。
  • 实时成功率:短信提交成功率、到达率、语音 接通率、平均触达时延。
  • 增长与留存:DAU/MAU、7/30 天留存、活跃租户数、订单/开票/回款。
  • 支撑:平均首次响应时长、问题解决时长、工单分类、NPS。

三、数据采集与架构(怎么采)

推荐基线技术栈(自托管/开源优先):

  • OpenTelemetry SDK/Agent(Go、PHP 插件/sidecar)→ OTel Collector
  • Metrics:Prometheus(抓取 + RemoteWrite 到 Mimir/Thanos 以长期存储)
  • Logs:Loki(结构化 JSON 日志)
  • Traces:Tempo(兼容 OTLP/Jaeger)
  • Dashboards/告警:Grafana + Alertmanager(Grafana 也可直发通知,但 Alertmanager 统一编排)
  • 产品/运营数据仓:ClickHouse/BigQuery(事件流、明细级 KPI、成本),BI 用 Superset/Metabase

数据通道双轨:

  1. 实时可观测性轨(秒级):Metrics/Logs/Traces → Grafana 告警、值班响应。
  2. 批处理分析轨(分钟到小时级):事件与计费明细 → DWH → 报表、留存/毛利/人效。

**多租户落标签:**所有监控维度统一标签:tenant_id, env, region, carrier, product, channel, version

注意:Prometheus 标签要控基数(tenant_id 可做哈希或只对 TOP N 开大图,长尾归为 others)。

四、关键指标落地示例(通信类)

1) Prometheus 指标设计(应用内埋点)

# HTTP/内部 RPC
http_request_duration_seconds{service,route,method,code,tenant_id} histogram
http_requests_total{service,route,code,tenant_id} counter
# 队列
queue_size{queue} gauge
queue_consume_duration_seconds{queue,consumer} histogram
# DB/缓存
db_query_duration_seconds{db,op,table} histogram
cache_hit_ratio{cache} gauge

# 短信
sms_submit_total{tenant_id,carrier,route,result} counter
sms_delivery_total{tenant_id,carrier,route,status} counter
sms_delivery_latency_seconds{tenant_id,carrier,route} histogram

# 语音(PDD/ASR/接通)
voice_call_attempt_total{tenant_id,carrier,callee_province,result} counter
voice_pdd_seconds{tenant_id,carrier} histogram      # originate→progress
voice_asr_ratio{tenant_id,carrier} gauge            # 接通时长/话务时长

P95 计算(PromQL):

histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

短信到达率(5 分钟滑动):

sum(rate(sms_delivery_total{status="DELIVERED"}[5m]))
/
sum(rate(sms_delivery_total[5m]))

语音 PDD P95(5 分钟):

histogram_quantile(0.95, sum by (le) (rate(voice_pdd_seconds_bucket[5m])))

租户/运营商维度接通率:

sum(rate(voice_call_attempt_total{result="ANSWERED"}[10m])) by (tenant_id, carrier)
/
sum(rate(voice_call_attempt_total[10m])) by (tenant_id, carrier)

2) 链路追踪(关键场景)

  • 「用户调用发送短信 API」→「模板渲染」→「签名/风控」→「路由选通道」→「上游网关响应」→「状态回执回传」。
  • 「语音外呼」→「CPS 限流」→「SIP 信令」→「网关」→「CDR 写入」→「对账与计费」。
    标注 span attributes(tenant_id、carrier、template_id、route_id、call_id),出问题时一键钻取日志/指标。

3) 运营事件模型(埋点到 DWH)

事件名与属性(JSON)示例:

{
  "event": "sms_delivered",
  "time": "2025-09-22T07:00:00Z",
  "tenant_id": "t_1024",
  "msg_id": "m_abcd",
  "carrier": "CMCC",
  "province": "Jiangsu",
  "latency_ms": 850,
  "route": "R1",
  "scene": "login_otp",
  "cost_cent": 3,
  "price_cent": 8
}

常用事件:user_signupauth_verifiedapi_key_createdsms_submittedsms_deliveredvoice_attemptedvoice_answeredinvoice_issuedpayment_succeededticket_creatednps_submitted
用这些事件做漏斗、留存、LTV、毛利、通道对比、地区热力与时段峰值。

五、告警策略(怎么报)

1) SLO/误差预算(推荐)

  • 短信到达率 SLO:近 30 天 ≥ 98.5%(场景:验证码)。
  • 语音 PDD SLO:P95 ≤ 3s;接通率 ≥ 65%(按地区/号段动态基线)。
  • 平台 API:P95 ≤ 300ms、可用性 ≥ 99.9%。

多窗口多倍率“燃尽”告警(示例):

# 快速燃尽(5m 看 2h 预算)
(
  rate(error_requests_total[5m]) 
  / rate(all_requests_total[5m])
) > 5 * (1 - SLO)

# 慢速燃尽(30m 看 6h 预算)
(
  rate(error_requests_total[30m]) 
  / rate(all_requests_total[30m])
) > 2 * (1 - SLO)
  • 分级:P1(客户面服务大面积不可用/合规风险)、P2(核心 KPI 明显劣化)、P3(局部/单租户/单通道)。
  • 抑制/聚合:由 Alertmanager 进行路由(按服务、租户、环境)→ 值班群、电话、工单系统,避免 Grafana 各自分发造成风暴。
  • 静默:发布窗口/演练期间设置静默,防误报。
  • 告警消息内容:清晰含 影响面(租户/地区/通道)可能原因(最近变更/上游故障)、Runbook 链接关联 TraceID

六、看板设计(怎么呈现)

A) 技术总览(Grafana)

  1. 平台健康:全站可用性、5xx、P95 延迟、活跃租户数、SLO 仪表盘。
  2. 拓扑热力:服务拓扑 + RT/错误热力(来自 Tempo/Service Map)。
  3. 资源容量:CPU/内存/GC、连接池、队列堆积、磁盘 I/O。
  4. 数据库:慢查询 TopN、QPS、缓存命中率。
  5. 发布与异常:最近变更时间线、异常率对比、回滚统计。

B) 通信业务(短信/语音)监控(Grafana)

  • 短信:提交成功率、到达率、回执延迟 P95、失败按运营商/地区/通道分布、模板/签名命中异常。
  • 语音:外呼量、PDD P95、接通率、掉话率、按号段/地区切片;CDR 异常(计费缺口)。
  • 多租户:按租户 TopN 榜单与明细钻取(其余合并为 others)。

C) 运营驾驶舱(BI:Metabase/Superset)

  • 实时漏斗:注册→认证→接入→首发→稳定使用。
  • 留存热力:按租户/行业/集成方式。
  • 收入与毛利:分产品/运营商/地区/租户;单位成本/单位毛利 曲线。
  • 增长:DAU/MAU、ARPU、客诉率、工单处理时效、NPS 趋势。

七、工程与治理(如何长期可用)

  • 命名规范<domain>_<object>_<metric>_<unit>;标签统一:tenant_id, env, region, carrier, route, scene, status
  • 基数控制:限制高基数字段(如 phone、msg_id)只出现在 日志/trace,不要进指标标签。
  • 采样策略:Trace 1~10% 采样,错误与慢调用 100% 保留;日志按等级与关键路径保留。
  • 数据留存:指标 15–30 天热数据 + 长期冷存(Mimir/Thanos);日志 7–30 天,审计/计费按合规留存。
  • 权限与隐私:PII 脱敏(手机号后 4 位可选显示)、RBAC、审计全链路。
  • Runbook:每条 P1/P2 告警对应一页操作指引(现象→定位步骤→旁路/降级→回溯)。
  • 变更可观测:每次发布写入 deployment_event{service,version} 指标,方便“变更—故障”关联。

八、实施路径(一步步来)

  1. 最小闭环:接入 OTel Collector → 应用导出 延迟/错误率/吞吐 三件套 → Grafana 总览 + Alertmanager P1。
  2. 业务专项:短信/语音指标与回执/CDR 埋点,做「到达率/接通率/PDD」专题盘。
  3. 链路与日志:关键场景 100% 追踪;Loki 接入结构化日志与审计。
  4. 运营数据仓:事件流入 ClickHouse,落地漏斗/留存/毛利与通道对比;打通工单与 NPS。
  5. SLO 制度化:建立误差预算与周报,问题复盘闭环到研发/路由策略/上游治理。

附:你可以直接复用的小片段

**PDD 采集(语音):**从 FreeSWITCH/网关 CDR 取 originate_timeprogress_time,上报 voice_pdd_seconds histogram(如桶:[0.5,1,2,3,5,8,13])。
短信回执延迟:delivery_time - submit_timesms_delivery_latency_seconds histogram。
SLO 看板核心图:

  • 「全站可用性 & 错误预算燃尽」
  • 「短信到达率(TopN 运营商/地区)」
  • 「语音 PDD P95/接通率(TopN 号段/地区)」
  • 「变更时间线 + 异常率叠加」
  • 「租户健康榜(红黄绿)」
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐