Skip to content

Latest commit

 

History

History
356 lines (252 loc) · 11 KB

supported-tech.asciidoc

File metadata and controls

356 lines (252 loc) · 11 KB

Supported Technologies

This page describes the technologies supported by the Elastic APM Go agent.

If your favorite technology is not supported yet, you start a conversation in the Discuss forum.

If you would like to get more involved, take a look at the contributing guide.

Go

The Elastic APM Go agent naturally requires Go. We support the last two major Go releases as described by Go’s Release Policy:

Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.

Web Frameworks

We support several third-party web frameworks, as well as Go’s standard net/http package. Regardless of the framework, we create a transaction for each incoming request, and name the transaction after the registered route.

fasthttp

We support valyala/fasthttp, v1.26.0 and greater.

See module/apmfasthttp for more information about fasthttp instrumentation.

httprouter

julienschmidt/httprouter does not use semantic versioning, but its API is relatively stable. Any recent version should be compatible with the Elastic APM Go agent.

See module/apmhttprouter for more information about httprouter instrumentation.

Echo

We support the Echo web framework, v3.3.5 and greater.

We provide different packages for the Echo v3 and v4 versions: module/apmecho for Echo v3.x, and module/apmechov4 for Echo v4.x.

See module/apmecho for more information about Echo instrumentation.

Gin

We support the Gin web framework, v1.2 and greater.

See module/apmgin for more information about Gin instrumentation.

Fiber

We support the Fiber web framework, v2.18.0 and greater.

We provide package only for the Fiber v2. See module/apmfiber for more information about Fiber instrumentation.

Beego

We support the Beego web framework, v1.10.0 and greater.

See module/apmbeego for more information about Beego instrumentation.

gorilla/mux

We support gorilla/mux v1.6.1 and greater. Older versions are not supported due to the use of gorilla.Middleware.

See module/apmgorilla for more information about gorilla/mux instrumentation.

go-restful

We support go-restful, 2.0.0 and greater.

See module/apmrestful for more information about go-restful instrumentation.

chi

We support chi, v4.0.0 and greater.

See module/apmchi for more information about chi instrumentation.

negroni

We support negroni, v1.0.0 and greater.

See module/apmnegroni for more information about negroni instrumentation.

Databases

database/sql

We support tracing requests with any database/sql driver, provided the driver is registered with the Elastic APM Go agent. Spans will be created for each statemented executed.

When using one of the following drivers, the Elastic APM Go agent will be able to parse the datasource name, and provide more context in the spans it emits:

See module/apmsql for more information about database/sql instrumentation.

GORM

We support the GORM object-relational mapping library, v1.9 and greater. Spans will be created for each create, query, update, and delete operation.

As with database/sql support we provide additional support for the postgres, mysql, and sqlite dialects.

We provide different packages for the Gorm v1 and v2 versions: module/apmgorm for Gorm v1.x, and module/apmgormv2 for Gorm v2.x.

See module/apmgorm or module/apmgormv2 for more information about GORM instrumentation.

go-pg/pg

We support the go-pg/pg PostgreSQL ORM, v8.0.4. Spans will be created for each database operation.

See module/apmgopg for more information about go-pg instrumentation.

Cassandra (gocql)

GoCQL does not have a stable API, so we will provide support for the most recent API, and older versions of the API on a best-effort basis. Spans will be created for each query. When the batch API is used, a span will be created for the batch, and a sub-span is created for each query in the batch.

See module/apmgocql for more information about GoCQL instrumentation.

Redis (gomodule/redigo)

We support Redigo, v2.0.0 and greater. We provide helper functions for reporting Redis commands as spans.

See module/apmredigo for more information about Redigo instrumentation.

Redis (go-redis/redis)

We support go-redis, v6.15.3. We provide helper functions for reporting Redis commands as spans.

See module/apmgoredis for more information about go-redis instrumentation.

Elasticsearch

We provide instrumentation for Elasticsearch clients. This is usable with the go-elasticsearch and olivere/elastic clients, and should also be usable with any other clients that provide a means of configuring the underlying net/http.RoundTripper.

See module/apmelasticsearch for more information about Elasticsearch client instrumentation.

MongoDB

We provide instrumentation for the official MongoDB Go Driver, v1.0.0 and greater. Spans will be created for each MongoDB command executed within a context containing a transaction.

See module/apmmongo for more information about the MongoDB Go Driver instrumentation.

DynamoDB

We provide instrumentation for AWS DynamoDB. This is usable with AWS SDK Go.

See module/apmawssdkgo for more information about AWS SDK Go instrumentation.

RPC Frameworks

gRPC

We support gRPC v1.3.0 and greater. We provide unary and stream interceptors for both the client and server. The server interceptor will create a transaction for each incoming request, and the client interceptor will create a span for each outgoing request.

See module/apmgrpc for more information about gRPC instrumentation.

Service Frameworks

Go kit

We support tracing Go kit clients and servers when using the gRPC or HTTP transport, by way of module/apmgrpc and module/apmhttp respectively.

Code examples are available at https://pkg.go.dev/go.elastic.co/apm/module/apmgokit/v2 for getting started.

Logging frameworks

Logrus

We support log correlation and exception tracking with Logrus, v1.1.0 and greater.

See module/apmlogrus for more information about Logrus integration.

Zap

We support log correlation and exception tracking with Zap, v1.0.0 and greater.

See module/apmzap for more information about Zap integration.

Zerolog

We support log correlation and exception tracking with Zerolog, v1.12.0 and greater.

See module/apmzerolog for more information about Zerolog integration.

Slog

We support log correlation and error tracking with Slog, v1.21.0 and greater.

See module/apmslog for more information about slog integration.

Object Storage

Amazon S3

We provide instrumentation for AWS S3. This is usable with AWS SDK Go.

See module/apmawssdkgo for more information about AWS SDK Go instrumentation.

Azure Storage

We provide instrumentation for Azure Storage. This is usable with:

  • github.com/Azure/azure-storage-blob-go/azblob[Azure Blob Storage]

  • github.com/Azure/azure-storage-queue-go/azqueue[Azure Queue Storage]

  • github.com/Azure/azure-storage-file-go/azfile[Azure File Storage]

See module/apmazure for more information about Azure SDK Go instrumentation.

Messaging Systems

Amazon SQS

We provide instrumentation for AWS SQS. This is usable with AWS SDK Go.

See module/apmawssdkgo for more information about AWS SDK Go instrumentation.

Amazon SNS

We provide instrumentation for AWS SNS. This is usable with AWS SDK Go.

See module/apmawssdkgo for more information about AWS SDK Go instrumentation.