Skywalking oap 源码解读之连路信息的解析以及写入elasticsearch——准备篇

本文已参与腾源会发起的「开源摘星计划」

网上看到许多解析skywalking的源码读解,本人很受用。但都是集中在对java agent插件的原理的讲解。而我工作中需要模拟skywalking后台进行链路数据处理。这方面就是空白,今天我就来尝试读解skywalking后台源码,也就是skywalking oap,并对其进行拆解利用。形成自己的链路数据采集/存储/展示能力。通过本文将展示skywalking8.7.0的后台数据处理过程,以及怎样形成自己的链路数据处理能力。

总体来看,我们首先利用skyalking的java agent采集链路信息,保持原装不动。采集来的信息由kafka进行缓存。Skywalking oap读取kafka并存储到elasticsearch7中。由于Skywalking体系中,采集了许多agent的管理信息/metrics/健康检查等,所以需要一套原始的Skywalking oap运行管理多个agent。这是原始的处理流程。

而我们自己的模拟链路采集应用,则是消费kafka中skywalking-segments主题中的链路数据。Skywalking oap同时也会去消费,互不相干。

  • 下载源码

 首先需要下载版本8.7.0的src。下载地址:Index of /dist/skywalking

选择apache-skywalking-apm-8.7.0-src.tgz。用idea打开。准备编译。

  • 编译

编译前先需要注释checkstyle以及修改npm代理。以免编译过程报错。

1,注释checkstyle

找到根模块的pom文件,找到checkstyle的<plugins>删除该插件。

2,修改npm代理

找到apm-webapp模块的pom文件,修改npm的代理地址为:

<arguments>install --registry=https://registry.npm.taobao.org</arguments>

最后在“终端”中输入:mvn install "-Dmaven.test.skip=true",在漫长的编译后,就可以生成相应的jar包。(12代i9笔记本大概需要10分钟左右)

另外可以调大idea的内存占用如果需要。

  • Protobuf

  1. 用idea新建一个项目。先将模块skywalking项目中的apm-protocol中proto目录复制到自己项目中的main目录下:

下面图片是skywalking8.7.0的文件位置:

在pom中添加protobuf的编译插件: 

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>${protobuf-maven-plugin.version}</version>
        <configuration>
            <!--
              The version of protoc must match protobuf-java. If you don't depend on
              protobuf-java directly, you will be transitively depending on the
              protobuf-java version that grpc depends on.
            -->
            <protocArtifact>
                com.google.protobuf:protoc:${com.google.protobuf.protoc.version}:exe:${os.detected.classifier}
            </protocArtifact>
            <pluginId>grpc-java</pluginId>
            <pluginArtifact>
                io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.plugin.version}:exe:${os.detected.classifier}
            </pluginArtifact>
        </configuration>
        <executions>
            <execution>
                <id>grpc-build</id>
                <goals>
                    <goal>compile</goal>
                    <goal>compile-custom</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

然后编译protobuf,编译方法是:

执行protobuf:compile,执行成功后就会在taget目录下生成java代码,这些代码是protobuf

数据结构的java类。并需要将这些java源文件标记为java源文件。标记方法鼠标右键选择图中java目录,选择菜单:将目标标记为->源代码根目录。这样在其他源文件就可以引用这些类。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hotwifi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值