Go 探针支持列表

操作系统

  • 支持内核版本高于2.6.32,GLIBC版本高于2.12的Linux x86_64发行版
  • 不支持Windows操作系统
  • 暂不支持CPU架构为ARM64的Linux 操作系统

Go 编译时版本

  • Go 1.17
  • Go 1.18
  • Go 1.19
  • Go 1.20
  • Go 1.21
  • Go 1.22
  • Go 1.23

Go 编译选项

  • 支持动态链接(CGO_ENABLED=1)和静态链接(CGO_ENABLED=0)的Go应用
  • 支持glibc库和muslc库编译的Go应用
  • 支持没有符号表的应用 (strip 或 -ldflags="-s" 或 -ldflags="-s -w")
  • 支持开启竞态条件检测的编译模式(-race)
  • 支持地址空间布局随机化的编译模式(Position Independent Executable, PIE) (-buildmode=pie)
  • 不支持的编译选项: -linkshared

部署环境

  • 支持部署在普通主机的Go应用
  • 支持部署在虚机内的Go应用
  • 支持部署在Docker容器内的Go应用, 仅支持包含c库的镜像,不支持没有c库的镜像, 详见 安装和使用
  • 支持部署在Kubernetes Pod内的Go应用,不支持激进模式部署, 详见 安装和使用

功能范围

  • 支持采集Go内置的HTTP(s)协议的服务请求(暂不支持HTTP/2协议)
  • 支持采集GRPC协议的服务请求
  • 支持采集数据库调用
  • 支持采集Go内置的HTTP Client组件(暂不支持HTTP/2协议)及跨应用
  • 支持采集GRPC Client组件及跨应用
  • 不支持的功能:自定义嵌码、用户溯源、前端RUM Browser嵌码
  • 暂时不支持的功能:探针端请求命名、采集SQL参数、采集日志组件记录的错误日志、日志溯源、在进程列表中展示Go进程

框架

框架 支持版本
net/http 内置HTTP框架 go1.17 ~ go1.23
google.golang.org/grpc GRPC框架 v1.14.0 ~ v1.67.1
github.com/gin-gonic/gin gin框架 v1.1 ~ v1.10.0
github.com/astaxie/beego beego框架 v2.0 ~ v2.3.0
github.com/labstack/echo/v4 echo框架 v4.0 ~ v4.12.0
github.com/kataras/iris/v12 iris框架 v12.0 ~ v12.2.10

注: 不支持将模块下载为本地副本再引用的方式,例如将GRPC框架下载到本地然后使用replace方式替换,这样会导致探针无法识别框架版本

组件

组件 支持版本
Database/SQL内置数据库API go1.17 ~ go1.23
github.com/go-sql-driver/mysql v1.0.0 ~ v1.7.1
github.com/mattn/go-sqlite3 v1.1.0 ~ v1.14.23

注: 不支持将模块下载为本地副本再引用的方式,例如将mysql组件下载到本地然后使用replace方式替换,这样会导致探针无法识别组件版本

探针运行原理及影响

原理:使用bin/agentinject启动Go应用, agentinject利用ptrace技术替换Go应用中相关的函数并获取性能数据,agentinject会作为主进程运行,同时启动traceagent进程接收Go应用产生的trace数据并转发到Collector。

启动后,agentinject会监听Go应用的信号事件,当agentinject被kill退出时,Go应用也会被连带kill退出;当Go应用被kill时,agentinject检测到应用退出后也会同时退出。

影响:ps进程列表中原本Go应用进程的位置会被agentinject替换,Go应用进程的父进程id会变为1,如果Go应用由启停脚本或服务维护,请务必在测试环境验证启停脚本或服务的有效性并做适当修改。

例如:

不带探针启动应用:

[nb@go-autotest grpc3]$ ./grpc3-v1.67.1-go-1.21-static &
[3] 604551

然后ps进程:

[nb@go-autotest grpc3]$ ps -ef | grep grpc3-v1.67.1-go-1.21-static
nb        604551  604388  0 11:17 pts/0    00:00:00 ./grpc3-v1.67.1-go-1.21-static

使用探针启动应用:

[nb@go-autotest grpc3]$  ~/tingyun-agent-go/bin/agentinject ./grpc3-v1.67.1-go-1.21-static &
[3] 604551

然后ps进程:

[nb@go-autotest grpc3]$ ps -ef | grep grpc3-v1.67.1-go-1.21-static
nb        604461  604388  0 10:52 pts/0    00:00:00 ~/tingyun-agent-go/bin/agentinject ./grpc3-v1.67.1-go-1.21-static
nb        604463       1  0 10:52 pts/0    00:00:00 ./grpc3-v1.67.1-go-1.21-static

