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+ |