为何需要链路分析?

您是否了解运维环境的网络架构和业务系统架构?当业务升级或变更时,是否对已有的架构图及时作出更新?当发生故障时,是否能够快速判断哪个业务系统模块或接口出现了问题,是否能够快速判断故障影响范围?

要回答以上问题,就需要对各业务的调用关系有着精准、实时的掌握,但在实际工作中,即使是业务系统开发者,也很难清楚地说出某个服务的调用链路,况且服务调用链路还是动态变化的,遇到问题也只能去查看代码。

随着微服务、容器等新型架构技术的流行,分布式系统环境的调用链追踪问题也变得愈加复杂。2010年,谷歌开源了其内部使用的分布式追踪系统Dapper,此后很多企业和组织发布了各自的分布式追踪系统,其中比较知名的开源项目包括Zipkin、Pinpoint等。

链路追踪的概念原理

在这里,我们对链路追踪、调用链、全链路、分布式链路追踪的概念不做区分,可以理解为整个链路,一个链路会经过如下图的调用过程:

典型的业务调用链示意图

该图表示一个最典型的请求调用过程,所谓链路就是把j-o这6个环节串连起来。在进行链路分析时,需要为每次请求定义一个唯一标识traceid,这样才能根据traceid查出本次请求调用的所有服务。

图中标示的j-o分别代表两服务之间的一个请求-应答对,我们把它定义为一个span,每个span包含以下字段:

l spanid:请求-应答对的唯一标识;

l name:span的名称;

l parentspanid:父span的id,根据spanid能区分调用的先后顺序,但无法体现调用层级关系,例如上图中多个服务,可能是逐级调用的链条,也可能是同时被同一个服务调用,应该每次都用parentspanid记录下是谁调用的;

l timestamp:span的起止时间戳(starttime、endtime);

l duration:span的持续时间;

l other fields:成功状态status、错误类型errortype等。

有timestamp字段,就可以计算出从服务调用到服务返回的总耗时,但是这个时间包含了服务的执行时间和网络延迟,有时候我们需要区分出这两类时间以方便做针对性优化。那如何计算网络延迟呢?我们可以把调用和返回的过程分为以下四个事件:

o Client Sent,cs事件,指客户端发起调用请求到服务端;

o Server Received,sr事件,指服务端接收到了客户端的调用请求;

o Server Sent,ss事件,指服务端完成了处理,将信息返回给客户端;

o Client Received,cr事件,指客户端接收到了服务端的返回信息。

四类事件示意图

我们将span的四个基本事件补充到调用链图上,得到以下图示:

包含四类调用事件的调用链图

在上图中,对服务器Service0来说,会产生两个事件,一个是发起事件cs,另一个是接收事件cr。对Service1来说,首先要接收Service0请求,即事件sr,当处理完成时,作为服务端对服务器Service0进行响应,即事件ss。其它服务之间的交互事件以此类推。

规范地记录以上日志,通过日志易SPL(Search Processing Language)进行分析统计,进而实现可视化呈现,将帮助金融企业更好地监控业务调用状态及健康度,快速实现故障定位,分析及优化业务性能瓶颈。

日志易调用链分析的实现效果

1、静态拓扑

静态拓扑是从系统或网络结构层面上进行呈现,能体现业务系统的架构、从上游到下游的流转、分流的情况,每个节点上包括曲线、指标统计等信息。在运维以及安全态势方面,指标统计可以发现异常问题。

2、动态拓扑

例如下图是基于日志改造的链路动态自动拓扑图,我们可以看到一笔交易经历的各个接口,通过选择不同的交易业务类型,动态拓扑图会自动的展示1分钟内这类交易所有的流程。

3、链路+业务日志分析

链路分析日志需要和业务日志做联动,业务日志包括系统分析日志以及追溯涉及的日志,调用链日志包括全链路监控的拓扑以及单笔调用链和呈现方式。全链路交易监控由五大组成部分:

(1)全局概览:

通过系统维度、产品维度、异常维度三大维度展示整体运行状况。

o 系统维度呈现的是成功率的同环比,可以钻取到每个系统专题分析页面;

o 产品维度呈现的是黄金指标,比如交易量、平均耗时、成功率、错误等指标;

o 异常维度呈现的是发现问题的概览统计,它按系统维度对错误进行趋势图展示,可以钻取到链路分析页面。

(2)全链路监控:

通过动态拓扑图形式(即2、动态拓扑)对整个交易路径进行全局监控,异常节点快速标识。

o 宏观监控:监控交易的接口级运行状况;

o 指标统计:将接口的调用量、成功率、平均耗时、自身错误、非自身错误、超时错误等指标做统计,进行浮窗展示;

o 异常标注:当出现不同错误时,可以用不同颜色来标记;

o 历史追溯:追溯时间轴历史及标注,比如历史拓扑播放、时间轴异常点标记、已知异常标注等。

(3)系统分析:

对单系统的关键指标进行接口级分析展示。比如可以对系统调用总量、系统调用失败总量、当前耗时最高接口及耗时、接口错误类型统计、接口平均耗时等指标进行分析。

(4)链路分析:

通过关键性信息针对单笔交易进行调用链分析,快速定位到异常主机和接口。可以进行字段过滤筛选,呈现单笔交易跟踪链视图等。

(5)追溯:

全链路原始日志查询。例如,可通过remask字段进行相应关联日志的查询。

全链路分析的价值

1、观察性