Go SDK支持列表

操作系统

  • 不支持Windows操作系统
  • 支持CPU架构为ARM64的Linux 操作系统
  • 支持CPU架构为AMD64的Linux 操作系统

Go 编译时版本

  • Go 1.9 - Go 1.23

框架

框架 Go探针嵌码 import 模块路径 支持版本
net/http 内置http框架 github.com/TingYunGo/goagent go1.9 ~ go1.23.x
github.com/gin-gonic/gin gin框架 github.com/TingYunGo/goagent/frameworks/gin gin v1.3.0 ~ gin v1.7.4
github.com/astaxie/beego beego框架: GOPATH模式 github.com/TingYunGo/goagent/frameworks/beego/path/astaxie beego v1.12.0 ~ beego v2.0.0-beta
github.com/beego/beego beego框架: GOPATH模式 github.com/TingYunGo/goagent/frameworks/beego/path beego v1.12.0 ~ beego v2.0.1
github.com/beego/beego beego框架v1: GOMOD模式 github.com/TingYunGo/goagent/frameworks/beego beego v1.12.0 ~ beego v1.12.3
github.com/beego/beego/v2 beego框架v2: GOMOD模式 github.com/TingYunGo/goagent/frameworks/beego/v2 beego v2.0.0 ~ beego v2.0.1
github.com/labstack/echo echo 框架 GOPATH模式 github.com/TingYunGo/goagent/frameworks/echo echo v3.3.10 ~ echo v4.6.1
github.com/labstack/echo/v4 echo 框架 V4 GOMOD模式 github.com/TingYunGo/goagent/frameworks/echo/v4 echo v4.0.0 ~ echo v4.6.1
github.com/kataras/iris/v12 iris 框架 v12.1.x github.com/TingYunGo/goagent/frameworks/iris/v12 iris v12.1.0 ~ iris v12.1.8
github.com/kataras/iris/v12 iris 框架 v12.2 github.com/TingYunGo/goagent/frameworks/iris/v12/2 iris v12.2.0-alpha ~ iris v12.2.0-alpha3

组件

组件 Go探针嵌码 import 模块路径 支持版本
Database/SQL数据库 github.com/TingYunGo/goagent/database go1.9 ~ go1.23.x </br>驱动列表: </br>SQL Server: github.com/denisenkom/go-mssqldb v0.9.0 ~ v0.11.0 </br>MySQL: github.com/go-sql-driver/mysql v1.0.0 ~ v1.6.0 </br>PostgreSQL: github.com/lib/pq v1.0.0 ~ v1.10.3 </br>SQLite: github.com/mattn/go-sqlite3 v1.0.0 ~ v1.14.8
github.com/gomodule/redigo redis: redigo github.com/TingYunGo/goagent/nosql/redigo v1.7.0 ~ v1.8.5
github.com/go-redis/redis redis: go-redis, GOPATH模式 github.com/TingYunGo/goagent/nosql/go-redis v6.0.0 ~ v8.11.4
github.com/go-redis/redis redis: go-redis default, GOMOD模式 github.com/TingYunGo/goagent/nosql/go-redis v6.0.0 ~ v8.11.4
github.com/go-redis/redis/v7 redis: go-redis v7, GOMOD模式 github.com/TingYunGo/goagent/nosql/go-redis/v7 v7.0.0 ~ v7.4.1
github.com/go-redis/redis/v8 redis: go-redis v8, GOMOD模式 github.com/TingYunGo/goagent/nosql/go-redis/v8 v8.0.0 ~ v8.11.4
Go.mongodb.org/mongo-driver/mongo mongodb github.com/TingYunGo/goagent/nosql/mongodb v1.1.0 ~ v1.7.3

数据库

常用的Go语言第三方组件支持的数据库版本如下表所示:

组件 支持版本
mssql: github.com/denisenkom/go-mssqldb SQL Server 2008 SP3 +
mysql: github.com/go-sql-driver/mysql MySQL 5.5+
postgresql: github.com/lib/pq PostgreSQL 9.6+
sqlite: github.com/mattn/go-sqlite3 SQLite 3.8.5 ~ 3.36.0
redis: redigo github.com/gomodule/redigo Redis 4.0.0+
redis: go-redis github.com/go-redis/redis Redis 4.0.0+
mongodb: go.mongodb.org/mongo-driver/mongo MongoDB 2.6.1+

results matching ""

    No results matching ""