Skip to main content

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

FrameworkSupported Version
net/http built-in HTTP frameworkgo1.17 ~ go1.23
google.golang.org/grpc GRPC frameworkv1.14.0 ~ v1.67.1
github.com/gin-gonic/gin gin frameworkv1.1 ~ v1.10.0
github.com/astaxie/beego beego frameworkv2.0 ~ v2.3.0
github.com/labstack/echo/v4 echo frameworkv4.0 ~ v4.12.0
github.com/kataras/iris/v12 iris frameworkv12.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

ComponentsSupported Versions
github.com/go-sql-driver/mysqlv1.0.0 ~ v1.7.1
github.com/mattn/go-sqlite3v1.1.0 ~ v1.14.23
github.com/lib/pqv1.0.0 ~ v1.10.9
github.com/sijms/go-ora/v2v2.1.19 ~ v2.9.0
github.com/ClickHouse/clickhouse-go/v2v2.3.0 ~ v2.40.3
github.com/go-redis/redis/v7v7.0.0 ~ v7.4.1
github.com/go-redis/redis/v8v8.0.0 ~ v8.11.5
github.com/go-redis/redis/v9v9.0.0 ~ v9.14.0
github.com/segmentio/kafka-gov0.4.1 ~ v0.4.49
github.com/sirupsen/logrusv1.7.1 ~ v1.9.3
go.uber.org/zapv1.0.0 ~ v1.27.0
github.com/golang/glogv1.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

FrameworkGo Agent Import Module PathSupported Version
net/http built-in HTTP frameworkgithub.com/TingYunGo/goagentgo1.9 ~ go1.23.x
github.com/gin-gonic/gin gin frameworkgithub.com/TingYunGo/goagent/frameworks/gingin v1.3.0 ~ gin v1.7.4
github.com/astaxie/beego beego framework: GOPATH modegithub.com/TingYunGo/goagent/frameworks/beego/path/astaxiebeego v1.12.0 ~ beego v2.0.0-beta
github.com/beego/beego beego framework: GOPATH modegithub.com/TingYunGo/goagent/frameworks/beego/pathbeego v1.12.0 ~ beego v2.0.1
github.com/beego/beego beego framework v1: GOMOD modegithub.com/TingYunGo/goagent/frameworks/beegobeego v1.12.0 ~ beego v1.12.3
github.com/beego/beego/v2 beego framework v2: GOMOD modegithub.com/TingYunGo/goagent/frameworks/beego/v2beego v2.0.0 ~ beego v2.0.1
github.com/labstack/echo echo framework GOPATH modegithub.com/TingYunGo/goagent/frameworks/echoecho v3.3.10 ~ echo v4.6.1
github.com/labstack/echo/v4 echo framework V4 GOMOD modegithub.com/TingYunGo/goagent/frameworks/echo/v4echo v4.0.0 ~ echo v4.6.1
github.com/kataras/iris/v12 iris framework v12.1.xgithub.com/TingYunGo/goagent/frameworks/iris/v12iris v12.1.0 ~ iris v12.1.8
github.com/kataras/iris/v12 iris framework v12.2github.com/TingYunGo/goagent/frameworks/iris/v12/2iris v12.2.0-alpha ~ iris v12.2.0-alpha3

Supported Components

ComponentGo Agent Import Module PathSupported Version
Database/SQL Databasegithub.com/TingYunGo/goagent/databasego1.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: redigogithub.com/TingYunGo/goagent/nosql/redigov1.7.0 ~ v1.8.5
github.com/go-redis/redis redis: go-redis, GOPATH modegithub.com/TingYunGo/goagent/nosql/go-redisv6.0.0 ~ v8.11.4
github.com/go-redis/redis redis: go-redis default, GOMOD modegithub.com/TingYunGo/goagent/nosql/go-redisv6.0.0 ~ v8.11.4
github.com/go-redis/redis/v7 redis: go-redis v7, GOMOD modegithub.com/TingYunGo/goagent/nosql/go-redis/v7v7.0.0 ~ v7.4.1
github.com/go-redis/redis/v8 redis: go-redis v8, GOMOD modegithub.com/TingYunGo/goagent/nosql/go-redis/v8v8.0.0 ~ v8.11.4
Go.mongodb.org/mongo-driver/mongo mongodbgithub.com/TingYunGo/goagent/nosql/mongodbv1.1.0 ~ v1.7.3

Supported Databases

Commonly used Go third-party components and their supported database versions are as follows:

ComponentSupported Version
mssql: github.com/denisenkom/go-mssqldbSQL Server 2008 SP3 +
mysql: github.com/go-sql-driver/mysqlMySQL 5.5+
postgresql: github.com/lib/pqPostgreSQL 9.6+
sqlite: github.com/mattn/go-sqlite3SQLite 3.8.5 ~ 3.36.0
redis: redigo github.com/gomodule/redigoRedis 4.0.0+
redis: go-redis github.com/go-redis/redisRedis 4.0.0+
mongodb: go.mongodb.org/mongo-driver/mongoMongoDB 2.6.1+