前言
最近公司服务器及相关组件迁移,因此正好抽出时间整理下链路这块。
现在主流的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的搭建过程,比较流水账一些,其中也踩了不少坑,
如果其中有错误或不当之处,欢迎一起讨论.
第一次写这种文章,排版什么的都很随意,希望以后会越来越好!
狗头护体~