Logging、Tracing、Metrics融合,提升服务可观察性;

2、开发测试及链路优化

异常监控数据二次统计分析,优化异常节点;

开发过程中查看关联模块的日志和作为测试提单线索;

3、拓扑模式异常检测

拓扑结构形成基线,异常发现与告警;

影响范围快速确认,启动应急预案;

4、个例分析及宏观监控

点面结合,快速故障定位;

统计为多维数据用于监控告警和原因分析;

欢迎预约日志易商务经理,我们将根据您的需求为您提供解决方案。本地版免费试用30天起。

调用链路_全链路日志分析解决方案介绍相关推荐

  1. dubbo 服务压测_全链路压测资料汇总——业内大厂解决方案

    最近忙于公司的全链路压测平台调研和技术规划文档输出工作,参考了全网能搜到的业内大厂的全链路压测方案,这里做个汇总,以及将个人认为可以落地的方案做一个关键点整理. 技术链接 滴滴全链路压测解决之道 阿里 ...

  2. cat全链路监控_全链路监控(一):方案概述

    为什么需要监控,在哪些层次上监控,监控什么 监控是为复杂的分布式系统服务的,它收集跨不同的应用,不同的服务器的系统行为信息,可通过采样收集所需的性能指标,帮助分析性能问题,并在指标超过正常值时报警. ...

  3. 分布式实时日志分析解决方案ELK部署架构

    分布式实时日志分析解决方案ELK部署架构 参考文章: (1)分布式实时日志分析解决方案ELK部署架构 (2)https://www.cnblogs.com/zhangjianbin/p/7965867 ...

  4. cat全链路监控_全链路监控选型

    实现全链路监控 SkyWalking SkyWalking是apache基金会下面的一个开源APM项目,为微服务架构和云原生架构系统设计.它通过探针自动收集所需的指标,并进行分布式追踪.通过这些调用链 ...

  5. 什么是预热 压测_全链路压测探索实践之路

    背景 去年双十一,为了应对零点的峰值流量冲击,我们在八月下旬启动了全链路压测第一次实践.由于从零开始,因此单独搭建了一套和生产1:1的环境,2个月的时间,光环境成本就高达几百万.经过双十一,压测团队从 ...

  6. 分布式实时日志分析解决方案 ELK 部署架构

    一.前言 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats.Logstash.Elasticsearch.Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决 ...

  7. sql入侵 mysql日志_服务器入侵日志分析(一)——mysql日志位置确定

    安全应急响应工作中,一项重要任务就是要对mysql数据库的日志进行分析.我们通过对mysql日志记录的审计,发现攻击行为,进而追溯攻击源.在工作中遇见的各种服务器上,由于mysql安装方式不同,其日志 ...

  8. iphone panic故障对照表_从iOS日志分析iPhone重启故障诊断方法与定位

    iPhone手机自动重启引起的原因很多,在iOS系统中,当手机出现突然的重启故障时,系统会自动生成一个错误日志文档,并储存在硬盘中,这给技术员做出正确的诊断提供了一个清晰的定位. 打开 设置--> ...

  9. potainer 日志_实时Web日志分析神器

    GoAccess 是什么? GoAccess 是一个开源的实时Web日志分析器和交互式查看器,可在*nix系统上的终端或通过浏览器运行.它为系统管理员提供了实时而有价值的HTTP统计信息. GoAcc ...

最新文章

  1. 《神探tcpdump第一招》-linux命令五分钟系列之三十五
  2. No module named #39tensorflow.contrib#39
  3. Java设计模式(20)——行为模式之命令模式(Command)
  4. 漫说中介者模式--创业公司成长记
  5. 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
  6. Windows10下的AlphaPose配置,人体摔倒姿态识别
  7. Oracle 创建主键自增表
  8. 微课|中学生可以这样学Python(例11.3):tkinter通信录管理系统1
  9. C语言随笔小算法:单向链表
  10. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(二)
  11. html5的file api,HTML5 File API
  12. 什么是模式识别,模式识别概念的基本介绍
  13. 有孚网络与南方物流集团签署项目合作协议,共创数字服务领域新载体
  14. D 语言编写CGI程序
  15. 怎么把虚拟机的计算机弄到桌面,Win10自带的虚拟机功能,教你这样设置,免费让一台电脑变3台!...
  16. 提供家用咖啡电子秤厨房秤方案芯片CS1238
  17. 漏洞挖掘时SQL注入漏洞和XSS漏洞需注意的关键字
  18. 嵌入式系统学习---------2.嵌入式系统设计过程
  19. [AR/VR教程] SteamVR Unity工具包(二):激光和移动
  20. Appid + appSecret + code 到微信方服务器 获取 session_key openid 并授权登录

热门文章

  1. 全面涵盖传统方法和深度学习方法:3D人脸识别的十年发展及未来趋势
  2. 3D Human相关研究总结:人体、姿态估计、人体重建等
  3. 变分推断(Variational Inference)最新进展简述
  4. HDU1525 Euclid's Game 【欧几里得博弈】
  5. autolisp统计相同元素个数_统计学习基础知识
  6. python创建float型的列表_如何在Python中进行列表的创建?
  7. 《JVM系列》深入浅出类加载机制中<init>和<Clinit>的区别【一篇即可搞懂初始化机制】
  8. Mybatis插入数据
  9. PaddleOCR——Docker环境下基于HubServing模式部署Restful API服务(CPU版本)
  10. BugKuCTF WEB 点击一百万次