前言
skywalking是分布式系统的应用程序性能监视、分布式链路追踪工具,跟听云、博瑞等一系列服务器监控组件服务类似,开源的相关类似组件有zipkin、pinpoint等,由于笔者所在项目组准备升级springcloud,缺少相关链路监控组件,而zipkin属于springcloud1.0相关,因此暂时选择调研skywalking并对其进行搭建。
当前skywalking最新版本为6.4,本博客示例中使用nacos作为注册中心,springcloudgateway作为网关进行服务请求转发。
正文
skywalking架构
如下图所示,整体主要分为三个部分:
- skywalking-agent:在被监控的服务启动时添加的探针,用来收集和推送数据到归集器,将数据通过gRPC方式发送给collector组件;
- skywalking-collector:链路数据归集器,接收agent发送的数据并做处理,数据可以保存在H2、ElasticSearch、mysql等;
- skywalking-web:web的可视化管理后台,对已经持久化的数据做回显,显示收集后的数据;
搭建skywalking
搭建使用的各种服务版本如下:
nacos | elasticsearch | skywalking | springcloudgateway |
---|---|---|---|
1.1.3 | 6.4.2 | 6.4.0 | Greenwich.SR1 |
搭建之前下载各个对应版本的包,并且需要保证对应端口不被占用,8848(nacos)、9200(es)、8080(skywalking-web)、11800、12800。
搭建共分为以下几步:1.nacos配置启动;2.es配置启动;3.skywalking-collector及skywalking-web配置启动;4.skywalking-agent与服务启动。
1. 首先启动nacos,详见 https://nacos.io/zh-cn/docs/quick-start.html ,本地访问 http://localhost:8848/nacos 可以看到管理页面。
2. 其次配置和启动es,首先修改es配置,在下载的es目录 config/elasticsearch.yml,配置相应的节点名称及host地址、端口,如下:
cluster.name: CollectorDBCluster
node.name: CollectorDBCluster
network.host: 127.0.0.1
http.port: 9200
./elasticsearch -d 后台运行,本地访问 http://localhost:9200/ 出现下述数据表明es服务基本正常。
{
name: "CollectorDBCluster",
cluster_name: "CollectorDBCluster",
cluster_uuid: "NuJtMyOnShun26UWoXCQXw",
version: {
number: "6.4.2",
build_flavor: "default",
build_type: "tar",
build_hash: "04711c2",
build_date: "2018-09-26T13:34:09.098244Z",
build_snapshot: false,
lucene_version: "7.4.0",
minimum_wire_compatibility_version: "5.6.0",
minimum_index_compatibility_version: "5.0.0"
},
tagline: "You Know, for Search"
}
3.接着准备启动skywalking,首先修改skywalking配置,config/application.yml 如下:
#注册到nacos配置
cluster:
nacos:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
# Nacos cluster nodes, example: 10.0.0.1:8848,10.0.0.2:8848,10.0.0.3:8848
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
#存储选择es,注意nameSpace配置要一致,注释掉h2;如果选择使用h2,则不需要修改
storage:
elasticsearch:
nameSpace: CollectorDBCluster
clusterNodes: 127.0.0.1:9200
indexShardsNumber: 2
如果需要修改skywalking-web的端口号,需要修改webapp/webapp.yml。
接着启动skywalking,linux在skywalking bin目录下执行./startup.sh,windows则执行startup.bat。此时我们应该能看到nacos控制台(http://localhost:8848/nacos) 的服务列表中有skywalking注册如列表中SkyWalking_OAP_Cluster,且能访问skywalking控制台(http://localhost:8080/) 。
如果未能正常注册、或者skywalking后台无法正常访问,就去skywalking/log/目录下看一下日志是否有异常。
4.将skywalking目录下agent附带到相应的项目服务中启动,如 java -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800 demo.jar 如果是在idea或eclipse中启动项目,则在项目启动的VM OPTIONS中增加参数 -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800
上面的-Dskywalking.agent.service_name是指注册到skywalking的服务名称,而-Dskywalking.collector.backend_service指的是skywalking接收agent发送采集数据的服务及端口。
在启动了两个服务后,可以在后台、拓扑图中看到注册的两个服务及调用链,如下图所示。
结语
以上就是skywalking+nacos+elasticsearch+demo-service的搭建整个过程,我在这其中也遇到不少问题,如版本契合问题、skywalking现有bug问题、粗心配置写错问题等,一开始没怎么注意官方文档,后续对照官方文档改过之后才完成,希望与大家多多交流。
参考文档:
https://www.cnblogs.com/jackion5/p/10604189.html
https://blog.csdn.net/dpnice/article/details/95499394
https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/