RPC 服务巡检工作流
0x01 日常 RED 面板巡检
蓝鲸监控基于「RPC 指标规范」为 RPC 服务提供基于 RED 指标体系的标准监控面板查询语句,包括:
- 请求量(request_total)
- 成功率 / 超时率 / 异常率(success_rate / timeout_rate / exception_rate)
- 平均耗时(avg_duration)
- 耗时分布(p50_duration / p95_duration / p99_duration)
基于 Calculate By Range 的接口能力,提供 RED 指标按时间范围的汇总表格视图。
查询语句可用于日常 RPC 服务的健康状态巡检,帮助开发/运维人员及时发现和定位服务异常,以下列举部分巡检最佳实践。
a. 基于 calculate_by_range 进行维度下钻的通用技巧
通过 calculate_by_range 接口的维度过滤和分组功能,可以实现对 RED 指标的多维度下钻分析,帮助快速定位问题根因。
1)一般从 callee_method 开始,对返回数据按 callee_method 维度分组,并对指标查询结果进行排序,找出异常指标值突出的 TOP N 接口。
2)增加异常接口作为过滤条件,分析其他维度是否存在异常:
code:分析是否为特定业务错误码引起的问题。instance:分析是否为特定实例引起的问题,比如具体某个 CVM 或容器实例异常。- 【仅适用于主调】
callee_server&callee_service:分析是否为特定被调服务引起的问题。 - 【仅适用于被调】
caller_server&caller_service:分析是否为特定主调服务引起的问题。
3)时间对比:找出引发异常维度组合,增加一天前(1d),一周前(7d)等时间范围对比,确认是否为新出现的问题。
4)调用链:
- 查询异常 Span:使用异常维度组合作为过滤条件,查询调用链中的错误、耗时长的 Span,获取更详细的调用信息。
- 查询异常 Trace:基于典型 Span,查询完整 Trace 详情,分析调用链上下游服务的影响。
4)提升排查效率的技巧:
- 优先使用单维度下钻,确认单个维度枚举值数量 < 100 时,再考虑多维度组合下钻,避免数据量过大导致查询超时。
- 结合时间范围缩小查询粒度,优先排查近 1 小时或 30 分钟内的异常,再根据需要扩大时间范围。
b. RED 指标趋势分析和维度下钻
通过时序数据,观察请求量、耗时(P99)、超时率、异常率等指标的变化趋势,识别潜在的性能瓶颈和异常波动:
- 请求量骤增可能预示流量攻击或业务异常。
- 超时率/异常率上升可能预示服务不可用或性能下降。
- 耗时(P99)上升可能预示性能瓶颈或资源不足。
场景 1 - 曲线存在明显波动或毛刺
选取波动段作为时间范围,参考「a. 基于 calculate_by_range 进行维度下钻的通用技巧」,逐步缩小范围定位异常根因。
场景 2 - 曲线平稳但指标异常
参考「a. 基于 calculate_by_range 进行维度下钻的通用技巧」:
- 结合时间对比,确认是否为新出现的问题。
- 进行下钻排查,并给出典型的异常接口,如果有多个,可列出 TOP N 接口。