This page describes the technologies supported by the Elastic APM Go agent.
If your favorite technology is not supported yet, you can vote for it by participating in our survey, or joining the conversation in the Discuss forum. We will use the results of the survey and Discuss topics to add support for the most requested technologies.
If you would like to get more involved, take a look at the contributing guide.
The Elastic APM Go agent naturally requires Go. We will support, at a minimum, the last two major Go releases as described by Go’s Release Policy. Older versions of Go will be supported on a best-effort basis.
We currently test the agent with all major versions of Go since 1.8. Some integration modules may require a more recent version of Go due to third-party dependencies.
We support several third-party web frameworks, as well as Go’s standard
package. Regardless of the framework, we create a transaction for each incoming
request, and name the transaction after the registered route.
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.
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.
See module/apmgin for more information about Gin instrumentation.
See module/apmbeego for more information about Beego instrumentation.
See module/apmgorilla for more information about gorilla/mux instrumentation.
See module/apmrestful for more information about go-restful instrumentation.
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.
database/sql support we provide additional support for the
postgres, mysql, and sqlite dialects.
See module/apmgorm for more information about GORM instrumentation.
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.
See module/apmredigo for more information about Redigo instrumentation.
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
See module/apmelasticsearch for more information about Elasticsearch client instrumentation.
See module/apmmongo for more information about the MongoDB Go Driver instrumentation.
We support gRPC v1.3.0 and greater. We provide unary 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.
Code examples are available at https://godoc.org/go.elastic.co/apm/module/apmgokit for getting started.
See module/apmlogrus for more information about Logrus integration.
See module/apmzap for more information about Zap integration.
See module/apmzerolog for more information about Zerolog integration.