likes
comments
collection
share

Skywalking持久化、业务代码接入、集群搭建

作者站长头像
站长
· 阅读数 17

1.写在前面

因为我们只是简单的跑起来整个过程,毕竟跑起来,是我们学习的第一步

如果第一步都do不下去的话,那就很影响我们的心态了,好像也没有继续下去的必要了!!!

所以说,第一步很重要。就好像:你手都没牵,就想上2、3擂了嘛?

那我们今天,就来讲讲:Skywalking持久化集群搭建业务代码接入等问题吧!!!

2.skywalking持久化

Skywalking跟踪数据默认是存放在内嵌式数据库 H2中的,重启skywalking,跟踪数据丢失了。

这确实是一个很严重的问题了,以前的数据无了!!!

为了避免这样的情况发生,我们可以把跟踪数据持久化到mysql或者elasticsearch中。

这里我们选择elasticsearch,毕竟elasticsearch的查询性能,很多情况下是远远超过mysql这些关系性数据库的。

那我们进入到skywalking的配置文件,进行查看:

Skywalking持久化、业务代码接入、集群搭建

  • application.yml

Skywalking持久化、业务代码接入、集群搭建

可以看到,这里提供了,很多的持久化存储选择。

我们来看一些elasticsearch的配置。

Skywalking持久化、业务代码接入、集群搭建

这里,我们就可以直接配置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持久化、业务代码接入、集群搭建

Skywalking持久化、业务代码接入、集群搭建

这些,就是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

Skywalking持久化、业务代码接入、集群搭建

可以看到,支持的方式,有很多种。这里,我们选择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.1192.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持久化、业务代码接入、集群搭建的所有内容了!!!

如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!

Skywalking持久化、业务代码接入、集群搭建