Skip to content

Latest commit

 

History

History
511 lines (395 loc) · 24.7 KB

CHANGELOG.asciidoc

File metadata and controls

511 lines (395 loc) · 24.7 KB
Note
Release notes are best read in our documentation at elastic.co

Unreleased

Go Agent version 2.x

2.6.2 - 2024/08/29

  • update version string

2.6.1 - 2024/08/29

  • apm.DefaultTracer misbehaves when transport configuration is invalid by {pull}1618[#1618]

  • gin web framework does not properly sanitize filename parameter of Context.FileAttachment function {pull}1620[#1620]

  • support all upstream GOOS {pull}1646[#1646]

2.6.0 - 2024/04/11

  • Bump minimum Go version to 1.21 {pull}1602[#1602]

  • module/apmotel: fix compatibility issue with newer version of otel libs. {pull}1605[#1605]

2.5.0 - 2024/03/12

  • module/apmgorm: Switch from github.com/denisenkom/go-mssqldb package to github.com/microsoft/go-mssqldb. {pull}1569[#1569]

  • module/apmrestful: Upgrade github.com/emicklei/go-restful package to gituhub.co/emicklei/go-restful/v3. {pull}1580[#1580]

2.4.8 - 2024/01/16

  • module/apmotel: Add nil and recording check to span.RecordError {pull}1566[#1566]

2.4.7 - 2023/11/23

  • Bump submodule dependency version {pull}1546[#1546]

2.4.6 - 2023/11/22

  • module/apmotel: Fix compatibility issue with newer version of otel {pull}1544[#1544]

2.4.5 - 2023/10/11

  • module/apmotel: Fix panic on multiple span close calls {pull}1512[#1512]

2.4.4 - 2023/08/29

  • module/apmotel: Bumped minimum OpenTelemetry version {pull}1501[#1501]

  • module/apmotel: Return usable spans when retrieving them from otel.SpanFromContext {pull}1478[#1478]

  • Fixed concurrent map write condition where some child spans couldn’t acquire the transaction lock {pull}1487[#1487]

2.4.3 - 2023/06/22

  • Fixed a data race in HTTP client instrumentation {pull}1472[#1472]

  • Bumped minimum Go version to 1.19 {pull}1453[#1453]

  • Fixed mixing of OTel and Elastic APM instrumentation {pull}1450[#1450]

  • Updated to stable OTel metrics API {pull}1448[#1448]

2.4.2 - 2023/05/22

  • module/apmotel: handle resources {pull}1424[#1424]

  • Drop x/net dependency {pull}1434[#1434]

  • module/apmotel: bump go.opentelemetry.io/otel/metric {pull}1435[#1435]

  • module/apmotel: follow APM OTel spec and prefer delta temporality {pull}1437[#1437]

  • module/apmotel: set the proper trace ID and span ID in trace context {pull}1438[#1438]

  • module/apmotel: handle context flags when creating remote transactions and spans {pull}1441[#1441]

2.4.1 - 2023/04/27

  • Downgrade OpenTelemetry metrics from v1.15.0-rc.2 to 0.37.0 {pull}1420[#1420]

  • Mark OpenTelemetry metrics as technical preview {pull}1419[#1419]

2.4.0 - 2023/04/26

  • Add bridge to support OpenTelemetry metrics {pull}1407[#1407]

  • Add custom SDK support OpenTelemetry traces {pull}1410[#1410]

2.3.0 - 2023/03/30

  • Ensure minimum retry interval of 5 seconds for fetching central configuration {pull}1337[#1337]

  • Update span compression logic to handle service.target.* fields {pull}1339[#1339]

  • module/apmchiv5: Add panic propogation option {pull}1359[#1359]

  • module/apmgormv2: Add sqlserver support {pull}1356[#1356]

  • module/apmsql: Add sqlserver support {pull}1356[#1356]

  • Update compressed spans to use service.target.* fields to derive its name {pull}1336[#1336]

  • module/apmpgxv5: new instrumentation module for jackc/pgx v5 with enhanced support e.g. detailed BATCH and CONNECT traces {pull}1364[#1364]

  • Add support for Unwrap []error {pull}1400[#1400]

2.2.0 - 2022/10/31

  • Global labels are now parsed when the tracer is constructed, instead of parsing only once on package initialization {pull}1290[#1290]

  • Rename span_frames_min_duration to span_stack_trace_min_duration {pull}1285[#1285]

  • Ignore *principal\* headers by default {pull}1332[#1332]

  • Add apmpgx module for postgres tracing with jackc/pgx driver enhanced support e.g. Copy and Batch statements {pull}1301[#1301]

  • Disable same-kind and enable exact-match compression by default {pull}1256[#1256]

  • module/apmechov4: add WithRequestName option {pull}1268[#1268]

  • Added support for adding span links when starting transactions and spans {pull}1269[#1269]

  • module/apmawssdkgo: fixed a panic related to drop spans {pull}1273[#1273]

  • Added support for the trace_continuation_strategy {pull}1270[#1270]

  • transaction.type and span.type are now set to "custom" if an empty string is specified {pull}1272[#1272]

  • We now capture the database instance name in service.target.*, for improved backend granularity {pull}1279[#1279]

  • Improved Kubernetes pod UID and container ID discovery coverage {pull}1288[#1288]

  • Fixed span.name for AWS SNS spans to match the spec {pull}1286[#1286]

  • module/apmgin: add WithPanicPropagation option {pull}1314[#1314]

  • Exit spans may now have non-exit child spans if they have the same type and subtype {pull}1320[#1320]

  • Updated instrumentation modules to mark spans as exit spans where possible {pull}1317[#1317]

2.1.0 - 2022/05/20

  • Replace authorization with auth pattern for sanitizing field names {pull}1230[#1230]

  • Fetch initial server version async to prevent blocking NewTracer for 10 seconds {pull}1239[#1239]

  • Fix race in apm.DefaultTracer which could lead to multiple tracers being created {pull}1248[#1248]

2.0.0 - 2022/03/17

  • Record transaction.name on errors {pull}1177[#1177]

  • Fix panic in apmgocql {pull}1180[#1180]

  • Stop recording unused transaction.duration.* and transaction.breakdown.count metrics {pull}1167[#1167]

  • Make tracestate parsing more lenient, according to W3c spec, allowing duplicate vendor keys {pull}1183[#1183]

  • Introduced transport.NewHTTPTransportOptions {pull}1168[#1168]

  • Change ELASTIC_APM_SPAN_FRAMES_MIN_DURATION special cases to match agent spec {pull}1188[#1188]

  • Remove stacktrace.ContextSetter {pull}1187[#1187]

  • Drop support for versions of Go prior to 1.15.0 {pull}1190[#1190]

  • Replace apm.DefaultTracer with an initialization function {pull}1189[#1189]

  • Remove transport.Default, construct a new Transport in each new tracer {pull}1195[#1195]

  • Add service name and version to User-Agent header {pull}1196[#1196]

  • Remove WarningLogger, add Warningf methe to Logger {pull}1205[#1205]

  • Replace Sampler with ExtendedSampler {pull}1206[#1206]

  • Drop unsampled txs when connected to an APM Server >= 8.0 {pull}1208[#1208]

  • Removed SetTag {pull}1218[#1218]

  • Unexport Tracer’s fields — TracerOptions must be used instead {pull}1219[#1219]

Go Agent version 1.x

1.15.0 - 2021/12/08

  • Deprecate http.request.socket.encrypted and stop recording it in module/apmhttp, module/apmgrpc and module/apmfiber. {pull}1129[#1129]

  • Collect and send span destination service timing statistics about the dropped spans to the apm-server. {pull}1132[#1132]

  • Experimental support to compress short exit spans into a composite span. Disabled by default. {pull}1134[#1134]

  • Discard exit spans shorter or equal than ELASTIC_APM_EXIT_SPAN_MIN_DURATION. Defaults to 1ms. {pull}1138[#1138]

  • module/apmprometheus: add support for mapping prometheus histograms. {pull}1145[#1145]

  • Fixed a bug where errors in cloud metadata discovery could lead to the process aborting during initialisation {pull}1158[#1158]

  • Fixed a data race related to HTTP request header sanitisation {pull}1159[#1159]

  • apm.CaptureError, apm.Error.SetTransaction, and apm.Error.SetSpan will now set the associated transaction or span’s default outcome to "failure" {pull}1160[#1160]

1.14.0 - 2021/09/22

  • span: automatically infer destination.service.resource information when the span is an exit span and deprecate destination.service.name and destination.service.type {pull}1003[#1003]

  • module/apmhttp: add apmhttp.WithClientSpanType ClientOption to set the span type of http client requests {pull}1106[#1106]

  • module/apmazure: introduce instrumentation module for Azure blob, queue, and file storage {pull}1109[#1109]

  • module/apmelasticsearch: propagete Traceparent and Tracestate headers to Elasticsearch {pull}1002[#1002]

  • module/apmfiber: introduce instrumentation module for Fiber web framework {pull}999[#999]

  • module/apmawssdkgo: fix a bug where the module would panic when an unsupported service is used {pull}1006[#1006]

  • module/apmfasthttp: report the correct HTTP Status Code instead of always reporting 200 {pull}1104[#1104]

1.13.1 - 2021/08/05

  • Fix concurrency bugs in breakdown metrics and module/apmhttp.WithClientTrace {pull}997[#997]

1.13.0 - 2021/07/28

  • Prefer w3c traceparent header over legacy elastic-apm-traceparent {pull}963[#963]

  • Context.SetUsername now takes precedence over HTTP user info from Context.SetHTTPRequest {pull}973[#973]

  • module/apmhttp: fix a potential panic in WithClientTrace {pull}989[#989]

  • add support for go-restful v3 {pull}968[#968]

  • add fasthttp support {pull}957[#957]

  • module/apmgin: support multiple routes using the same handler {pull}983[#983]

  • add apm-server CA cert functionality {pull}982[#982]

1.12.0 - 2021/05/25

  • module/apmgrpc: fix status code to outcome mapping {pull}902[#902]

  • module/apmawssdkgo: add support for instrumenting s3 RPC calls {pull}927[#927]

  • module/apmawssdkgo: add support for instrumenting dynamodb RPC calls {pull}928[#928]

  • SpanContext.SetDestinationService is a no-op if either Name or Resource is empty {pull}931[#931]

  • module/apmawssdkgo: add support for instrumenting sqs RPC calls {pull}933[#933]

  • module/apmawssdkgo: add support for instrumenting sns RPC calls {pull}938[#938]

  • Parse "//" comments in SQL/CQL {pull}937[#937]

  • Fix CaptureError to capture the request body when ELASTIC_APM_CAPTURE_BODY is enabled {pull}906[#906]

  • module/apmgrpc: record underlying HTTP/2 context {pull}904[#904]

  • module/apmot: handle http.host tag as url.Host {pull}954[#954]

  • apm: add add ParentID methods to Span and Transaction {pull}956[#956]

1.11.0 - 2021/02/01

  • Make TRANSACTION_IGNORE_URLS dynamically configurable: {pull}872[#872]

1.10.0 - 2021/01/20

  • module/apmsql: add tracingDriver.Unwrap method to get underlying driver {pull}#849[#849]

  • module/apmgopgv10: add support for github.com/go-pg/pg/v10 {pull}857[#857]

  • Enable central configuration of "sanitize_field_names" {pull}856[#856]

  • module/apmgrpc: set span destination context {pull}861[#861]

1.9.0 - 2020/11/02

  • module/apmgoredisv8: introduce new package to support go-redis v8 {pull}780[#780]

  • module/apmhttp: introduce httptrace client option {pull}788[#788]

  • module/apmsql: add support for database/sql/driver.Validator {pull}791[#791]

  • Record sample rate on transactions and spans, propagate through tracestate {pull}804[#804]

  • module/apmredigo: change redigo dependency to v1.8.2 {pull}807[#807]

  • Deprecate IGNORE_URLS, replace with TRANSACTION_IGNORE_URLS {pull}811[#811]

  • Tracer.Close now waits for the transport goroutine to end before returning {pull}816[#816]

  • Relax Kubernetes pod UID discovery rules {pull}819[#819]

  • Add transaction and span outcome {pull}820[#820]

  • Add cloud metadata, configurable with ELASTIC_APM_CLOUD_PROVIDER {pull}823[#823]

  • Round ELASTIC_APM_SAMPLING_RATE with 4 digits precision {pull}828[#828]

  • module/apmhttp: implement io.ReaderFrom in wrapped http.ResponseWriter {pull}830[#830]

  • Fixed Transaction.Discard so that it sets TransactionData to nil {pull}836[#836]

  • module/apmsql/pgxv4: add support for pgx driver {pull}831[#831]

  • module/apmgormv2: add support for gorm.io (GORM v2) {pull}825[#825]

1.8.0 - 2020/05/06

  • Add "recording" config option, to dynamically disable event recording {pull}737[#737]

  • Enable central configuration of "stack_frames_min_duration" and "stack_trace_limit" {pull}742[#742]

  • Implement "CloseIdleConnections" on the Elasticsearch RoundTripper {pull}750[#750]

  • Fix apmot nil pointer dereference in Tracer.Inject {pull}763[#763]

1.7.2 - 2020/03/19

  • Update cucumber/godog to 0.8.1 {pull}733[#733]

1.7.1 - 2020/03/05

  • Fix segfault on 32-bit architectures {pull}728[#728]

1.7.0 - 2020/01/10

  • Add span.context.destination.* {pull}664[#664]

  • transport: fix Content-Type for pprof data {pull}679[#679]

  • Add "tracestate" propagation {pull}690[#690]

  • Add support for API Key auth {pull}698[#698]

  • module/apmsql: report rows affected {pull}700[#700]

1.6.0 - 2019/11/17

  • module/apmhttp: add WithClientRequestName option {pull}609[#609]

  • module/apmhttp: add WithPanicPropagation function {pull}611[#611]

  • module/apmgoredis: add Client.RedisClient {pull}613[#613]

  • Introduce apm.TraceFormatter, for formatting trace IDs {pull}635[#635]

  • Report error cause(s), add support for errors.Unwrap {pull}638[#638]

  • Setting ELASTIC_APM_TRANSACTION_MAX_SPANS to 0 now disables all spans {pull}640[#640]

  • module/apmzerolog: add Writer.MinLevel {pull}641[#641]

  • Introduce SetLabel and deprecate SetTag {pull}642[#642]

  • Support central config for ELASTIC_APM_CAPTURE_BODY and ELASTIC_APM_TRANSACTION_MAX_SPANS {pull}648[#648]

  • module/apmgorm: sql.ErrNoRows is no longer reported as an error {pull}645[#645]

  • Server URL path is cleaned/canonicalizsed in order to avoid 301 redirects {pull}658[#658]

  • context.request.socket.remote_address now reports the peer address {pull}662[#662]

  • Experimental support for periodic CPU/heap profiling {pull}666[#666]

  • module/apmnegroni: introduce tracing Negroni middleware {pull}671[#671]

  • Unescape hyphens in k8s pod UIDs when the systemd cgroup driver is used {pull}672[#672]

  • Read and propagate the standard W3C "traceparent" header {pull}674[#674]

1.5.0 - 2019/07/31

  • Add Context.SetCustom {pull}581[#581]

  • Add support for extracting UUID-like container IDs {pull}577[#577]

  • Introduce transaction/span breakdown metrics {pull}564[#564]

  • Optimised HTTP request body capture {pull}592[#592]

  • Fixed transaction encoding to drop tags (and other context) for non-sampled transactions {pull}593[#593]

  • Introduce central config polling {pull}591[#591]

  • Fixed apmgrpc client interceptor, propagating trace context for non-sampled transactions {pull}602[#602]

1.4.0 - 2019/06/20

  • Update opentracing-go dependency to v1.1.0

  • Update HTTP routers to return "<METHOD> unknown route" if route cannot be matched {pull}486[#486]

  • module/apmchi: introduce instrumentation for go-chi/chi router {pull}495[#495]

  • module/apmgoredis: introduce instrumentation for the go-redis/redis client {pull}505[#505]

  • module/apmsql: exposed the QuerySignature function {pull}515[#515]

  • module/apmgopg: introduce instrumentation for the go-pg/pg ORM {pull}516[#516]

  • module/apmmongo: set minimum Go version to Go 1.10 {pull}522[#522]

  • internal/sqlscanner: bug fix for multi-byte rune handling {pull}535[#535]

  • module/apmgrpc: added WithServerRequestIgnorer server option {pull}531[#531]

  • Introduce ELASTIC_APM_GLOBAL_LABELS config {pull}539[#539]

  • module/apmgorm: register row_query callbacks {pull}532[#532]

  • Introduce ELASTIC_APM_STACK_TRACE_LIMIT config {pull}559[#559]

  • Include agent name/version and Go version in User-Agent {pull}560[#560]

  • Truncate error.culprit at 1024 chars {pull}561[#561]

1.3.0 - 2019/03/20

  • Rename "metricset.labels" to "metricset.tags" {pull}438[#438]

  • Introduce ELASTIC_APM_DISABLE_METRICS to disable metrics with matching names {pull}439[#439]

  • module/apmelasticsearch: introduce instrumentation for Elasticsearch clients {pull}445[#445]

  • module/apmmongo: introduce instrumentation for the MongoDB Go Driver {pull}452[#452]

  • Introduce ErrorDetailer interface {pull}453[#453]

  • module/apmhttp: add CloseIdleConnectons and CancelRequest to RoundTripper {pull}457[#457]

  • Allow specifying transaction (span) ID via TransactionOptions/SpanOptions {pull}463[#463]

  • module/apmzerolog: introduce zerolog log correlation and exception-tracking writer {pull}428[#428]

  • module/apmelasticsearch: capture body for \_msearch, template and rollup search {pull}470[#470]

  • Ended Transactions/Spans may now be used as parents {pull}478[#478]

  • Introduce apm.DetachedContext for async/fire-and-forget trace propagation {pull}481[#481]

  • module/apmechov4: add a copy of apmecho supporting echo/v4 {pull}477[#477]

1.2.0 - 2019/01/17

  • Add "transaction.sampled" to errors {pull}410[#410]

  • Enforce license header in source files with go-licenser {pull}411[#411]

  • module/apmot: ignore "follows-from" span references {pull}414[#414]

  • module/apmot: report error log records {pull}415[#415]

  • Introduce ELASTIC_APM_CAPTURE_HEADERS to control HTTP header capture {pull}418[#418]

  • module/apmzap: introduce zap log correlation and exception-tracking hook {pull}426[#426]

  • type Error implements error interface {pull}399[#399]

  • Add "transaction.type" to errors {pull}433[#433]

  • Added instrumentation-specific Go modules (i.e. one for each package under apm/module) {pull}405[#405]

1.1.3 - 2019/01/06

  • Remove the agent.* metrics {pull}407[#407]

  • Add support for new github.com/pkg/errors.Frame type {pull}409[#409]

1.1.2 - 2019/01/03

  • Fix data race between Tracer.Active and Tracer.loop {pull}406[#406]

1.1.1 - 2018/12/13

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

1.1.0 - 2018/12/12

  • Stop pooling Transaction/Span/Error, introduce internal pooled objects {pull}319[#319]

  • Enable metrics collection with default interval of 30s {pull}322[#322]

  • ELASTIC_APM_SERVER_CERT enables server certificate pinning {pull}325[#325]

  • Add Docker container ID to metadata {pull}330[#330]

  • Added distributed trace context propagation to apmgrpc {pull}335[#335]

  • Introduce Span.Subtype, Span.Action {pull}332[#332]

  • apm.StartSpanOptions fixed to stop ignoring options {pull}326[#326]

  • Add Kubernetes pod info to metadata {pull}342[#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 {pull}380[#380]

  • module/apmlogrus: introduce logrus exception-tracking hook, and log correlation {pull}381[#381]

  • module/apmbeego: introduce Beego instrumentation module {pull}386[#386]

  • module/apmhttp: report status code for client spans {pull}388[#388]

1.0.0 - 2018/11/14

  • Implement v2 intake protocol {pull}180[#180]

  • Unexport Transaction.Timestamp and Span.Timestamp {pull}207[#207]

  • Add jitter (+/-10%) to backoff on transport error {pull}212[#212]

  • Add support for span tags {pull}213[#213]

  • Require units for size configuration {pull}223[#223]

  • Require units for duration configuration {pull}211[#211]

  • Add support for multiple server URLs with failover {pull}233[#233]

  • Add support for mixing OpenTracing spans with native transactions/spans {pull}235[#235]

  • Drop SetHTTPResponseHeadersSent and SetHTTPResponseFinished methods from Context {pull}238[#238]

  • Stop setting custom context (gin.handler) in apmgin {pull}238[#238]

  • Set response context in errors reported by web modules {pull}238[#238]

  • module/apmredigo: introduce gomodule/redigo instrumentation {pull}248[#248]

  • Update Sampler interface to take TraceContext {pull}243[#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 {pull}250[#250]

  • Add Transaction.Context method for setting framework {pull}252[#252]

  • Timestamps are now reported as usec since epoch, spans no longer use "start" offset {pull}257[#257]

  • ELASTIC_APM_SANITIZE_FIELD_NAMES and ELASTIC_APM_IGNORE_URLS now use wildcard matching {pull}260[#260]

  • Changed top-level package name to "apm", and canonical import path to "go.elastic.co/apm" {pull}202[#202]

  • module/apmrestful: introduce emicklei/go-restful instrumentation {pull}270[#270]

  • Fix panic handling in web instrumentations {pull}273[#273]

  • Migrate internal/fastjson to go.elastic.co/fastjson {pull}275[#275]

  • Report all HTTP request/response headers {pull}280[#280]

  • Drop Context.SetCustom {pull}284[#284]

  • Reuse memory for tags {pull}286[#286]

  • Return a more helpful error message when /intake/v2/events 404s, to detect old servers {pull}290[#290]

  • Implement test service for w3c/distributed-tracing test harness {pull}293[#293]

  • End HTTP client spans on response body closure {pull}289[#289]

  • module/apmgrpc requires Go 1.9+ {pull}300[#300]

  • Invalid tag key characters are replaced with underscores {pull}308[#308]

  • ELASTIC_APM_LOG_FILE and ELASTIC_APM_LOG_LEVEL introduced {pull}313[#313]

Go Agent version 0.x

0.5.2 - 2018/09/19

  • Fixed premature Span.End() in apmgorm callback, causing a data-race with captured errors {pull}229[#229]

0.5.1 - 2018/09/05

  • Fixed a bug causing error stacktraces and culprit to sometimes not be set {pull}204[#204]

0.5.0 - 2018/08/27

  • ELASTIC_APM_SERVER_URL now defaults to "http://localhost:8200" {pull}122[#122]

  • Transport.SetUserAgent method added, enabling the User-Agent to be set programatically {pull}124[#124]

  • Inlined functions are now properly reported in stacktraces {pull}127[#127]

  • Support for the experimental metrics API added {pull}94[#94]

  • module/apmsql: SQL is parsed to generate more useful span names {pull}129[#129]

  • Basic vgo module added {pull}136[#136]

  • module/apmhttprouter: added a wrapper type for httprouter.Router to simplify adding routes {pull}140[#140]

  • Add Transaction.Context methods for setting user IDs {pull}144[#144]

  • module/apmgocql: new instrumentation module, providing an observer for gocql {pull}148[#148]

  • Add ELASTIC_APM_SERVER_TIMEOUT config {pull}157[#157]

  • Add ELASTIC_APM_IGNORE_URLS config {pull}158[#158]

  • module/apmsql: fix a bug preventing errors from being captured {pull}160[#160]

  • Introduce Tracer.StartTransactionOptions, drop variadic args from Tracer.StartTransaction {pull}165[#165]

  • module/apmgorm: introduce GORM instrumentation module (#169, #170)

  • module/apmhttp: record outgoing request URLs in span context {pull}172[#172]

  • module/apmot: introduce OpenTracing implementation {pull}173[#173]

0.4.0 - 2018/06/17

First release of the Go agent for Elastic APM