前言

springcloud项目整合skywalking,使用ElasticSearch进行存储。
elasticsearch和skywalking-oap和skywalking-ui都使用docker启动。


一、elasticsearch是什么?

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储数据,飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

1.拉取ElasticSearch镜像

进入服务器运行命令拉取docker镜像: docker pull elasticsearch:7.7.1 (我这里服务器jdk版本是11,elasticsearch8.x及以上版本支持jdk版本最低为jdk17)

2.启动ElasticSearch镜像

启动命令:

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m 
-Des.logs.node_index_directory=logs 
-Des.logging.file.max_history=7"
-e "discovery.type=single-node" elasticsearch:7.7.1

其中"discovery.type=single-node" 单例模式启动,这里-Des.logs.node_index_directory=logs指定了日志文件的目录(在Elasticsearch Docker镜像中通常是/usr/share/elasticsearch/logs)注意将日志文件映射到外部,外部文件夹需要授权。
,-Des.logging.file.max_history=7设置了日志文件保留的最大天数。
目的为了防止请求量过多导致es存储量增大,磁盘空间不够。

3.查看ElasticSearch状态

访问 服务器ip+端口,上面的步骤端口映射到9200,所以这里访问 ip:9200 出现如下图所示即为成功。
在这里插入图片描述

二、部署SkyWalking-oap服务+SkyWalking-ui

OAP:observability analysis platform可观测性分析平台,负责接收客户端上报的数据,对数据进行分析,聚合,计算后将数据进行存储,并且还会提供一些查询API进行数据的查询,这个模块其实就是链路追踪系统的Collector收集器
SkyWalking UI: Web可视化平台,用来展示落地的数据。

1.拉取SkyWalking-server镜像

拉取SkyWalking-server镜像:

 docker pull apache/skywalking-oap-server:8.6.0-es7

2.启动SkyWalking-oap镜像

执行启动命令,在启动参数中直接设定了存储器和ES服务器,这样就不需要在容器中再次进行配置:

docker run --name skywalking-oap --restart always -d  -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=填写你的ip:9200 apache/skywalking-oap-server:8.6.0-es7

重要参数说明:-e SW_STORAGE=elasticsearch 指定存储器 -e SW_STORAGE_ES_CLUSTER_NODES=ES服务器的IP:9200 这里要指定ES服务器的IP和端口(上面安装es配置的端口)

3.拉取SkyWalking-ui镜像

拉取SkyWalking-ui镜像,尽量与SKyWalking-server的版本保持一致

docker pull apache/skywalking-ui:8.6.0 

4.启动SkyWalking-ui镜像

docker run -d --name skywalking-ui --restart=always -e TZ=Asia/Shanghai -p 8080:8080 --link skywalking-oap:oap -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:8.6.0

说明: -e SW_OAP_ADDRESS=oap:12800 其中oap需要替换成部署skywalking-oap-server服务器的IP地址,这里链接到skywalking-oap,修改时只需要修改oap的ip不需要修改ui。

5.查看SkyWalking-ui状态

访问http://你的ip:8080 出现如下界面表示成功。
在这里插入图片描述
注意: 需要先成功启动elasticsearch再启动oap服务,最后再启动ui。

三、Agent集成Java项目

Skywalking Agent:链路数据采集tracing(调用链数据)和metric(指标)信息并上报,上报通过HTTP或者gRPC方式发送数据到Skywalking Collector。

1.下载agent

Downloads | Apache SkyWalking 下载
在这里插入图片描述

我这里放在服务器的目录是/var/java/skywalking/skywalking-agent/skywalking-agent.jar

2.应用程序接入agent

例如网关服务启动命令如下:

nohup java 
-javaagent:/var/java/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=gateway -Dskywalking.trace.ignore_path=GET:/actuator,GET:/actuator/**,/actuator/**,/actuator,Lettuce/**,SpringCloudGateway/** 
-Dskywalking.collector.backend_service=你的ip:11800 
-jar 你的微服务jar包 --spring.cloud.nacos.discovery.group=nacos组>/dev/null 2>&1 

其中 -javaagent 参数为agent的jar包存放全路径名,-Dskywalking.agent.service_name参数为该应用服务的服务名,-Dskywalking.collector.backend_service 参数为该应用服务的IP+端口。
Dskywalking.trace.ignore_path=需要过滤的路径(这里可以省略,因为我的项目中部署了监控,有很多请求这里不需要查看链路所以过滤掉方便在ui上查看)
-jar后接自己项目jar包启动命令

注意:Spring Cloud Gateway 是基于 WebFlux 实现,必须搭配上apm-spring-cloud-gateway-2.1.x-plugin 和 apm-spring-webflux-x.x-plugin 两个插件
将agent/optional-plugins下的两个插件 复制到 agent/plugins目录下后按照上面的启动命令启动gateway服务。

在这里插入图片描述
在这里插入图片描述

3.SkyWalking-ui拓扑图显示

应用程序正常接入agent后,服务上有请求后会在拓扑图上显示相应的链路。
在这里插入图片描述

总结

以上是安装skywalking并用es存储的步骤。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