apache/skywalking-go 源码分析
版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc apache/skywalking-go 源码分析 参考资料 1.劫持 Golang 编译 2.SkyWalking Go Agent 快速开始指南 3.support-plugins 4.Hybrid Compilation 5.Key Principle 6.通过SkyWalking上报Go应用数据 1. 前言 Skywalking是什么? Skywalking 是一个开源的应用性能监控工具,它专注于分布式系统架构中的性能监控和故障排查。 它能够跟踪分布式系统中的请求流,并提供实时的性能指标、调用链追踪、错误分析等功能。 使用 Skywalking 可以帮助开发人员和运维团队更好地理解应用程序的性能特征, 并快速定位和解决潜在的性能问题和故障。 几年前,当我最开始知道Skywalking的时候,它似乎只支持Java,它给我的最大的惊喜时,是直接使用字节码注入的方式来实现埋点, 减少开发人员埋点的工作量,且代码几乎无侵入。 2023年上半年,Skywalking推出一个全新的Go Agent skywalking-go。 它基于Golang build提供的-toolexec参数,实现了编译期劫持,也达到了在对代码几乎无侵入的情况下,实现埋点。 截止2023年12月1日,已经有大量的库得到了支持。参看support-plugins 日志库 zap、logrus 数据库Client gorm、sql HTTP Server gin、http HTTP Client http RPC框架 gRPC 它是如何做到代码几乎无入侵埋点的呢?本文试图解答这个问题 2. skywalking-go实现埋点 关于skywalking-go的使用参看SkyWalking Go Agent 快速开始指南 skywalking-go实现埋点主要依靠在golang build编译阶段的编译劫持。 go build -toolexec="/myopt/bin/skywalking-go-agent" -x -work -a -o test . 这里我们增加了2个额外参数 -x:这个标志告诉 Go 打印它执行的命令。 -work:这个标志告诉 Go 打印临时工作目录的名称,并在退出时不删除它。 ...