Skywalking持久化、业务代码接入、集群搭建
1.写在前面
因为我们只是简单的跑起来整个过程,毕竟跑起来,是我们学习的第一步
。
如果第一步
都do不下去的话,那就很影响我们的心态了,好像也没有继续下去的必要了!!!
所以说,第一步
很重要。就好像:你手都没牵,就想上2、3擂了嘛?
那我们今天,就来讲讲:Skywalking持久化
、集群搭建
、业务代码接入
等问题吧!!!
2.skywalking持久化
Skywalking跟踪数据默认是存放在内嵌式数据库
H2
中的,重启skywalking,跟踪数据
就丢失
了。
这确实是一个很严重的问题了,以前的数据无了!!!
为了避免这样的情况发生,我们可以把跟踪数据
持久化到mysql
或者elasticsearch
中。
这里我们选择elasticsearch
,毕竟elasticsearch
的查询性能,很多情况下是远远超过mysql
这些关系性数据库的。
那我们进入到skywalking
的配置文件,进行查看:
- application.yml
可以看到,这里提供了,很多的持久化存储选择。
我们来看一些elasticsearch
的配置。
这里,我们就可以直接配置es的,例如下面:
storage:
selector: ${SW_STORAGE:elasticsearch}
...
elasticsearch:
...
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.4.xxxx:9200}
...
user: ${SW_ES_USER:"xxxx"}
password: ${SW_ES_PASSWORD:"xxxx"}
指定我们的es服务器的地址和账号密码。
- 重启skywalking即可,即会帮我们在es中创建对应的索引
这些,就是skywalking
的追踪数据,已经持久化到es
中了。
这样,就算我们下次重启skywalking
,数据,也不会丢失
了!!!
3.skywalking业务代码接入
虽说,skywalking
是非侵入式编程。
但是呢,我们的业务功能中,也可以通过调用skywalking
的api,也可以帮我们记录我们的日志。
这样,也可以做到只对某些方法
,进行日志追踪!!!
- 依赖
<!--skywalking工具类(分布式链路跟踪依赖)-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.1.0</version>
</dependency>
- 代码编写:
//skywalking链接跟踪
@GetMapping(value = "/test")
public int test() {
log.info("/test --> deleteUserById --> ......");
TraceContext.putCorrelation("myKey", "123456");
Optional<String> op = TraceContext.getCorrelation("myKey");
log.info("myValue = {} ", op.get());
String traceId = TraceContext.traceId();
log.info("traceId = {} ", traceId);
//对某个方法进行链路跟踪
HttpSuport.getInstance().suport();
return testFeignClient.deleteUserById(1L);
}
这样,就可以实现,只对某些接口,进行日志的记录
- skywalking整合日志打印的依赖
<!--skywalking集成日志框架-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.1.0</version>
</dependency>
加入logback-spring.xml文件
4.skywalking集群搭建
skywalking
支持,集群环境的搭建。
我们可以看一下application.yml
配置文件:
- application.yml
可以看到,支持的方式,有很多种。这里,我们选择
nacos
-
nacos的启动,可以参考:这里
-
cluster改为
nacos
集群
修改配置/config/application.yml文件
cluster:
selector: ${SW_CLUSTER:nacos}
...
nacos:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
然后两台机器部署:
192.168.4.1
、192.168.4.2
两台,集群启动skywalking
,就可以在nacos
的服务列表,找到两个实例的skywalking
了。
- 开发:idea中的
edit configurations
中 的vm options
添加
-javaagent:绝对路径\apache-skywalking-java-agent-8.8.0\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=微服务名称
-Dskywalking.collector.backend_service=192.168.4.1:11800,192.168.4.2:11800
好了,以上就是Skywalking持久化、业务代码接入、集群搭建
的所有内容了!!!
如果觉得有收获的,帮忙点赞、评论、收藏
一下呗!!!
转载自:https://juejin.cn/post/7105168685727219743