【技术创作101训练营】业务全链路监控的探索

2021-01-21 10:53:23 浏览数 (1)

业务全链路监控的探索.pdf

演讲文稿:

第一页演讲文稿:

众说周知,随着微服务技术架构的流行,应用程序在监控层面的复杂度越来越高,维护实施成本也同样增高,但技术发展到今天,解决的办法也随之出现了,今天我们要介绍的就是全链路监控。

第二页演讲文稿:

为什么要对业务程序做监控,监控的目的是什么? 主要有以下几个方向:

  • 优化业务体验
  • 清楚业务间调用关系
  • 加速问题解决速度
  • 对异常业务行为预警
  • 使得老板、产品、运营、运维等用户都可以快速了解业务是否有问题

第三页演讲文稿:

但现在的问题是,使用分布式跨机房的部署架构后,这么复杂的业务我怎么理清楚呢;服务依赖这么多,哪个地方才需要优化?

这么多依赖,我解决问题的速度快不起来,那就会导致故障扩大,间接造成公司损失。怎么解决这些问题呢,接下来我们就会知道

第四页演讲文稿:

随着互联网行业的进步,监控的意义与重要性被越来越多人重视,因此打造一个完备的监控体系势在必得。以往监控的弊端有以下几点:

  • 各系统监控能力与覆盖度参差不齐
  • 系统、业务监控一把抓
  • 上下游跨部门协助成本高
  • 看不到全貌

那么我们就要通过应用管控层面 业务运营层面来打造一套多维度立体化的监控体系。

第五页演讲文稿:

首先了解下全链路监控的由来,首先来自 goole dapper这么一篇论文,论文中提到的三要素奠定了理论实现的基础,它们分别是Span、Trace、调用链。具体定义的内容大家可以看看PPT

第六页演讲文稿:

既然要做这么一套东西,就先找找有没有开源的实现产品,其实只要是支持OpenTracing规范的框架产品都可以,本文选用apache 顶级项目skywalking,OpenTracing规范包含以下三点:

  • Metrics(aggregatable):
  • 单指标分析Tracing(request scope):
  • 分布式追踪Loggin(events):日志事件文件

右下角是全链路监控的架构略缩图

第七页演讲文稿:

这里说下整个全链路监控的系统流程

  1. 项目经理发布需求后由程序员开发编码
  2. 编码完成后统一发布到容器环境中
  3. 每个容器都有一个用于收集环境于应用信息的SDK
  4. 通过主动提交至数据采集平台完成信息聚合
  5. 自定义各种监控策略,以供面板显示

第八页演讲文稿:

那么在监控面板上,我们主要关注的是哪些信息呢?主要关注的有:

  • 服务的QPS,每秒的投标数
  • 服务处理耗时,区别成功、失败
  • 服务的异常,错误率,错误码
  • 在使用资源占比,区分应用类型

其实主要分为两大类:核心指标与辅助指标

第九页演讲文稿:

那么常见的分级指标有以下这些,仅供参考:

  • 应用类型指标有:系统指标、JVM、中间件、数据库、API调用量
  • 关联类型的指标有:调用方、来源、是否压测、机房单位
  • 核心类型指标有:流量、延时、错误率

第十页演讲文稿:

我们来看看阿里巴巴针对业务领域划分后架构的全链路监控模型,各位可以对比自己负责的项目架构做拆分理解。

交易域中包含多个维度的数据,比如业务方维度、物理维度、环境维度等,这些数据都会统一等被当作价值数据提供到全链路平台中,以便故障排查与定位。

第十一页演讲文稿:

那么数据采集上肯定是需要一个规范的,不然各个业务产品线都按照自己的想法来,岂不乱套了。至于规范有以上两种方式可以参考:

  • 日志格式化:采用统一的规范标准,全平台应用统一监控,减轻运维与开发学习成本,提高系统运算速度
  • 埋点配置化:提供专业的埋点SDK,通过配置化的方式实现对数据的拦截、计算、上报,用户无需修改业务代码。

第十二页演讲文稿:

说了这么多理论内容,这里给大家看看实际多skywalking效果吧,从图中可以看到应用的各种平均值,如平均响应时长等。

第十三页演讲文稿:

还可以看到节点等应用平均值,如响应时长呀,执行等sql呀,耗时呀。

第十四页演讲文稿:

还可以看到应用全局到拓扑图,了解系统相关到依赖,还能从中了解系统模块之间流量、耗时、成功率等关键数据

第十五页演讲文稿:

当然还有局部拓扑图,显示业务之间调用成功数/失败数;各模块实例节点数;当前机器cpu/内存。可以关注某个重点业务线相关联的拓扑图,也可以在拓扑图上选某条线关注其相关的服务节点(如优惠券使用需要账户、产品、交易三个业务交互)

第十六页演讲文稿:

在一次请求当中,我们往往想知道具体底层经过了哪些方法操作,skywaling还提供了业务调用连的查询,如图。调用链其实可以反应一次业务操作所要经过的所有业务,比如投标操作:需要验证账户、校验资金、下单、确认付款、标的信息变更、合同等多方操作。

第十七页演讲文稿:

对于分布式的应用,除了查看服务内调用的方法链路,还需要知道是与其交互的其他微服务节点,那么同样可以看到。如图,

比如从当前时间开始,持续了3401毫秒,总共跨越调度了9个节点(有中间件、数据库、服务)显示每个跨度点的调用量、流量、耗时、IP等

第十八页演讲文稿:

最后我这里提出三个问题,大家可以举手来回答,如果没有人的话,这就留给各位同事去私下研究下,不懂的可以请教我。

第十九页演讲文稿:

谢谢大家来参加本次技术分享,希望这次的内容对你们有所帮助或提升。

0 人点赞