随着目前系统架构的复杂度越来越高(中台、微服务),并且线上应用的多级监控覆盖到了通讯、应用处理过程监控并且实现端到端的应用监测,线上性能故障的快速定位修复;而传统的监控分析方式已经无法满足我们的需求,因此许多强大的APM工具应运而生(SkyWalking、Pinpoint、Cat、Zipkin)。性能测试也面临同样问题,目前越来越多的端到端的压测,单体压测已经比较成熟不管从实施到监控分析,全链路的压测分析比较困难,特别是链路中瓶颈点的定位。我们今天就聊一下全链路的追踪工具之一SkyWalking,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。

1、全链路追踪的三种场景

1)、Metrics 指标性统计

基于聚合信息,实现监控和告警。比如说我们会去做一个服务的 TBS 的正确率、成功率、流量等,这是我们常见的针对单个指标或者某一个数据库的,这就是 Metrics 单指标分析。

2)、Tracing 分布式追踪

采集并保留服务调用相关信息,帮助我们更好的理解系统的行为、辅助调试和排查性能问题。这里提到的是一次请求的范围,比如说一次订购的过程,从浏览商品到最后下订单、支付、物流、最后交到我们的手上。这是一个流程化的东西,我们需要轨迹,需要去追踪。

3)、 Logging 日志记录

记录标准格式日志信息,输出到文件,基于日志文件进行聚合和分析。优点:信息全面;缺点:资源开销大,难以展示完整链路

2、全链路追踪需要实现的功能

1)故障定位——可以看到请求的完整路径,相比离散的日志,更方便定位问题(由于真实线上环境会设置采样率,可以利用debug开关实现对特定请求的全采样);

2)依赖梳理——基于调用关系生成服务依赖图;

3)性能分析和优化——可以方便的记录统计系统链路上不同处理单元的耗时占用和占比;

4)容量规划与评估;配合Logging和Metric强化监控和报警。

3、全链路追踪工具对比:

4、SkyWalking介绍

1)架构图:

SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。

整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

2)采集信息接收集群与聚合分析集群可独立部署,部署架构图:

3)SkyWalking工作原理:

skywalaking总体架构分为三部分:

a、   skywalking-collector:链路数据归集器,数据可以落地ElasticSearch,单机也可以落地H2,不推荐,H2仅作为临时演示用

b、   skywalking-web:web可视化平台,用来展示落地的数据

c、   skywalking-agent:探针,用来收集和发送数据到归集器

skywalking的核心在于agent部分,下图展示了一次调用的详细的运行过程:

4)、SkyWalking全链路追踪核心过程:

核心追踪过程解释请参考:http://www.upyun.com/opentalk/334.html

5)SkyWalking特点:

a、性能好,针对单实例5000tps的应用,在全量采集的情况下,只增加 10% 的CPU开销。

通过官网的压测数据可以看出是否挂载Agent,应用的TPS和平均响应时间没有差别,CPU消耗小幅提升。如下图:

简单访问结果:

复杂访问结果:

b、支持多语言探针

支持自动及手动探针;自动探针:Java支持的中间件、框架与类库列表; 手动探针:OpenTrackingApi、@Trace注解、trackId集成到日志中。

c、采用探针技术,在使用过程中,完全是0代码,无侵入,分布式自动采集与监控系统运行;

6)、SkyWalking展示界面:

首页:

调用情况:

追踪情况:

日志追踪:

7)目前已经使用SkyWalking企业:

8)SkyWalking资料信息:

官方网站地址:

http://skywalking.apache.org/

http://incubator.apache.org/projects/skywalking.html

github项目地址:https://github.com/OpenSkywalking/skywalking-netcore

下载地址:http://skywalking.apache.org/downloads/

可以从上述地址下载,也可以直接到github上下载,选择最新版本,运行环境:jdk7,jdk8,tomcat7,tomcat8(tomcat针对web项目),建议安装使用过程,多看github上的doc文档本次文章不在介绍具体的安装部署过程;

备注:

1、目前SkyWalking全链路追踪工具对于http类系统可以无缝支持,针对于TCP或者自研框架类系统需要二次开发支持。

2、建议针对SkyWalking的使用方式底层使用期开源框架源码,针对自身系统特点做定制型开发。

