支持的技术
编辑支持的技术
编辑此页面描述了 Elastic APM Go Agent 支持的技术。
如果您的常用技术尚未得到支持,您可以在 Discuss 论坛 中发起讨论。
如果您想了解更多信息,请查看 贡献指南。
Go
编辑Elastic APM Go Agent 自然需要 Go。我们根据 Go 的发布策略 支持最近两个主要 Go 版本。
每个主要 Go 版本都支持,直到出现两个更新的主要版本。例如,Go 1.5 支持到 Go 1.7 发布,Go 1.6 支持到 Go 1.8 发布。
Web 框架
编辑我们支持几个第三方 Web 框架,以及 Go 的标准 net/http
包。无论框架如何,我们都会为每个传入请求创建一个事务,并根据注册的路由命名事务。
fasthttp
编辑我们支持 valyala/fasthttp,v1.26.0 及更高版本。
有关 fasthttp 检测的更多信息,请参见 模块/apmfasthttp。
httprouter
编辑julienschmidt/httprouter 不使用语义版本控制,但其 API 相对稳定。任何最新版本都应该与 Elastic APM Go Agent 兼容。
有关 httprouter 检测的更多信息,请参见 模块/apmhttprouter。
Echo
编辑我们支持 Echo Web 框架,v3.3.5 及更高版本。
我们为 Echo v3 和 v4 版本提供了不同的包:模块/apmecho
用于 Echo v3.x,模块/apmechov4
用于 Echo v4.x。
有关 Echo 检测的更多信息,请参见 模块/apmecho。
Gin
编辑有关 Gin 检测的更多信息,请参见 模块/apmgin。
Fiber
编辑我们支持 Fiber Web 框架,v2.18.0 及更高版本。
我们仅为 Fiber v2 提供包。有关 Fiber 检测的更多信息,请参见 模块/apmfiber。
Beego
编辑我们支持 Beego Web 框架,v1.10.0 及更高版本。
有关 Beego 检测的更多信息,请参见 模块/apmbeego。
gorilla/mux
编辑我们支持 gorilla/mux v1.6.1 及更高版本。由于使用了 gorilla.Middleware,因此不支持较旧的版本。
有关 gorilla/mux 检测的更多信息,请参见 模块/apmgorilla。
go-restful
编辑我们支持 go-restful,2.0.0 及更高版本。
有关 go-restful 检测的更多信息,请参见 模块/apmrestful。
chi
编辑有关 chi 检测的更多信息,请参见 模块/apmchi。
negroni
编辑有关 negroni 检测的更多信息,请参见 模块/apmnegroni。
数据库
编辑database/sql
编辑我们支持使用任何 database/sql
驱动程序跟踪请求,前提是该驱动程序已在 Elastic APM Go Agent 中注册。将为执行的每个语句创建跨度。
当使用以下驱动程序之一时,Elastic APM Go Agent 将能够解析数据源名称,并在其发出的跨度中提供更多上下文
- lib/pq (PostgreSQL)
- jackc/pgx (PostgreSQL)
- go-sql-driver/mysql
- mattn/go-sqlite3
有关 database/sql 检测的更多信息,请参见 模块/apmsql。
GORM
编辑我们支持 GORM 对象关系映射库,v1.9 及更高版本。将为每个创建、查询、更新和删除操作创建跨度。
与 database/sql
支持一样,我们为 postgres、mysql 和 sqlite 方言提供了额外的支持。
我们为 Gorm v1 和 v2 版本提供了不同的包:模块/apmgorm
用于 Gorm v1.x,模块/apmgormv2
用于 Gorm v2.x。
有关 GORM 检测的更多信息,请参见 模块/apmgorm 或 模块/apmgormv2。
go-pg/pg
编辑我们支持 go-pg/pg PostgreSQL ORM,v8.0.4。将为每个数据库操作创建跨度。
有关 go-pg 检测的更多信息,请参见 模块/apmgopg。
Cassandra (gocql)
编辑GoCQL 没有稳定的 API,因此我们将尽力为最新的 API 和旧版本的 API 提供支持。将为每个查询创建跨度。当使用批处理 API 时,将为批处理创建跨度,并为批处理中的每个查询创建子跨度。
有关 GoCQL 检测的更多信息,请参见 模块/apmgocql。
Redis (gomodule/redigo)
编辑我们支持 Redigo,v2.0.0 及更高版本。我们提供了用于将 Redis 命令报告为跨度的辅助函数。
有关 Redigo 检测的更多信息,请参见 模块/apmredigo。
Redis (go-redis/redis)
编辑我们支持 go-redis,v6.15.3。我们提供了用于将 Redis 命令报告为跨度的辅助函数。
有关 go-redis 检测的更多信息,请参见 模块/apmgoredis。
Elasticsearch
编辑我们为 Elasticsearch 客户端提供检测功能。这可用于 go-elasticsearch 和 olivere/elastic 客户端,也应该可用于任何其他提供配置底层 net/http.RoundTripper
方法的客户端。
有关 Elasticsearch 客户端检测的更多信息,请参见 模块/apmelasticsearch。
MongoDB
编辑我们为官方的 MongoDB Go 驱动程序 提供检测功能,v1.0.0 及更高版本。将在包含事务的上下文中为执行的每个 MongoDB 命令创建跨度。
有关 MongoDB Go 驱动程序检测的更多信息,请参见 模块/apmmongo。
DynamoDB
编辑我们为 AWS DynamoDB 提供检测功能。这可用于 AWS SDK Go。
有关 AWS SDK Go 检测的更多信息,请参见 模块/apmawssdkgo。
RPC 框架
编辑gRPC
编辑我们支持 gRPC v1.3.0 及更高版本。我们为客户端和服务器都提供了单项和流拦截器。服务器拦截器将为每个传入请求创建一个事务,客户端拦截器将为每个传出请求创建一个跨度。
有关 gRPC 检测的更多信息,请参见 模块/apmgrpc。
服务框架
编辑Go kit
编辑当使用 gRPC 或 HTTP 传输时,我们支持跟踪 Go kit 客户端和服务器,分别通过 模块/apmgrpc 和 模块/apmhttp。
可在https://pkg.go.dev/go.elastic.co/apm/module/apmgokit/v2找到代码示例,帮助您开始使用。
日志框架
编辑Logrus
编辑我们支持与Logrus(版本v1.1.0及更高版本)进行日志关联和异常跟踪。
有关 Logrus 集成的更多信息,请参阅module/apmlogrus。
Zap
编辑我们支持与Zap(版本v1.0.0及更高版本)进行日志关联和异常跟踪。
有关 Zap 集成的更多信息,请参阅module/apmzap。
Zerolog
编辑我们支持与Zerolog(版本v1.12.0及更高版本)进行日志关联和异常跟踪。
有关 Zerolog 集成的更多信息,请参阅module/apmzerolog。
Slog
编辑我们支持与Slog(版本v1.21.0及更高版本)进行日志关联和错误跟踪。
有关 slog 集成的更多信息,请参阅module/apmslog。
对象存储
编辑Amazon S3
编辑我们为 AWS S3 提供了检测功能。这可以与AWS SDK Go一起使用。
有关 AWS SDK Go 检测的更多信息,请参见 模块/apmawssdkgo。
Azure 存储
编辑我们为 Azure 存储提供了检测功能。这可以与以下组件一起使用:
- github.com/Azure/azure-storage-blob-go/azblob [Azure Blob 存储]
- github.com/Azure/azure-storage-queue-go/azqueue [Azure 队列存储]
- github.com/Azure/azure-storage-file-go/azfile [Azure 文件存储]
有关 Azure SDK Go 检测的更多信息,请参阅module/apmazure。
消息系统
编辑Amazon SQS
编辑我们为 AWS SQS 提供了检测功能。这可以与AWS SDK Go一起使用。
有关 AWS SDK Go 检测的更多信息,请参见 模块/apmawssdkgo。
Amazon SNS
编辑我们为 AWS SNS 提供了检测功能。这可以与AWS SDK Go一起使用。
有关 AWS SDK Go 检测的更多信息,请参见 模块/apmawssdkgo。