SkyWalking分布式链路指北

1,933 阅读3分钟

前言

最近公司服务器及相关组件迁移,因此正好抽出时间整理下链路这块。
现在主流的APM工具:Zipkin,CAT,SkyWalking。CAT由于对代码有侵入性,首先排除。
Zipkin由于全局监控、报警缺失以及不是很友好的UI,也排除了。最后经过"深思熟虑",
我们选择了SkyWalking。鉴于之前我们搭建的是单机的SkyWalking,这次我们以集群搭建为列。
Talk is cheap,Show me the code!

Nacos集群搭建

Nacos Github地址

因为Zookeeper是基于CP的,
又因为我们后面的配置中心准备迁移到Nacos上,所以我决定选择用Nacos管理SkyWalking集群。
通过上面的地址下载编译好的tar包或者通过源码自己编译均可,这里以1.2.1版本为例。
以3台服务器为例,分别解压tar包,解压后打开conf

打开application.properties,配置数据库

打开cluster.conf文件,配置集群ip

创建nacos库,执行sql文件,然后bin目录下执行startup.sh脚本
启动日志在logs/start.out文件下,
nacos运行日志在nacos.log下,集群同步日志在naming-raft.log下.
启动无异常后,访问nacos管理页面,集群节点ip+8848端口(默认)

登陆后可在namespace(默认public)页面看到如下集群分布

SkyWalking集群服务端搭建

SkyWalking Github地址

通过上面的地址下载编译好的tar包或者通过源码自己编译均可,这里以7.0版本为例。
以3台服务器为例,分别解压tar包.首先我们打开config/application.yml

  链路存储这块我们选用了es,具体版本为7.6,集群数量3(待观察)

接下来配置ui访问,打开webapp/webapp.yml

 集群成功启动后

SkyWalkig探针配置

打开agent/config/agent.config,配置探针

 optional-plugins为可选插件,plugins为使用插件
 (这里可以考虑把apm-trace-ignore-plugin-7.0.0.jar加载进来),
 这个插件是可以忽略部分特定请求,比如eureka心跳等(支持正则匹配)
 这里将整个agent文件夹打成tar包,编写一个dockerfile文件

 使用Dockerfile文件生成镜像
 #docker  build  -t  byh-registry-pro:5000/byh-base:s3.0.0  .   
 <-----有个点    
 这里有个点,很重要,它的意思是代表使用当前目录下的Dockerfile文件生成镜像>
 完成后docker images可以看到我们的镜像

通过#docker push byh-registry-pro:5000/byh-base:s3.0.0上传镜像到共有镜像仓库

服务端代码

 我们的服务是基于jenkins的脚本进行构建,所以我们把sk agent里的配置都放在了jenkins里.
 然后我们对服务中的dockerfile文件进行了修改

 startup.sh配置如下

首页

拓扑图

链路

告警

 SkyWalking支持通过WebHook进行告警通知,这些预定义的告警规则,打开config/alarm-settings.yml文件即可看到。其具体内容如下:

 1.过去3分钟内服务平均响应时间超过1秒
 2.服务成功率在过去2分钟内低于80%
 3.服务90%响应时间在过去3分钟内低于1000毫秒
 4.服务实例在过去2分钟内的平均响应时间超过1秒
 5.端点平均响应时间过去2分钟超过1秒

 具体的实现我想着下一篇再说吧

总结

 本文主要讲了skywalking的搭建过程,比较流水账一些,其中也踩了不少坑,
 如果其中有错误或不当之处,欢迎一起讨论.
 第一次写这种文章,排版什么的都很随意,希望以后会越来越好!
                              狗头护体~