服务质量监控

December 4, 2021

整理下目前业务已有的监控能力以及相关指标、维度。大部分开发关注的可能只是自身服务的质量,缺乏对整体链条监控的了解。业务的发展过程中,出现过太多非后端服务质量导致的异常,所以要求开发能对服务整体的监控能力有所了解。

后台逻辑服务层

后端逻辑服务,目前主要基于123+007平台。

  • 【下游】trpc主调
    • 指标:请求量、耗时、失败率(区分超时、异常)
    • 维度:(下游)服务-接口、ip、返回码
  • 【自身】trpc被调
    • 指标:请求量、耗时、失败率(区分超时、异常)
    • 维度:(本服务)服务名-接口、ip、返回码
  • 【自身】trpc属性监控
    • 指标:业务自定义指标,包括trpc框架自动上报性能指标,如goroutine数、node event loop lag等。
    • 维度:可按单机展开
  • 【自身】容器负载
    • 指标:cpu、内存、磁盘、带宽
    • 维度:可按单机展开

总结

  • 优势:对下游监控完善,容器负载监控可以覆盖自身大部分异常
  • 不足:服务内部异常(如内部block导致出现服务毛刺等)依赖业务自身上报【自身异常也可以通过上游发现】

业务接入层

实现取决于业务团队能力,小团队一般直接用nginx等API网关即可,有能力的团队可以自行开发。目前业务使用了两层。

平台服务统一接入层

统一后端各接口的路由分发,由平台统一开发、维护。

监控方案同后台逻辑服务层,主要关注后端各服务的访问量及质量监控,同时也提供一些通用基础能力,包括:频率限制、协议转换、安全鉴权等。

【下游】业务接入层

历史原因,项目中目前采用nginx。定位同上面的后端服务统一接入层类似。

  • 指标:基于nginx插件模式开发,包括请求量、失败率
  • 维度:ip、cgi、业务渠道

总结

  • 优势:可靠,监控到所有下游业务逻辑层的对外质量
  • 不足:
    • 自身缺乏监控(如容器异常):—— 可以通过上游监控间接发现(ias、sparta);

【下游】公司接入层IAS、Sparta

公司接入层目前监控实现也基于007。

  • 指标:QPS、转发成功率、请求数(http/https)、耗时(总、rs处理)、https返回状态码、RS(连接、处理耗时)
  • 维度:RS-IP:Port、Cgi-Path(仅path1)、clb:rs返回码、节点ip、set

总结

  • 优势:通常可以明确判断是否为内部服务异常or用户侧/厂商服务异常。ias的007监控指标也能反应整体服务质量。
  • 不足:
    • 自身缺乏监控(ias/sparta早期bug较多...):—— 只能通过上游监控间接补齐部分(比如失败量大时的拨测、客户端质量上报);

终端

【上游】客户端cgi质量上报

客户端(native)网络库采样上报,采样率:失败时100%,正常10%

  • 指标:总量、失败、耗时(curl连接、传输)
  • 维度:域名、pt、chid、返回码(包括http、网络异常)、cgi、version、http/https、是否ipV6、服务端ip【公司接入层or用户网关代理】、运营商、地区(省/城市)

总结

  • 优势:能反应整体趋势;
  • 不足:
    • 依赖后端的分析上报系统建设的完善程度。目前为atta接入007。基本可用
    • 本地无法区分本地网络异常(比如tv端设备刚开机时调用的接口失败率普遍偏高)——影响分析

【上游】【自身】web页面监控

目前基于公司aegis平台,将aegis-sdk集成到各页面。

  • 指标:页面性能相关(加载瀑布图、首屏耗时)、api质量相关(cgi访问量、耗时、成功率)、页面访问(pv/uv)、页面资源?
  • 维度:地区、运营商、浏览器

总结

  • 优势:指标丰富,包含服务质量、页面性能、错误日志等
  • 不足:仅限于web;对hybird支持不够友好。

【上游】拨测

基于腾讯云云拨测平台,与cgi质量上报类似

  • 指标:耗时、失败率
  • 维度:自行配置拨测url、频率

总结

  • 优势:不存在本地网络异常问题
  • 不足:监控点有限(约18个地区✖️平均3个运营商)、频率低

其他补充

  • ifeedback用户反馈分析
    • 优势:用户层面的异常+关键字集中告警
  • 链路追踪

    问题定位辅助工具,能快速定位链路相关异常。

  • 安全监控

    依赖安全中心监控平台

See all postsSee all posts