Go Agent Support List
Supported Operating Systems
- Supports Linux distributions with kernel version above 2.6.32 and GLIBC version above 2.12
- Windows operating system is not supported
Supported Go Compiler Versions
Linux AMD64:go1.13.0 - go1.22.12, go1.23.0 - go1.23.12, go1.24.0 - go1.24.10, go1.25.0 - go1.25.4
Linux ARM64:go1.16.0 - go1.22.12, go1.23.0 - go1.23.12, go1.24.0 - go1.24.10, go1.25.0 - go1.25.4
Go Compilation Options
- Supports both dynamic linking (CGO_ENABLED=1) and static linking (CGO_ENABLED=0) Go applications
- Supports Go applications compiled with glibc and muslc
- Supports applications without symbol tables (strip or -ldflags="-s" or -ldflags="-s -w")
- Supports compilation mode with race condition detection enabled (-race)
- Supports position independent executable (PIE) mode (-buildmode=pie)
- Not supported: -linkshared
Deployment Environments
- Supports deployment on physical hosts
- Supports deployment inside virtual machines
- Supports deployment inside Docker containers (only images with C libraries are supported; images without C libraries are not supported, see Installation and Usage)
- Supports deployment inside Kubernetes Pods (hot-patching mode is not supported, see Installation and Usage)
Feature Scope
- Supports collecting HTTP(s) protocol service requests built into Go (HTTP/2 is not supported yet)
- Supports collecting gRPC protocol service requests
- Supports collecting database calls
- Supports collecting Go built-in HTTP Client components (HTTP/2 is not supported yet) and cross-application
- Supports collecting gRPC Client components and cross-application
- Not supported: custom instrumentation, user tracing, frontend RUM Browser instrumentation
- Temporarily not supported: agent-side request naming, collecting SQL parameters, collecting error logs from log components, log tracing, displaying Go processes in the process list
Supported Frameworks
| Framework | Supported Version |
|---|---|
| net/http built-in HTTP framework | go1.17 ~ go1.23 |
| google.golang.org/grpc GRPC framework | v1.14.0 ~ v1.67.1 |
| github.com/gin-gonic/gin gin framework | v1.1 ~ v1.10.0 |
| github.com/astaxie/beego beego framework | v2.0 ~ v2.3.0 |
| github.com/labstack/echo/v4 echo framework | v4.0 ~ v4.12.0 |
| github.com/kataras/iris/v12 iris framework | v12.0 ~ v12.2.10 |
Note: Downloading modules locally and referencing them (e.g., downloading the gRPC framework locally and using replace to substitute) is not supported, as this will cause the agent to fail to recognize the framework version.
Supported Components
| Components | Supported Versions |
|---|---|
| github.com/go-sql-driver/mysql | v1.0.0 ~ v1.7.1 |
| github.com/mattn/go-sqlite3 | v1.1.0 ~ v1.14.23 |
| github.com/lib/pq | v1.0.0 ~ v1.10.9 |
| github.com/sijms/go-ora/v2 | v2.1.19 ~ v2.9.0 |
| github.com/ClickHouse/clickhouse-go/v2 | v2.3.0 ~ v2.40.3 |
| github.com/go-redis/redis/v7 | v7.0.0 ~ v7.4.1 |
| github.com/go-redis/redis/v8 | v8.0.0 ~ v8.11.5 |
| github.com/go-redis/redis/v9 | v9.0.0 ~ v9.14.0 |
| github.com/segmentio/kafka-go | v0.4.1 ~ v0.4.49 |
| github.com/sirupsen/logrus | v1.7.1 ~ v1.9.3 |
| go.uber.org/zap | v1.0.0 ~ v1.27.0 |
| github.com/golang/glog | v1.1.0 ~ v1.2.5 |
Note: Downloading modules locally and referencing them (e.g., downloading the mysql component locally and using replace to substitute) is not supported, as this will cause the agent to fail to recognize the component version.
Agent Runtime Principle and Impact
Principle: The Go Agent is started using bin/agentinject, which uses ptrace technology to replace relevant functions in the Go application and collect performance data. agentinject runs as the main process and also starts the traceagent process to receive trace data generated by the Go application and forward it to the Collector.
After startup, agentinject listens for signal events from the Go application. When agentinject is killed, the Go application will also be killed; when the Go application is killed, agentinject will also exit after detecting the application's exit.
Impact: In the ps process list, the original Go application process will be replaced by agentinject, and the parent process ID of the Go application process will become 1. If the Go application is managed by a start/stop script or service, please verify the effectiveness of the script or service in a test environment and make appropriate modifications.
Example:
Starting the application without the agent:
[nb@go-autotest grpc3]$ ./grpc3-v1.67.1-go-1.21-static &
[3] 604551
ps process:
[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
Starting the application with the agent:
[nb@go-autotest grpc3]$ ~/tingyun-agent-go/bin/agentinject ./grpc3-v1.67.1-go-1.21-static &
[3] 604551
ps process:
[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 Support List
Supported Operating Systems
- Windows operating system is not supported
- Supports ARM64 architecture Linux
- Supports AMD64 architecture Linux
Supported Go Compiler Versions
- Go 1.9 - Go 1.23
Supported Frameworks
| Framework | Go Agent Import Module Path | Supported Version |
|---|---|---|
| net/http built-in HTTP framework | github.com/TingYunGo/goagent | go1.9 ~ go1.23.x |
| github.com/gin-gonic/gin gin framework | github.com/TingYunGo/goagent/frameworks/gin | gin v1.3.0 ~ gin v1.7.4 |
| github.com/astaxie/beego beego framework: GOPATH mode | github.com/TingYunGo/goagent/frameworks/beego/path/astaxie | beego v1.12.0 ~ beego v2.0.0-beta |
| github.com/beego/beego beego framework: GOPATH mode | github.com/TingYunGo/goagent/frameworks/beego/path | beego v1.12.0 ~ beego v2.0.1 |
| github.com/beego/beego beego framework v1: GOMOD mode | github.com/TingYunGo/goagent/frameworks/beego | beego v1.12.0 ~ beego v1.12.3 |
| github.com/beego/beego/v2 beego framework v2: GOMOD mode | github.com/TingYunGo/goagent/frameworks/beego/v2 | beego v2.0.0 ~ beego v2.0.1 |
| github.com/labstack/echo echo framework GOPATH mode | github.com/TingYunGo/goagent/frameworks/echo | echo v3.3.10 ~ echo v4.6.1 |
| github.com/labstack/echo/v4 echo framework V4 GOMOD mode | github.com/TingYunGo/goagent/frameworks/echo/v4 | echo v4.0.0 ~ echo v4.6.1 |
| github.com/kataras/iris/v12 iris framework v12.1.x | github.com/TingYunGo/goagent/frameworks/iris/v12 | iris v12.1.0 ~ iris v12.1.8 |
| github.com/kataras/iris/v12 iris framework v12.2 | github.com/TingYunGo/goagent/frameworks/iris/v12/2 | iris v12.2.0-alpha ~ iris v12.2.0-alpha3 |
Supported Components
| Component | Go Agent Import Module Path | Supported Version |
|---|---|---|
| Database/SQL Database | github.com/TingYunGo/goagent/database | go1.9 ~ go1.23.x Drivers: SQL Server: github.com/denisenkom/go-mssqldb v0.9.0 ~ v0.11.0 MySQL: github.com/go-sql-driver/mysql v1.0.0 ~ v1.6.0 PostgreSQL: github.com/lib/pq v1.0.0 ~ v1.10.3 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 mode | github.com/TingYunGo/goagent/nosql/go-redis | v6.0.0 ~ v8.11.4 |
| github.com/go-redis/redis redis: go-redis default, GOMOD mode | github.com/TingYunGo/goagent/nosql/go-redis | v6.0.0 ~ v8.11.4 |
| github.com/go-redis/redis/v7 redis: go-redis v7, GOMOD mode | 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 mode | 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 |
Supported Databases
Commonly used Go third-party components and their supported database versions are as follows:
| Component | Supported Version |
|---|---|
| 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+ |