随着目前系统架构的复杂度越来越高(中台、微服务),并且线上应用的多级监控覆盖到了通讯、应用处理过程监控并且实现端到端的应用监测,线上性能故障的快速定位修复;而传统的监控分析方式已经无法满足我们的需求,因此许多强大的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的使用方式底层使用期开源框架源码,针对自身系统特点做定制型开发。

skywalking 安装_SkyWalking全链路追踪利器相关推荐

  1. mysql链路跟踪工具_SkyWalking全链路追踪利器

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

  2. skywalking与pinpoint全链路追踪方案对比

    由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比; 选取skyw ...

  3. go 链路追踪_Golang在七牛全链路追踪中的实践

    1.Go在七⽜牛全链路路追踪中的实践 刘凯 七⽜牛云⼤大数据团队(Pandora)架构师 2.⾃自我介绍 INTRODUCTION • 刘凯,七⽜牛,⼤大数据Pandora团队成员 • 2015年年, ...

  4. Skywalking全链路追踪使用说明

    1.背景与需求: 随着业务规模的不断增大,系统的复杂度也越来越高,我们的软件架构也进入了分布式的阶段,服务按照不同的维度进行拆分,那么一次请求可能横跨多个服务模块.项目,依赖的中间件也越来越多,其中任 ...

  5. 前后端、多语言、跨云部署,全链路追踪到底有多难?

    作者|涯海 全链路追踪的价值 链路追踪的价值在于"关联",终端用户.后端应用.云端组件(数据库.消息等)共同构成了链路追踪的轨迹拓扑大图.这张拓扑覆盖的范围越广,链路追踪能够发挥的 ...

  6. APM —全链路追踪

    全链路追踪目的  微服务背景下 1.故障快速定位 跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息. 2.各个调用环节的性能分析 分析调用链的各个环节耗时,分析系 ...

  7. 得物云原生全链路追踪Trace2.0-采集篇

    一.0xcc开篇 2020年3月,得物技术团队在三个月的时间内完成了整个交易体系的重构,交付了五彩石项目,业务系统也进入了微服务时代.系统服务拆分之后,虽然每个服务都会有不同的团队各司其职,但服务之间 ...

  8. 全链路追踪竟然如此简单? bytebuddy搭建全链路追踪的demo 附代码

    大家好,我是烤鸭:     最近一直在研究全链路追踪,比如cat.skywalking.zipkin等.     发现 skywalking 是基于bytebuddy 实现的,想自己试着写一下demo ...

  9. 企业如何从 0 到 1 构建整套全链路追踪体系

    简介:本文将分享 ARMS 在全链路追踪领域的最佳实践,分享主要分为四部分.首先,是对分布式链路追踪的整体简介.其次,是对 ARMS 在分布式链路追踪领域的核心能力进行介绍.然后,介绍如何从 0 到 ...

最新文章

  1. 9个技巧让你的PyTorch模型训练变得飞快!
  2. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)
  3. 想做跨境的卖家新起点在哪里?亚马逊“封店潮”来袭,商家该何去何从
  4. python 共轭转置_python矩阵运算,转置,逆运算,共轭矩阵实例
  5. 【HDU - 1045】Fire Net (dfs 或二分图)
  6. 使用EmBitz开发STM32项目开发环境配置
  7. 一个小例子对多态简单的理解
  8. 雷军凌晨2点下班、刘强东睡4小时,这碗鸡汤程序员你必须干了
  9. hibernateTemplate.find或hibernateTemplate.save()执行操作没有反应,但是有sql语句
  10. 2016北理复试机试题
  11. java final关键字
  12. 20190628 《此生,未完成》-- 于娟
  13. java影视app对接cms,原生影视App双端对接飞飞CMS
  14. 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  15. 自动获取win10锁屏壁纸脚本
  16. 吉林大学计算机科学与技术专业(研)解读
  17. 67 step to success
  18. 天猫精灵打开电脑 语音控制电脑
  19. 基于springboot的课堂考勤签到打卡小程序
  20. matlab灰色图像直方图和彩色图像RGB三个通道直方图

热门文章

  1. 路由协议和路由算法的不同
  2. python 打包exe_python如何封装为exe
  3. 机器学习之最大似然估计(MLE)和最大后验概率估计(MAP)
  4. webpack打包测试_webpack入门笔记(一)
  5. Python把函数作为参数传入的高阶编程方法
  6. PHP json_encode后的数据有的大括号于中括号
  7. Python 3 学习——函数扩展and迭代器生成器装饰器
  8. caffe使用ctrl-c不能保存模型
  9. 第二百四十八节,Bootstrap轮播插件
  10. 1006实验一实验报告