监控平台 SkyWalking9 入门实践
简便快速的完成对分布式系统的监控;
一、业务背景
微服务作为当前系统架构的主流选型,虽然可以应对复杂的业务场景,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,对于一些核心的业务流程,其请求链路会涉及到多个业务服务,少则三五个,多则十几个都很常见:
真实的业务场景远比图解复杂,在这种模式下当请求发生故障时,或者进行优化时,需要分析链路性能,追踪调用链路,排查和解决链路故障;
要完成上述流程,需要对请求的链路有完整监控,并且采集和分析各个环节的数据,这样才能清晰的理解系统的行为信息,比如耗时分析,故障原因发现,从而进行优化和解决;能实现这种能力的组件很多,这里来看看基于 SkyWalking9 的实践方式;
二、组件原理
Skywalking 是 APM 规范的国产开源分布式链路追踪系统,APM(Application-Performance-Management)即应用性能管理,支持对 SpringCloud 微服务集成,并且无代码层面的侵入:
结构体系
业务机制
SpringCloud:分布式系统中的服务,启动时配置代理即可;
Agent:以探针的方式进行请求链路的数据采集,并向管理服务上报;
OAP-Service:接收数据,完成数据的存储和展示;
Storage:数据的存储层,支持 ElasticSearch、Mysql、H2 多种方式;
UI 界面:数据的可视化展示界面;
工作流程,服务通过探针的方式接入数据采集的功能,之后请求链路的相关处理行为会上报到 OAP 服务中,进行数据的聚合管理和分析,并存储在持久层,然后可以通过 UI 界面进行可视化呈现;
三、安装部署
1、版本描述
skywalking 在之前的旧版本中,apm 与 agent 是在一个包中的,在 9.0 的版本中是需要分开下载的;agent 包下载解压之后,也将其放到 apm 包下面维护:
skywalking-apm-9.1.0.tar.gz
skywalking-java-agent-8.10.0.tgz
2、配置存储方式
Skywalking 数据存储的组件有多种选型方式,这里方便本地调试,就选择 MySQL 数据库,在生产环境中通常选择 ElasticSearch 组件;
配置文件:config/application.yml
需要注意的是,要在本地的 MySQL 中新建 swtest 数据库,采用 latin1 字符编码,可以避免索引长度的问题,表的创建是自动的,然后需要在包中添加 MySQL 依赖;
3、启动与停止
启动 oap 服务:sh bin/oapService.sh
启动 UI 界面:sh bin/webappService.sh
服务停止命令:jps 查看,kill 相关编号;
UI 界面服务默认是 8080 端口,如果存在占用问题,可以修改:webapp/webapp.yml
文件,更换端口;启动完成后访问LocalIP:port
即可;
4、服务集成
在本地存在gateway
,facade
,account
,三个服务,案例围绕account
服务中的请求展开,由于涉及网关服务,还需要添加相关插件的依赖;
将optional-plugins
可选插件目录中的两个网关的依赖包,复制到plugins
插件目录下;
在服务启动类中添加agent
配置,如果在生产环境中,通常会统一在脚本中设置,由于在本地环境演示,基于 IDEA 工具进行管理;
这样全部的配置就完成了,依次启动 skywalking 相关服务,与这里配置的三个微服务,下面再来看看功能细节;
四、功能细节
1、服务监控
相关服务启动完成后,访问 skywalking 界面,主页加载的即上述配置的三个微服务,这样说明整个流程是正常的,点击服务名称可以查看服务相关的细节指标;
2、拓补结构图
请求通过gateway
网关服务,经过facade
门面服务,到达account
业务服务,完成一次调用后,查看请求的拓补结构图(即 Topology 一栏);
可以清晰的看到请求的路由链路,以及相关服务访问的数据库地址,对于微服务架构中的复杂接口来说,借助该拓补模型,既可以快速理解业务逻辑,同时在出具文档时可以节省很多画图时间;
3、链路跟踪
上面只是请求的拓补结构图,在实际应用中还是更侧重链路跟踪,查看account
服务请求链路(即 Trace 一栏);
skywalking 组件对于开发来说,最常用的就是该功能,这里采集了请求链路上的各个节点,以及执行的耗时分析,点击相关节点可以查看详细信息,针对异常请求同样可以采集到异常信息的描述;
这样可以极大的提升问题排查的效率,尤其对于那种路由十多个服务的业务逻辑;
4、数据库监控
虽然在整个配置中没有显式的添加对 MySQL 的监控,但是 skywalking 依旧可以实现对服务中的数据库监控,对于这些指标细节不过多描述,可以自行查阅文档;
本篇文章只是站在开发的角度,总结 skywalking 的应用方式,并未涉及过多的细节原理,其它强大的功能设计,对于开发来说同样值得参考。
五、源码参考
版权声明: 本文为 InfoQ 作者【知了一笑】的原创文章。
原文链接:【http://xie.infoq.cn/article/2c9cc4979c17197a4a5d636a1】。文章转载请联系作者。
评论