Go Agent version 1.xedit

1.15.0 - 2021/12/08edit

  • Deprecate http.request.socket.encrypted and stop recording it in module/apmhttp, module/apmgrpc and module/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 to 1ms. #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, and apm.Error.SetSpan will now set the associated transaction or span’s default outcome to "failure" #1160

1.14.0 - 2021/09/22edit

  • span: automatically infer destination.service.resource information when the span is an exit span and deprecate destination.service.name and destination.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 and Tracestate 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/05edit

  • Fix concurrency bugs in breakdown metrics and module/apmhttp.WithClientTrace #997

1.13.0 - 2021/07/28edit

  • 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

View release

1.12.0 - 2021/05/25edit

View release

  • 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.11.0 - 2021/02/01edit

View release

  • Make TRANSACTION_IGNORE_URLS dynamically configurable: #872

1.10.0 - 2021/01/20edit

View release

  • module/apmsql: add tracingDriver.Unwrap method to get underlying driver #849
  • module/apmgopgv10: add support for github.com/go-pg/pg/v10 #857
  • Enable central configuration of "sanitize_field_names" #856
  • module/apmgrpc: set span destination context #861

1.9.0 - 2020/11/02edit

View release

  • 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/06edit

View release

  • Add "recording" config option, to dynamically disable event recording #737
  • Enable central configuration of "stack_frames_min_duration" and "stack_trace_limit" #742
  • Implement "CloseIdleConnections" on the Elasticsearch RoundTripper #750
  • Fix apmot nil pointer dereference in Tracer.Inject #763

1.7.2 - 2020/03/19edit

View release

  • Update cucumber/godog to 0.8.1 #733

1.7.1 - 2020/03/05edit

View release

  • Fix segfault on 32-bit architectures #728

1.7.0 - 2020/01/10edit

View release

  • Add span.context.destination.* #664
  • transport: fix Content-Type for pprof data #679
  • Add "tracestate" propagation #690
  • Add support for API Key auth #698
  • module/apmsql: report rows affected #700

1.6.0 - 2019/11/17edit

View release

  • 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 and ELASTIC_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/31edit

View release

  • 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/20edit

View release

  • 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/20edit

View release

  • 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/17edit

View release

  • 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/06edit

View release

  • Remove the agent.* metrics #407
  • Add support for new github.com/pkg/errors.Frame type #409

1.1.2 - 2019/01/03edit

View release

  • Fix data race between Tracer.Active and Tracer.loop #406

1.1.1 - 2018/12/13edit

View release

  • CPU% metrics are now correctly in the range [0,1]

1.1.0 - 2018/12/12edit

View release

  • 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/14edit

View release

  • 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 and ELASTIC_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 and ELASTIC_APM_LOG_LEVEL introduced #313