小册上新|SkyWalking:应用监控和链路跟踪

·  阅读 567

我们知道,随着互联网行业的快速发展,业务与规模与往日不可同日而语。而且当下云容器、微服务等技术也应用广泛,同样给开发带来不小的运维压力,导致我们经常需要面临这些问题:

  • 服务链路长:业务规模和组件的发展导致请求的链路变得很长,往往可以到达几十个甚至上百个端点。在排查问题时,需要从最下游开始往上排查,极其影响开发效率。有时候也被调侃成了所谓的一个 BUG 改一天😂
  • 应用监控难:无法在第一时间得知服务器负载信息、内存占用情况,经常需要先通过堡垒机,然后登录服务器进行查看。另外应用相关信息例如 JVM 堆占用情况、GC 次数、接口耗时、程序吞吐量等无法统计。
  • 预警速度慢、粒度大:当生产环境出现服务超时、宕机等问题时,不能在第一时间察觉,经常需要人工反馈,但那时候已为时已晚。并且很多工具往往只能提供服务器或者应用层面粒度的预警,对于接口 RT、数据库响应的预警上就开始力不从心了。
  • 日志查询麻烦:在通过日志排查问题时,首先需要登录服务器,然后通过cat 等命令查询。由于日常场景中,对于日志文件的打印一般是一天一个,导致查询命中数较多,查询速度较慢。并且对于大文件查询,还可能会出现服务器卡死的情况。

对于一些企业,极度需要一款 APM 软件对应用进行监控和跟踪,帮助我们解决上面这些系统问题。在这种背景下,SkyWalking 作为应用监控和链路跟踪的利器,便脱颖而出。

那么,SkyWalking 是如何解决这些问题的呢?

SkyWalking 基于可插拔式架构,提供了丰富的原生 Trace 插件,并且这些插件都实现了 OpenTracing 方案,通过全局 ID 便可找到整条调用链,每一个端点都记录下调用时长,能在短时间内快速排查异常服务。

同时,SkyWalking 通过各种插件,利用 JVM 底层 Native 接口,进行系统调用,能有效获取系统监控信息。并且通过 Agent 切面技术,能对各种接口耗时、慢查询进行统计,最后通过 UI 界面进行展示搜索。

对于预警速度慢、粒度大的问题,SkyWalking 通过服务层插件模块化,定义了报警模块,用户可对报警模块进行配置,支持各项指标定时轮询,并且通过 WebHook 地址发送到各种软件。同时支持自定义配置指标,不仅是服务层面,还能在接口层面和数据库层面对其进行预警。

另外,针对日志查询麻烦这一点,SkyWalking 结合 LogBack 等常用的日志组件进行日志上传,并通过 ElasticSeach 存储数据,最终利用 Web 界面快速搜索,毫秒级响应。

SkyWalking 支持多语言探针,能帮助我们快速定位问题、排查问题,同时其作为 Apache 顶级项目,社区资源活跃,在各个互联网大厂上都有广泛的应用。因此选择 SkyWalking,会是你当下最好的选择。

如何学好 SkyWalking?

SkyWalking 有诸多好处,想要学好用好它,也不是很容易。市面上关于 SkyWalking 的文章大多浮于表面,很多只会教你如何安装入门,成体系的文章少之又少。有时候版本严重落后,安装成功后发现功能都对不上,最终只好不了了之。

即使通过各种资料学习完了 SkyWalking 的内容,但由于对于其底层技术和架构缺乏整体性思考,出现问题往往不知道从哪方面入手去解决。例如:

  • 项目启动时总是报错怎么办?是项目的问题还是 SkyWalking 的问题?
  • 链路跟踪的界面上总是出现莫名其妙的链路,我该如何解决?
  • 对于高版本的mysql-connector包,在整条调用链上压根就不存在?我是该对mysql-connector包进行降级,还是该对 SkyWalking 插件包升级?
  • ……

另外,对于源码的学习,Debug 调试往往比看代码更行之有效。但在实际过程中,由于有些朋友对这方面不太熟,安装源码环境对于其也是个不小的挑战:

  • 我应该是下载 GitHub 上的包还是源码包?
  • 如果是 GitHub 上的包,如何通过git submodule 将项目完善?
  • 如何通过 ProtoBuf 编译 proto 文件,让 SkyWalking 项目运行起来,而不是报异常?
  • 和应用程序属于不同的项目,如何才能进行 Debug?

作为一名 SkyWalking 的使用者,我通过 SkyWalking 做了链路跟踪系统监控异常告警的落地,解决了开发过程中问题排查定位慢的痛点。有着丰富的开发经验和分享落地经验,我会将此过程中踩的坑、学习到的技术、对 SkyWalking 的理解,通过小册完整地展现在大家面前。

从基础技术开始,通过大量的易读性图片,由浅入深地介绍 SkyWalking,同时提供大量的实战用于加深理解。按照 SkyWalking 的整体架构体系,将小册总结成 6 大块:

  • 基础技能篇,从整体出发讲解 SkyWalking 的基本架构,然后介绍 SkyWalking 最重要的几项基本技能,帮助大家打好基础。最后通过应用和源码环境的快速安装,为接下来的源码学习进行铺垫。
  • 探针篇,会了解到 SkyWalking 的核心:Agent。通过剖析 Agent 启动流程了解什么是插拔式架构;通过各种插件的原理解读,了解链路跟踪的实现;最后通过项目实战加深理解。
  • 数据传输层篇,会学习 SkyWalking 的数据传输框架:GRPC。了解 SkyWalking 为什么会选择GRPC,ProtoBuf 是如何被运用在项目中的,并且 GRPC 如何与探针层和服务层结合在一起的。
  • 服务层篇,会剖析服务层启动流程,了解服务层的整体骨架;分析各类插件了解应用监控是如何做到的;了解如何结合 LogBack 实现日志上传,解决日志查询的问题;最后学习系统预警实现和原理,为我们的系统保驾护航。
  • 存储层篇,会了解到 SkyWalking 的存储体系,并通过 ElasticSearch 作为切入点进行剖析。
  • 异常解决篇,我们会通过实战,针对高并发、大流量场景下上报消息会存在性能瓶颈的问题,利用消息队列进行流量削峰,解决可能出现的上传信息丢失、系统宕机等问题。另外,我们还会通过自定义插件实现线程异常栈信息获取。

小册内容从原理到实战,帮助你一次通关 SkyWalking!

你会学到什么?

  1. 学会如何通过 SkyWalking 解决应用监控和链路跟踪的问题。
  2. 了解 SkyWalking 架构和基本技术。
  3. 通过源码解读和实战了解 SkyWalking 应用监控和链路跟踪的原理。
  4. 了解并学会如何通过自定义插件解决实际业务需求。

上新特惠,限时6折

8月17日~8月24日小册限时 6 折,仅需 ¥17.94 💰

点击下方图片,一起加入学习吧!👇

宣传海报.jpeg

分类:
后端
收藏成功!
已添加到「」, 点击更改