This documentation contains work-in-progress information for future Elastic Stack and Cloud releases. Use the version selector to view supported release docs. It also contains some Elastic Cloud serverless information. Check out our serverless docs for more details.
Go Agent version 1.x
editGo Agent version 1.x
edit1.15.0 - 2021/12/08
edit-
Deprecate
http.request.socket.encrypted
and stop recording it inmodule/apmhttp
,module/apmgrpc
andmodule/apmfiber
. #1129 - Collect and send span destination service timing statistics about the dropped spans to the apm-server. #1132
- Experimental support to compress short exit spans into a composite span. Disabled by default. #1134
-
Discard exit spans shorter or equal than
ELASTIC_APM_EXIT_SPAN_MIN_DURATION
. Defaults to1ms
. #1138 - module/apmprometheus: add support for mapping prometheus histograms. #1145
- Fixed a bug where errors in cloud metadata discovery could lead to the process aborting during initialisation #1158
- Fixed a data race related to HTTP request header sanitisation #1159
-
apm.CaptureError
,apm.Error.SetTransaction
, andapm.Error.SetSpan
will now set the associated transaction or span’s default outcome to "failure" #1160
1.14.0 - 2021/09/22
edit-
span: automatically infer
destination.service.resource
information when the span is an exit span and deprecatedestination.service.name
anddestination.service.type
#1003 - module/apmhttp: add apmhttp.WithClientSpanType ClientOption to set the span type of http client requests #1106
- module/apmazure: introduce instrumentation module for Azure blob, queue, and file storage #1109
-
module/apmelasticsearch: propagete
Traceparent
andTracestate
headers to Elasticsearch #1002 - module/apmfiber: introduce instrumentation module for Fiber web framework #999
- module/apmawssdkgo: fix a bug where the module would panic when an unsupported service is used #1006
-
module/apmfasthttp: report the correct HTTP Status Code instead of always reporting
200
#1104
1.13.1 - 2021/08/05
edit- Fix concurrency bugs in breakdown metrics and module/apmhttp.WithClientTrace #997
1.13.0 - 2021/07/28
edit- Prefer w3c traceparent header over legacy elastic-apm-traceparent #963
- Context.SetUsername now takes precedence over HTTP user info from Context.SetHTTPRequest #973
- module/apmhttp: fix a potential panic in WithClientTrace #989
- add support for go-restful v3 #968
- add fasthttp support #957
- module/apmgin: support multiple routes using the same handler #983
- add apm-server CA cert functionality #982
1.12.0 - 2021/05/25
edit- module/apmgrpc: fix status code to outcome mapping #902
- module/apmawssdkgo: add support for instrumenting s3 RPC calls #927
- module/apmawssdkgo: add support for instrumenting dynamodb RPC calls #928
- SpanContext.SetDestinationService is a no-op if either Name or Resource is empty #931
- module/apmawssdkgo: add support for instrumenting sqs RPC calls #933
- module/apmawssdkgo: add support for instrumenting sns RPC calls #938
- Parse "//" comments in SQL/CQL #937
- Fix CaptureError to capture the request body when ELASTIC_APM_CAPTURE_BODY is enabled #906
- module/apmgrpc: record underlying HTTP/2 context #904
- module/apmot: handle http.host tag as url.Host #954
- apm: add add ParentID methods to Span and Transaction #956
1.10.0 - 2021/01/20
edit1.9.0 - 2020/11/02
edit- module/apmgoredisv8: introduce new package to support go-redis v8 #780
- module/apmhttp: introduce httptrace client option #788
- module/apmsql: add support for database/sql/driver.Validator #791
-
Record sample rate on transactions and spans, propagate through
tracestate
#804 - module/apmredigo: change redigo dependency to v1.8.2 #807
- Deprecate IGNORE_URLS, replace with TRANSACTION_IGNORE_URLS #811
- Tracer.Close now waits for the transport goroutine to end before returning #816
- Relax Kubernetes pod UID discovery rules #819
- Add transaction and span outcome #820
- Add cloud metadata, configurable with ELASTIC_APM_CLOUD_PROVIDER #823
- Round ELASTIC_APM_SAMPLING_RATE with 4 digits precision #828
- module/apmhttp: implement io.ReaderFrom in wrapped http.ResponseWriter #830
- Fixed Transaction.Discard so that it sets TransactionData to nil #836
- module/apmsql/pgxv4: add support for pgx driver #831
- module/apmgormv2: add support for gorm.io (GORM v2) #825
1.8.0 - 2020/05/06
edit1.7.0 - 2020/01/10
edit1.6.0 - 2019/11/17
edit- module/apmhttp: add WithClientRequestName option #609
- module/apmhttp: add WithPanicPropagation function #611
- module/apmgoredis: add Client.RedisClient #613
- Introduce apm.TraceFormatter, for formatting trace IDs #635
- Report error cause(s), add support for errors.Unwrap #638
-
Setting
ELASTIC_APM_TRANSACTION_MAX_SPANS
to 0 now disables all spans #640 - module/apmzerolog: add Writer.MinLevel #641
- Introduce SetLabel and deprecate SetTag #642
-
Support central config for
ELASTIC_APM_CAPTURE_BODY
andELASTIC_APM_TRANSACTION_MAX_SPANS
#648 - module/apmgorm: sql.ErrNoRows is no longer reported as an error #645
- Server URL path is cleaned/canonicalizsed in order to avoid 301 redirects #658
-
context.request.socket.remote_address
now reports the peer address #662 - Experimental support for periodic CPU/heap profiling #666
- module/apmnegroni: introduce tracing Negroni middleware #671
- Unescape hyphens in k8s pod UIDs when the systemd cgroup driver is used #672
- Read and propagate the standard W3C "traceparent" header #674
1.5.0 - 2019/07/31
edit- Add Context.SetCustom #581
- Add support for extracting UUID-like container IDs #577
- Introduce transaction/span breakdown metrics #564
- Optimised HTTP request body capture #592
- Fixed transaction encoding to drop tags (and other context) for non-sampled transactions #593
- Introduce central config polling #591
- Fixed apmgrpc client interceptor, propagating trace context for non-sampled transactions #602
1.4.0 - 2019/06/20
edit- Update opentracing-go dependency to v1.1.0
- Update HTTP routers to return "<METHOD> unknown route" if route cannot be matched #486
- module/apmchi: introduce instrumentation for go-chi/chi router #495
- module/apmgoredis: introduce instrumentation for the go-redis/redis client #505
- module/apmsql: exposed the QuerySignature function #515
- module/apmgopg: introduce instrumentation for the go-pg/pg ORM #516
- module/apmmongo: set minimum Go version to Go 1.10 #522
- internal/sqlscanner: bug fix for multi-byte rune handling #535
- module/apmgrpc: added WithServerRequestIgnorer server option #531
-
Introduce
ELASTIC_APM_GLOBAL_LABELS
config #539 -
module/apmgorm: register
row_query
callbacks #532 -
Introduce
ELASTIC_APM_STACK_TRACE_LIMIT
config #559 - Include agent name/version and Go version in User-Agent #560
-
Truncate
error.culprit
at 1024 chars #561
1.3.0 - 2019/03/20
edit- Rename "metricset.labels" to "metricset.tags" #438
-
Introduce
ELASTIC_APM_DISABLE_METRICS
to disable metrics with matching names #439 - module/apmelasticsearch: introduce instrumentation for Elasticsearch clients #445
- module/apmmongo: introduce instrumentation for the MongoDB Go Driver #452
- Introduce ErrorDetailer interface #453
- module/apmhttp: add CloseIdleConnectons and CancelRequest to RoundTripper #457
- Allow specifying transaction (span) ID via TransactionOptions/SpanOptions #463
- module/apmzerolog: introduce zerolog log correlation and exception-tracking writer #428
- module/apmelasticsearch: capture body for \_msearch, template and rollup search #470
- Ended Transactions/Spans may now be used as parents #478
- Introduce apm.DetachedContext for async/fire-and-forget trace propagation #481
- module/apmechov4: add a copy of apmecho supporting echo/v4 #477
1.2.0 - 2019/01/17
edit- Add "transaction.sampled" to errors #410
- Enforce license header in source files with go-licenser #411
- module/apmot: ignore "follows-from" span references #414
- module/apmot: report error log records #415
-
Introduce
ELASTIC_APM_CAPTURE_HEADERS
to control HTTP header capture #418 - module/apmzap: introduce zap log correlation and exception-tracking hook #426
- type Error implements error interface #399
- Add "transaction.type" to errors #433
- Added instrumentation-specific Go modules (i.e. one for each package under apm/module) #405
1.1.3 - 2019/01/06
edit1.1.0 - 2018/12/12
edit- Stop pooling Transaction/Span/Error, introduce internal pooled objects #319
- Enable metrics collection with default interval of 30s #322
-
ELASTIC_APM_SERVER_CERT
enables server certificate pinning #325 - Add Docker container ID to metadata #330
- Added distributed trace context propagation to apmgrpc #335
-
Introduce
Span.Subtype
,Span.Action
#332 - apm.StartSpanOptions fixed to stop ignoring options #326
- Add Kubernetes pod info to metadata #342
- module/apmsql: don’t report driver.ErrBadConn, context.Canceled (#346, #348)
- Added ErrorLogRecord.Error field, for associating an error value with a log record #380
- module/apmlogrus: introduce logrus exception-tracking hook, and log correlation #381
- module/apmbeego: introduce Beego instrumentation module #386
- module/apmhttp: report status code for client spans #388
1.0.0 - 2018/11/14
edit- Implement v2 intake protocol #180
- Unexport Transaction.Timestamp and Span.Timestamp #207
- Add jitter (+/-10%) to backoff on transport error #212
- Add support for span tags #213
- Require units for size configuration #223
- Require units for duration configuration #211
- Add support for multiple server URLs with failover #233
- Add support for mixing OpenTracing spans with native transactions/spans #235
- Drop SetHTTPResponseHeadersSent and SetHTTPResponseFinished methods from Context #238
- Stop setting custom context (gin.handler) in apmgin #238
- Set response context in errors reported by web modules #238
- module/apmredigo: introduce gomodule/redigo instrumentation #248
- Update Sampler interface to take TraceContext #243
- Truncate SQL statements to a maximum of 10000 chars, all other strings to 1024 (#244, #276)
- Add leading slash to URLs in transaction/span context #250
-
Add
Transaction.Context
method for setting framework #252 - Timestamps are now reported as usec since epoch, spans no longer use "start" offset #257
-
ELASTIC_APM_SANITIZE_FIELD_NAMES
andELASTIC_APM_IGNORE_URLS
now use wildcard matching #260 - Changed top-level package name to "apm", and canonical import path to "go.elastic.co/apm" #202
- module/apmrestful: introduce emicklei/go-restful instrumentation #270
- Fix panic handling in web instrumentations #273
- Migrate internal/fastjson to go.elastic.co/fastjson #275
- Report all HTTP request/response headers #280
- Drop Context.SetCustom #284
- Reuse memory for tags #286
- Return a more helpful error message when /intake/v2/events 404s, to detect old servers #290
- Implement test service for w3c/distributed-tracing test harness #293
- End HTTP client spans on response body closure #289
- module/apmgrpc requires Go 1.9+ #300
- Invalid tag key characters are replaced with underscores #308
-
ELASTIC_APM_LOG_FILE
andELASTIC_APM_LOG_LEVEL
introduced #313