skywalking是分布式系统的应用程序性能监视、分布式链路追踪工具,跟听云、博瑞等一系列服务器监控组件服务类似,开源的相关类似组件有zipkin、pinpoint等,由于笔者所在项目组准备升级springcloud,缺少相关链路监控组件,而zipkin属于springcloud1.0相关,因此暂时选择调研skywalking并对其进行搭建。 当前skywalking最新版本为6.4,本博客示例中使用nacos作为注册中心,springcloudgateway作为网关进行服务请求转发。
如下图所示,整体主要分为三个部分:
搭建使用的各种服务版本如下:
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,详见 nacos.io/zh-cn/docs/… ,本地访问 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发送采集数据的服务及端口。 在启动了两个服务后,可以在后台、拓扑图中看到注册的两个服务及调用链,如下图所示。