支持的技术

编辑

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

如果您的常用技术尚未得到支持,您可以在 Discuss 论坛 中发起讨论。

如果您想了解更多信息,请查看 贡献指南

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 检测的更多信息,请参见 模块/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 Web 框架,v1.2 及更高版本。

有关 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-restful2.0.0 及更高版本。

有关 go-restful 检测的更多信息,请参见 模块/apmrestful

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

有关 chi 检测的更多信息,请参见 模块/apmchi

negroni

编辑

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

有关 negroni 检测的更多信息,请参见 模块/apmnegroni

数据库

编辑

database/sql

编辑

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

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

有关 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)

编辑

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

有关 Redigo 检测的更多信息,请参见 模块/apmredigo

Redis (go-redis/redis)

编辑

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

有关 go-redis 检测的更多信息,请参见 模块/apmgoredis

Elasticsearch

编辑

我们为 Elasticsearch 客户端提供检测功能。这可用于 go-elasticsearcholivere/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(版本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