3.11.0
New Features
- Aerospike is now included on the list of recognized datastore names. Thanks @vkartik97 for your PR! #233
- Added support for version 8 of go-redis. Thanks @ilmimris for adding this instrumentation! #251
Changes
- Changed logging level for messages resulting from Infinite Tracing load balancing operations. These were previously logged as errors, and now they are debugging messages. #276
Fixed
- When the agent is configured with
cfg.ErrorCollector.RecordPanics
set totrue
, panics would be recorded by New Relic, but stack traces would not be logged as the Go Runtime usually does. The agent now logs stack traces from within its panic handler, providing similar functionality. #278 - Added license files to some integrations packages to ensure compatibility with
package.go.dev
. Now the documentation for our integrations shows up again on go.docs.
Support statement
- New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.
3.10.0
New Features
- To keep up with the latest security protocols implemented by Amazon Web Services, the agent now uses AWS IMDSv2 to find utilization data. #249
Changes
- Updated the locations of our license files so that Go docs https://pkg.go.dev will display our agent. Thanks @tydavis for your PR to fix this! #254
- Added an Open Source repo linter GitHub action that runs on push. #262
- Updated the README.md file to correctly show the support resources from New Relic. #255
Support statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 2.2.0.
3.9.0
Changes
- When sending Serverless telemetry using the
nrlambda
integration, support an externally-managed named pipe.
The articles below provide additional instructions on support for an externally-managed named pipe in lambdas:
3.8.1
Bug Fixes
- Fixed an issue that could cause orphaned Distributed Trace spans when using SQL instrumentation like
nrmysql
.
3.8.0
Changes
- When marking a transaction as a web transaction using Transaction.SetWebRequest, it is now possible to include a
Host
field in the WebRequest struct, which defaults to the empty string.
Bug Fixes
- The
Host
header is now being correctly captured and recorded in therequest.headers.host
attribute, as described here. - Previously, the timestamps on Spans and Transactions were being written using different data types, which sometimes caused rounding errors that could cause spans to be offset incorrectly in the UI. This has been fixed.
3.7.0
Changes
- When
Config.Transport
is nil, no longer use thehttp.DefaultTransport
when communicating with the New Relic backend. This addresses an issue with shared transports as described in golang/go#33006. - If a timeout occurs when attempting to send data to the New Relic backend, instead of dropping the data, we save it and attempt to send it with the next harvest. Note data retention limits still apply and the agent will still start to drop data when these limits are reached. We attempt to keep the highest priority events and traces.
3.6.0
New Features
Added support for adding custom attributes directly to spans. These attributes will be visible when looking at spans in the distributed tracing UI.
Example:
txn := newrelic.FromContext(r.Context())sgmt := txn.StartSegment("segment1")defer sgmt.End()sgmt.AddAttribute("mySpanString", "hello")sgmt.AddAttribute("mySpanInt", 123)Custom attributes added to the transaction with
txn.AddAttribute
are now also added to the root span and will be visible when looking at the span in the distributed tracing UI. These custom attributes can be disabled from all destinations usingConfig.Attributes.Exclude
or disabled from spans specifically usingConfig.SpanEvents.Attributes.Exclude
.Agent attributes added to the transaction are now also added to the root span event and will be visible when looking at the span in the distributed tracing UI. These attributes include the
request.uri
and therequest.method
along with all other attributes listed in the attributes section of our godocs. These agent attributes can be disabled from all destinations usingConfig.Attributes.Exclude
or disabled from spans specifically usingConfig.SpanEvents.Attributes.Exclude
.
Bug Fixes
- Fixed an issue where it was impossible to exclude the attributes
error.class
anderror.message
from the root span. This issue has now been fixed. These attributes can now be excluded from all spans usingConfig.Attributes.Exclude
orConfig.SpanEvents.Attributes.Exclude
. - Fixed an issue that caused Go's data race warnings to trigger in certain situations when using the
newrelic.NewRoundTripper
. There were no reports of actual data corruption, but now the warnings should be resolved. Thank you to @blixt for bringing this to our attention!
3.5.0
New Features
Added support for Infinite Tracing on New Relic Edge.
Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data so you have the examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.
You configure your agent to send traces to a trace observer in New Relic Edge. You view your distributed traces through the New Relic’s UI. There is no need to install a collector on your network.
Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.
Changes
nrgin.Middleware
usesContext.FullPath()
for transaction names when using Gin version 1.5.0 or greater. Gin transactions were formerly named after theContext.HandlerName()
, which uses reflection. This change improves transaction naming and reduces overhead. Please note that because your transaction names will change, you may have to update any related dashboards and alerts to match the new name. If you wish to continue usingContext.HandlerName()
for your transaction names, usenrgin.MiddlewareHandlerTxnNames
instead.// Transactions previously named"GET main.handleGetUsers"// will be change to something like this match the full path"GET /user/:id"Note: As part of agent release v3.4.0, a v2.0.0 tag was added to the nrgin package. When using go modules however, it was impossible to install this latest version of nrgin. The v2.0.0 tag has been removed and replaced with v1.1.0.
3.4.0
New Features
Attribute
http.statusCode
has been added to external span events representing the status code on an http response. This attribute will be included when added to an ExternalSegment in one of these three ways:- Using
NewRoundTripper
with your http.Client - Including the http.Response as a field on your
ExternalSegment
- Using the new
ExternalSegment.SetStatusCode
API to set the status code directly
To exclude the
http.statusCode
attribute from span events, update your agent configuration like so, wherecfg
is yournewrelic.Config
object.cfg.SpanEvents.Attributes.Exclude = append(cfg.SpanEvents.Attributes.Exclude, newrelic.SpanAttributeHTTPStatusCode)- Using
Error attributes
error.class
anderror.message
are now included on the span event in which the error was noticed, or on the root span if an error occurs in a transaction with no segments (no chid spans). Only the most recent error information is added to the attributes; prior errors on the same span are overwritten.To exclude the
error.class
and/orerror.message
attributes from span events, update your agent configuration like so, wherecfg
is yournewrelic.Config
object.cfg.SpanEvents.Attributes.Exclude = append(cfg.SpanEvents.Attributes.Exclude, newrelic.newrelic.SpanAttributeErrorClass, newrelic.SpanAttributeErrorMessage)
Changes
Use
Context.FullPath()
for transaction names when using Gin version 1.5.0 or greater. Gin transactions were formerly named after theContext.HandlerName()
, which uses reflection. This change improves transaction naming and reduces overhead. Please note that because your transaction names will change, you may have to update any related dashboards and alerts to match the new name.// Transactions previously named"GET main.handleGetUsers"// will be change to something like this match the full path"GET /user/:id"
3.3.0
New Features
Added support for GraphQL in two new integrations:
Added database instrumentation support for snowflakedb/gosnowflake.
Changes
- When using
newrelic.StartExternalSegment
ornewrelic.NewRoundTripper
, if existing cross application tracing or distributed tracing headers are present on the request, they will be replaced instead of added. - The
FromContext
API which allows you to pull a Transaction from a context.Context will no longer panic if the provided context is nil. In this case, a nil is returned.
Known Issues and Workarounds
If a .NET agent is initiating distributed traces as the root service, you must update that .NET agent to version 8.24 or later before upgrading your downstream Go New Relic agents to this agent release.