mysql链路跟踪工具_SkyWalking全链路追踪利器相关推荐

  1. mysql链路跟踪工具_EasySwoole利用链路追踪组件制作甩锅工具

    前言 最近前端老是反馈API调用异常,说请求成功但是没有数据返回! 我写的代码怎么可能有bug,肯定是前端调用的方式不对! 经过一番套鼓,直接把请求参数和响应内容打印到控制台,果然不出我所料,请求缺少 ...

  2. skywalking 安装_SkyWalking全链路追踪利器

    随着目前系统架构的复杂度越来越高(中台.微服务),并且线上应用的多级监控覆盖到了通讯.应用处理过程监控并且实现端到端的应用监测,线上性能故障的快速定位修复:而传统的监控分析方式已经无法满足我们的需求, ...

  3. cat全链路监控_谛听全链路监控平台实践与思考

    一.项目背景 近几年,信也科技的研发技术伴随着业务的快速增长逐步演化为微服务化的分布式体系架构,但随之带来的系统间的上下游依赖关系的复杂度也呈指数级上升,已有的烟囱式的监控产品(CAT.ELK等)存在 ...

  4. 你“被”全链路了么?全链路压测实践之理论

    要说当下研发领域最热门的几个词,全链路压测 肯定跑不了.最近的几次大会上,也有不少关于全链路的议题.之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测.今天我们就来聊聊全链路 ...

  5. 佛山机场安装RFID行李跟踪系统 可全流程追踪行李

    旅客在机场等待行李是个令人焦虑的时刻.行李到哪里了?行李什么还没出现?在机场托运行李时,是否也会担心自己的行李能否同机到达呢? 现在,如果您在佛山机场搭乘航班,那么这些担心就不必了!放心,您的行李在佛 ...

  6. TOP100summit分享实录 | 如何构建一套全链路的故障追踪和故障自愈系统?

    本文内容节选自由msup主办的第七届TOP100summit,三七互娱运维开发负责人童传江分享的<三七互娱故障追踪和故障自愈系统>实录. 分享者童传江在维行业7年工作经验,做过网络管理,做 ...

  7. Node.js 应用全链路追踪技术——全链路信息存储

    作者:vivo 互联网前端团队- Yang Kun 本文是上篇文章<Node.js 应用全链路追踪技术--全链路信息获取>的后续.阅读完,再来看本文,效果会更佳哦. 本文主要介绍在Node ...

  8. TOP100summit分享实录 | 如何构建一套全链路的故障追踪和故障自愈系统? 1

    本文内容节选自由msup主办的第七届TOP100summit,三七互娱运维开发负责人童传江分享的<三七互娱故障追踪和故障自愈系统>实录. 分享者童传江在维行业7年工作经验,做过网络管理,做 ...

  9. SpringCloud之Sleuth全链路日志跟踪

    文章目录 1 Sleuth链路跟踪 1.1 分布式系统面临的问题 1.2 Sleuth是什么 1.3 Zipkin是什么 1.4 链路监控相关术语 1.5 实战练习 1.5.1 pom.xml 1.5 ...

最新文章

  1. SpringBoot静态获取 bean的三种方式,你学会了吗?
  2. python正则表达式面试_【剑指offer】面试题19. 正则表达式匹配
  3. 股市大涨是不是楼市就要跌了?
  4. Docker 从Dockerfile 构建镜像 :build 命令的用法
  5. python淘宝抢购_Python 实现毫秒级淘宝抢购脚本的示例代码
  6. EF6 MVC5译文
  7. 负负为何得正的推理过程
  8. 微服务调用组件Ribbon底层调用流程分析
  9. git几个救命的命令
  10. git commit提交rebase合并以及patch补丁的使用
  11. 我国计算机网络事业发展,我国计算机网络事业发展很快。据中国互联网络中心的一项统计显示【逻辑判断】...
  12. 数据与广告系列三:合约广告与与衍生的第三方广告数据监控
  13. 丧心病狂的前端冷知识
  14. aardio - f()函数通过变量名将变量值整合到一串文本中
  15. iPhone iOS升级完美指南
  16. bootstrap3 snippets使用方法
  17. Ubuntu20.04中fastdfs,nginx的安装和配置(apt-get安装nginx添加fastdfs-nginx-module模块)
  18. sparksql内写linux脚本,shell脚本调用spark-sql
  19. 机器学习 第二节 第二课
  20. 直角杨辉三角形(C)

热门文章

  1. linux 使用 cp 命令强制覆盖功能
  2. jsoncpp在linux和windows下的编译及使用详解
  3. 请求的链式处理——职责链模式
  4. 左神算法:可见的山峰对数量(有重复值的情况)(Java版)
  5. easyui树形菜单生成算法,及在关系型数据库中的存储方式(非递归,高效算法)
  6. dart系列之:在dart中使用生成器
  7. java基础-注解Annotation原理和用法
  8. ES集群添加IK分词器
  9. CNN和RNN中如何引入BatchNorm
  10. poj 2492 A Bug's Life