Golang版本处理Skywalking Trace上报数据

这篇具有很好参考价值的文章主要介绍了Golang版本处理Skywalking Trace上报数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tips: 中间记录了解决问题的过程,如不感兴趣可直接跳至结尾

  1. 首先去es里查询skywalking trace的元数据
    Golang版本处理Skywalking Trace上报数据,golang,skywalking,开发语言
    可以拿到一串base64加密后的data_binary(直接解密不能用,会有乱码,可参考https://github.com/apache/skywalking/issues/7423)

  2. data_binary进行base64解密

skywalking提供了一个java的sdk可以直接分析这串内容,代码如下所示:

String dataBinary= "xxxxxx"
byte[]decode = Base64.getDecoder().decode(dataBinary);
SegmentObject segmentObject = SegmentObject.parseFrom(decode);
System.out.println(JSON.toJSONString(segmentObject));

segmentObject内有我们所有需要的数据,但golang并未找到类似的函数,所以我们需要用golang实现类似parseFrom()的逻辑,我们先看一下java的源码

public static SegmentObject parseFrom(byte[] data) throws InvalidProtocolBufferException {
    return (SegmentObject)PARSER.parseFrom(data);
}

它的本质就是调用com.google.protobuf提供的parseFrom()函数,所以我们只需要用golang版本的proto去反序列化base64解密后的byte即可

  1. 反序列化

我先尝试了将java版本的SegmentObject转成json,再转成proto文件,然后生成pb.go,用这里生成的SegmentObject去进行反序列化,发现并不可行

最后是通过skywalking-go版本agent的源码,找到了对应的pb文件
Golang版本处理Skywalking Trace上报数据,golang,skywalking,开发语言
然后使用里面已经编译好的SegmentObject对象即可文章来源地址https://www.toymoban.com/news/detail-757199.html

import (
	"encoding/base64"
	"fmt"
	"google.golang.org/protobuf/proto"
	"testing"
	agent "skywalking.apache.org/repo/goapi/collect/language/agent/v3"
)

func TestSkyWalking(t *testing.T) {
	dataBinary := "xxx"
	by, err := base64.StdEncoding.DecodeString(dataBinary)
	if err != nil {
		t.Error(err)
	}
	segmentObject := &agent.SegmentObject{}
	err = proto.Unmarshal(by, segmentObject)
	fmt.Printf("%v", segmentObject)

}

到了这里,关于Golang版本处理Skywalking Trace上报数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Skywalking oap 源码解读——链路前置处理

    本文已参与腾源会发起的「开源摘星计划」 怎么样利用Skywalking oap源码为自己所用。首先需要了解Skywalking oap对链路信息的处理过程。再上一篇的基础上,我们已经完成了对skywalking8.7.0的源码编译。下面对其采集链路信息相关的模块进行读解。因为其源码功能模块众多,我们

    2024年02月01日
    浏览(43)
  • go-carbon 2.2.12 版本发布, 轻量级、语义化、对开发者友好的 Golang 时间处理库

    carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于等于1.16 Golang 版本小于1.16 更新日志 增加对荷兰语的支持 测试

    2024年02月06日
    浏览(53)
  • skywalking agent使用kafka数据传输

    安装Zookeeper 下载相应版本的zookeeper 解压文件 进入conf目录下,复制zoo_sample.cfg文件,这个是官方提供的配置样例,我们修改复制的文件名称未zoo.cfg。 进入bin目录,启动zookeeper 安装Kafka 下载对应版本的kafka 解压文件 修改config/server.properties文件 启动kafka 启动项目 服务层 修改

    2024年02月15日
    浏览(58)
  • 链路追踪SkyWalking整合项目以及数据持久化

    1.1 通过jar包方式整合 首先我们将一个简单的springboot服务打成jar包。 将其上传到Linux服务器中。 准备一个启动脚本,脚本内容如下: 等同于 参数名对应agent/config/agent.config配置文件中的属性。属性对应的源码: org.apache.skywalking.apm.agent.core.conf.Config.java 1.2 docker方式安装以及集

    2024年02月10日
    浏览(42)
  • Spring Cloud【SkyWalking日志、SkyWalking告警 、Skywalking自定义告警规则】(十五)

      目录 分布式请求链路追踪_SkyWalking日志 分布式请求链路追踪_SkyWalking告警 

    2024年02月14日
    浏览(39)
  • Spring boot 集成 Skywalking 配置 || Skywalking 打不开【已解决】

    Apache SkyWalking 如果下载太慢,建议复制下载链接, 然后用下载器下载 ,比如某雷。 ​ 打开apm-bin 里的webapp 修改port ​ ​ 这样就解决了端口冲突问题。 ​  ​ ​   ​ -javaagent:D:testxunleiapache-skywalking-java-agent-8.10.0skywalking-agentskywalking-agent.jar //这个是你自己skywalking-agent.j

    2024年02月14日
    浏览(32)
  • macbook golang版本升级

    发现自己mac电脑上,很早之前安装的go语言环境,打算升级下版本。 打开自己的terminal,输入命令查看mac上的go语言版本信息 本地安装的go语言的版本是1.16.5的,最新的go语言版本已经到了1.20.3 网上搜了下,如何升级go语言版本,步骤如下: 1. 卸载旧版本(可选):如果您之前

    2024年02月07日
    浏览(43)
  • golang 版本升级

    1.查看当前前版本  2.Go语言中文网下载windows对应的go版本,此处将go升级到1.19.版本  (1)windows 下载msi 直接下载安装,安装之前会提示卸载旧版本,确定后直接安装在原来的Go安装目录 ,直接覆盖 安装成功后,在终端输入go version即可看到go的版本已经升级 (2)macOS 下载p

    2024年02月09日
    浏览(38)
  • Ubuntu 升级 golang 版本完美步骤

    1、打开profile: 2、添加以下变量: 3、是环境立即生效 4、将环境立即生效载入脚本 先打开文件这个文件: 加入这个命令: 看版本是不是你要的最新的。 参考:这里

    2024年02月07日
    浏览(50)
  • golang的错误处理

    在软件开发中,错误处理是一个非常重要的方面。它涉及到识别、捕获和处理在程序执行期间可能发生的错误。在Golang中,错误处理是一个值得关注的主题,因为它为开发人员提供了一种优雅且高效的方式来处理错误情况。本文将深入探讨Golang的错误处理机制,并为您提供一

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包