Springboot: 2.1.7.RELEASEhtml
SpringCloud: Greenwich.SR2java
[TOC]node
Skywalking与2016年11月2日由国人吴晟在Github上传v1.0版本,用于提供分布式链路追踪功能,从5.x开始,成为一个功能较为完善的APM(Application Performance Management)系统,2019年4月17日从Apache孵化器毕业,正式成为Apache顶级项目。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官方对本身介绍是专为微服务,云原生和基于容器(Docker,Kubernetes,Mesos)架构而设计。git
先看一下官方提供的架构图,如图:github
Skywalking整体由四个部分agent
、collector
、webapp-ui
、storage
组成。图10-11从上到下是应用层接入,可使用无入侵性的agent
探针接入,经过HTTP或者gRPC讲数据发送至Skywalking分析平台collector
,collector
对接受到的数据进行聚合分析,最后存储至storage
中,这里支持多种存储方式,比较经常使用的有H2和ElasticSearch,最后能够由webapp-ui
对全部的数据进行展现。web
在介绍实战以前,咱们先简单介绍一下Skywalking部署构建方案。spring
这里存储方式笔者选择使用ElasticSearch,具体版本是6.5.0,ElasticSearch的构建方式选择使用Docker,直接使用Linux搭建有点复杂,不适合初学者,使用Docker构建简单方便。docker
笔者构建的一些前置条件:数据库
java:1.8 CentOS:7.6apache
若是当前CentOS上没有Docker环境,可使用下面的语句快速构建:
yum install docker
当构建成功后,可使用下面的语句查看当前Docker的版本:
docker -v
笔者这里的输出是:
Docker version 1.13.1, build 7f2769b/1.13.1
安装好Docker之后,最好配置一下国内的镜像站,不然在网络很差的状况下可能出现Docker下载失败等状况,可使用下面的语句来修改镜像地址:
vi /etc/docker/daemon.json
笔者这里使用的是阿里云的镜像加速,以下:
{ "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] }
各位读者能够本身去阿里云上开通本身的镜像加速,具体很少作介绍。
使用Docker构建ElasticSearch6.5.0,首先,须要下载ElasticSearch6.5.0的镜像,输入如下命令:
docker pull elasticsearch:6.5.0
等待程序下载完成,完成后就能够启动镜像了,命令以下:
docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0
ElasticSearch的默认启动内存是1g,若是当前服务器的内存不足1g,可使用参数-e ES_JAVA_OPTS="-Xms256m -Xmx256m"
限制ElasticSearch的启动内存大小,完整的语句以下:
docker run -d --restart=always -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0
启动成功之后可使用以下语句看一下是否启动成功:
docker ps
结果如图:
ElasticSearch6.5.0单节点版已经构建完成,为了方便后续操做,须要修改一个ElasticSearch的命名,输入命令docker exec -it es /bin/bash
进入容器文件目录,输入vi config/elasticsearch.yml
进入ElasticSearch配置文件,修改cluster.name
的值,笔者这里修改成CollectorDBCluster
,修改完成后,保存当前修改,输入exit
退出容器文件目录,输入docker restart es
重启当前容器,在浏览器输入http://192.168.44.128:9200/,看到以下信息能够证实ElasticSearch6.5.0单节点版已经在正常的运行了。
{ "name" : "V-N2_ZQ", "cluster_name" : "CollectorDBCluster", "cluster_uuid" : "r9bFZ90WRyqSpMz80u61Yg", "version" : { "number" : "6.5.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "816e6f6", "build_date" : "2018-11-09T18:58:36.352602Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Skywalking构建,进入Skywalking官网,进入下载页面(http://skywalking.apache.org/downloads/ ),如图:
由于咱们是要在CentOS上运行,因此这里选择Linux二进制版,就是已经编译好的版本,无需咱们本身编译,下载至咱们的CentOS后,解压能够看到目录结构,如图:
startup.sh
。修改storage.elasticsearch.nameSpace
为咱们前面构建ElasticSearch设置的cluster.name
,笔者这里的值为CollectorDBCluster
,同时修改storage.elasticsearch.clusterNodes
为咱们当前构建的ElasticSearch的地址。
Skywalking中默认使用的端口有8080、11800、12800,请保证这些端口未被占用,如需修改,能够修改config
目录中的application.yml
和webapp
目录中的webapp.yml
。
接下来启动collector和webapp-ui,进入bin目录中,执行命令./startup.sh
,如:
打开浏览器访问http://192.168.44.128:8080/,能够看到webapp-ui的仪表盘,如图:
Skywalking部署到这里就结束了,下面咱们开始介绍Spring Cloud如何与Skywalking整合使用。
先简单介绍一下案例内容,咱们将建立4个工程,分别为Zuul-Service、Eureka-Service、Consumer-Service和Provider-Service,请求经过Zuul-Service访问至Consumer-Service再访问至Provider-Service完成一次链路调用。
总体架构图如图:
具体实现代码列出,各位读者能够参考GitHub仓库(https://github.com/meteor1993/SpringCloudLearning/tree/master/chapter15),下面咱们介绍Spring Cloud是如何与Skywalking整合的。
这里咱们须要使用到Skywalking的探针agent,咱们在工程chapter15的跟目录中新建一个文件夹,命名为skywalking
,讲刚才解压的Skywalking中的agent整个文件夹copy到skywalking
,这里咱们启动时只须要配置javaagen命令加载agent探针便可,在idea中使用须要修改启动配置,点击右上角的Edit Configurations...
,在打开的窗口中选择Environment->VM Options
,配置以下脚本:
-javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=zuul-service -Dskywalking.collector.backend_service=192.168.44.128:11800
如图:
还可使用java -jar的方式来加载agent探针,咱们将整个maven项目打包,运行mvn install的命令,使用java -jar的方式来启动,启动命令中增长启动参数,以下:
-javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=consumer-service -Dskywalking.collector.backend_service=192.168.44.128:11800 -jar zuul-0.0.1-SNAPSHOT.jar
顺次启动四个工程后,使用浏览器访问:http://localhost:8080/client/hello?name=spring,多刷新几回后,咱们再使用浏览器访问http://192.168.44.128:8080/,如:
点击上边栏的拓扑图,能够看到当前咱们工程的一个依赖拓扑关系,如:
点击上边栏的追踪,能够看到左边是当前全部的访问请求,随便点击一个,能够在右边看到一个详细的链路追踪过程,如:
点击链路,能够看到一些标记信息,包含端点、跨度类型、成功仍是失败,以及一些Exception信息,如图:
点击仪表盘页面的Service,能够看到一些服务相关的信息,如平均响应时间、平均吞吐量、平均时延统计,如图:
点击仪表盘页面的Endpoint,能够看到一些端点相关的信息,如图:
点击仪表盘页面的Instance,能够看到一些JVM相关的信息,如图:
至此,Spring Cloud与Skywalking的介绍就结束了,感兴趣的朋友能够前往Github的官方网站进行查询。
这里总结一下整个案例的启动顺序:
以上启动顺序供各位读者参考,请各位读者最好按照以上顺序启动,由于不一样的组件以前实际上是有相互依赖关系的,若是随意更改启动顺序可能会形成某些未知问题。
原文出处:https://www.cnblogs.com/babycomeon/p/11416108.html