支持的技术编辑

此页面描述了 Elastic APM Go Agent 支持的技术。

如果您的最爱技术尚未得到支持,您可以通过参与我们的 调查 或加入 讨论论坛 中的对话来投票。我们将使用调查结果和讨论主题来添加对最常请求的技术的支持。

如果您想了解更多参与方式,请查看 贡献指南

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/fasthttpv1.26.0 及更高版本。

有关 fasthttp 检测的更多信息,请参阅 module/apmfasthttp

httprouter编辑

julienschmidt/httprouter 不使用语义版本控制,但其 API 相对稳定。任何最近的版本都应该与 Elastic APM Go Agent 兼容。

有关 httprouter 检测的更多信息,请参阅 module/apmhttprouter

Echo编辑

我们支持 Echo Web 框架,v3.3.5 及更高版本。

我们为 Echo v3 和 v4 版本提供不同的包:module/apmecho 用于 Echo v3.x,module/apmechov4 用于 Echo v4.x。

有关 Echo 检测的更多信息,请参阅 module/apmecho

Gin编辑

我们支持 Gin Web 框架,v1.2 及更高版本。

有关 Gin 检测的更多信息,请参阅 module/apmgin

Fiber编辑

我们支持 Fiber Web 框架,v2.18.0 及更高版本。

我们仅为 Fiber v2 提供包。有关 Fiber 检测的更多信息,请参阅 module/apmfiber

Beego编辑

我们支持 Beego Web 框架,v1.10.0 及更高版本。

有关 Beego 检测的更多信息,请参阅 module/apmbeego

gorilla/mux编辑

我们支持 gorilla/mux v1.6.1 及更高版本。由于使用了 gorilla.Middleware,因此不支持旧版本。

有关 gorilla/mux 检测的更多信息,请参阅 module/apmgorilla

go-restful编辑

我们支持 go-restful2.0.0 及更高版本。

有关 go-restful 检测的更多信息,请参阅 module/apmrestful

chi编辑

我们支持 chiv4.0.0 及更高版本。

有关 chi 检测的更多信息,请参阅 module/apmchi

negroni编辑

我们支持 negroniv1.0.0 及更高版本。

有关 negroni 检测的更多信息,请参阅 module/apmnegroni

数据库编辑

database/sql编辑

我们支持使用任何 database/sql 驱动程序跟踪请求,前提是驱动程序已在 Elastic APM Go Agent 中注册。将为执行的每个语句创建跨度。

当使用以下驱动程序之一时,Elastic APM Go Agent 将能够解析数据源名称,并在其发出的跨度中提供更多上下文

有关 database/sql 检测的更多信息,请参阅 module/apmsql

GORM编辑

我们支持 GORM 对象关系映射库,v1.9 及更高版本。将为每个创建、查询、更新和删除操作创建跨度。

database/sql 支持一样,我们为 postgres、mysql 和 sqlite 方言提供额外支持。

我们为 Gorm v1 和 v2 版本提供不同的包:module/apmgorm 用于 Gorm v1.x,module/apmgormv2 用于 Gorm v2.x。

有关 GORM 检测的更多信息,请参阅 module/apmgormmodule/apmgormv2

go-pg/pg编辑

我们支持 go-pg/pg PostgreSQL ORM,v8.0.4。将为每个数据库操作创建跨度。

有关 go-pg 检测的更多信息,请参阅 module/apmgopg

Cassandra (gocql)编辑

GoCQL 没有稳定的 API,因此我们将尽力支持最新的 API 以及旧版本的 API。将为每个查询创建跨度。当使用批处理 API 时,将为批处理创建跨度,并为批处理中的每个查询创建子跨度。

有关 GoCQL 检测的更多信息,请参阅 module/apmgocql

Redis (gomodule/redigo)编辑

我们支持 Redigov2.0.0 及更高版本。我们提供帮助程序函数,用于将 Redis 命令报告为跨度。

有关 Redigo 监控的更多信息,请参见 module/apmredigo

Redis (go-redis/redis)编辑

我们支持 go-redisv6.15.3。我们提供用于将 Redis 命令报告为跨度的辅助函数。

有关 go-redis 监控的更多信息,请参见 module/apmgoredis

Elasticsearch编辑

我们为 Elasticsearch 客户端提供监控。这可用于 go-elasticsearcholivere/elastic 客户端,也应该可用于任何其他提供配置基础 net/http.RoundTripper 方法的客户端。

有关 Elasticsearch 客户端监控的更多信息,请参见 module/apmelasticsearch

MongoDB编辑

我们为官方 MongoDB Go 驱动程序v1.0.0 及更高版本提供监控。将在包含事务的上下文中执行的每个 MongoDB 命令创建跨度。

有关 MongoDB Go 驱动程序监控的更多信息,请参见 module/apmmongo

DynamoDB编辑

我们为 AWS DynamoDB 提供监控。这可用于 AWS SDK Go

有关 AWS SDK Go 监控的更多信息,请参见 module/apmawssdkgo

RPC 框架编辑

gRPC编辑

我们支持 gRPC v1.3.0 及更高版本。我们为客户端和服务器提供一元和流拦截器。服务器拦截器将为每个传入请求创建一个事务,而客户端拦截器将为每个传出请求创建一个跨度。

有关 gRPC 监控的更多信息,请参见 module/apmgrpc

服务框架编辑

Go kit编辑

当使用 gRPC 或 HTTP 传输时,我们支持跟踪 Go kit 客户端和服务器,分别通过 module/apmgrpcmodule/apmhttp

可在 https://pkg.go.dev/go.elastic.co/apm/module/apmgokit/v2 找到入门代码示例。

日志记录框架编辑

Logrus编辑

我们支持与 Logrusv1.1.0 及更高版本进行日志关联和异常跟踪。

有关 Logrus 集成的更多信息,请参见 module/apmlogrus

Zap编辑

我们支持与 Zapv1.0.0 及更高版本进行日志关联和异常跟踪。

有关 Zap 集成的更多信息,请参见 module/apmzap

Zerolog编辑

我们支持与 Zerologv1.12.0 及更高版本进行日志关联和异常跟踪。

有关 Zerolog 集成的更多信息,请参见 module/apmzerolog

对象存储编辑

Amazon S3编辑

我们为 AWS S3 提供监控。这可用于 AWS SDK Go

有关 AWS SDK Go 监控的更多信息,请参见 module/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 监控的更多信息,请参见 module/apmawssdkgo

Amazon SNS编辑

我们为 AWS SNS 提供监控。这可用于 AWS SDK Go

有关 AWS SDK Go 监控的更多信息,请参见 module/apmawssdkgo