Releases: newrelic/go-agent
Release v3.18.1
3.18.1
Added
- Extended the
IgnoredPrefix
configuration value for Code-Level Metrics so that multiple such prefixes may be given instead of a single one. This deprecates theIgnoredPrefix
configuration field ofConfig.CodeLevelMetrics
in favor of a new slice fieldIgnoredPrefixes
. The corresponding configuration option-setting functionsConfigCodeLevelMetricsIgnoredPrefix
andWithIgnoredPrefix
now take any number of string parameters to set these values. Since those functions used to take a single string value, this change is backward-compatible with pre-3.18.1 code. Accordingly, theNEW_RELIC_CODE_LEVEL_METRICS_IGNORED_PREFIX
environment variable is now a comma-separated list of prefixes. Fixes Issue #551.
Fixed
- Corrected some small errors in documentation of package features. Fixes Issue #550
Compatibility Notice
As of release 3.18.0, the API was extended by allowing custom options to be added to calls to the Application.StartTransaction
method and the WrapHandle
and WrapHandleFunc
functions. They are implemented as variadic functions such that the new option parameters are optional (i.e., zero or more options may be added to the end of the function calls) to be backward-compatible with pre-3.18.0 usage of those functions. This prevents the changes from breaking existing code for typical usage of the agent. However, it does mean those functions' call signatures have changed:
StartTransaction(string)
->StartTransaction(string, ...TraceOption)
WrapHandle(*Application, string, http.Handler)
->WrapHandle(*Application, string, http.Handler, ...TraceOption)
WrapHandleFunc(*Application, string, func(http.ResponseWriter, *http.Request))
->WrapHandleFunc(*Application, string, func(http.ResponseWriter, *http.Request), ...TraceOption)
If, for example, you created your own custom interface type which includes the StartTransaction
method or something that depends on these functions' exact call semantics, that code will need to be updated accordingly before using version 3.18.0 (or later) of the Go Agent.
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.
See the Go Agent EOL Policy for details about supported versions of the Go Agent and third-party components.
Release v3.18.0
3.18.0
Added
- Code-Level Metrics are now available for instrumented transactions. This is off by default but once enabled via
ConfigCodeLevelMetricsEnabled(true)
transactions will include information about the location in the source code whereStartTransaction
was invoked.- Adds information about where in your source code transaction traces originated.
- See the Go Agent documentation for details on configuring Code-Level Metrics and how to instrument your code using them.
- New V2 logs in context plugin is available for Logrus, packed with all the features you didn't know you wanted:
- Automatic Log Forwarding
- Log Metrics
- Capture logs anywhere in your code; both inside or outside of a transaction.
- Use the Logrus formatting package of your choice
- Local Log Decorating is now available for the new logcontext-v2/nrlogrus plugin only. This is off by default but can be enabled with
ConfigAppLogForwardingEnabled(true)
.
Fixed
- Fixed issue with custom event limits and number of DT Spans to more accurately follow configured limits.
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.
- Note that the oldest supported version of the Go Agent is 3.6.0.
Release v3.17.0
3.17.0
Added
- Logs in context now supported for zerolog.
- This is a quick way to view logs no matter where you are in the platform.
* Adds support for logging metrics which shows the rate of log messages by severity in the Logs chart in the APM Summary view. This is enabled by default in this release.
* Adds support for forwarding application logs to New Relic. This automatically sends application logs that have been enriched to power APM logs in context. This is disabled by default in this release. This will be on by default in a future release.
* To learn more about APM logs in context see the documentation here.
* Includes theRecordLog
function for recording log data from a single log entry
* An integrated plugin for zerolog to automatically ingest log data with the Go Agent.
* Resolves issue 178, issue 488, issue 489, issue 490, and issue 491 . - Added integration for MS SQL Server (PR 425; thanks @ishahid91!)
* This introduces thenrmssql
integration v1.0.0. - Added config function
ConfigCustomInsightsEventsMaxSamplesStored
for limiting the number of samples stored in a custom insights event. Fixes issue 476
Fixed
- Improved speed of building distributed trace header JSON payload. Fixes issue 505.
- Renamed the gRPC attribute names from
GrpcStatusLevel
,GrpcStatusMessage
, andGrpcStatusCode
togrpcStatusLevel
,grpcStatusMessage
, andgrpcStatusCode
respectively, to conform to existing naming conventions for New Relic agents. Fixes issue 492. - Updated
go.mod
for thenrgin
integration to mitigate security issue in 3rd party dependency. - Updated
go.mod
for thenrawssdk-v1
integration to properly reflect its dependency on version 3.16.0 of the Go Agent. - Updated
go.mod
for thenrlambda
integration to requireaws-lambda-go
version 1.20.0. (PR 356; thanks MattWhelan!)
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.
- Note that the oldest supported version of the Go Agent is 3.6.0.
Release v3.16.1
3.16.1
Fixed
- Changed dependency on gRPC from v1.27.0 to v1.39.0. This in turn changes gRPC's dependency on
x/crypto
to v0.0.0-20200622213623-75b288015ac9, which fixes a security vulnerability in thex/crypto
standard library module. Fixes issue #451. - Incremented version number of the
nrawssdk-v1
integration from v1.0.1 to v1.1.0 to resolve an incompatibility issue due to changes to underlying code. Fixes issue #499
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.
Release v3.16.0
3.16.0
Added
- Distributed Tracing is now the default mode of operation. It may be disabled by user configuration if so desired. PR #495
- To disable DT, add
newrelic.ConfigDistributedTracerEnabled(false)
to your application configuration. - To change the reservoir limit for how many span events are to be collected per harvest cycle from the default, add
newrelic.ConfigDistributedTracerReservoirLimit(
newlimit)
to your application configuration. - The reservoir limit's default was increased from 1000 to 2000.
- The maximum reservoir limit supported is 10,000.
- To disable DT, add
- Note that Cross Application Tracing is now deprecated.
- Added support for gathering memory statistics via
PhysicalMemoryBytes
functions for OpenBSD.
Fixed
- Corrected some example code to be cleaner.
- Updated version of nats-streaming-server. PR #458
- Correction to nrpkgerrors so that
nrpkgerrors.Wrap
now checks if the error it is passed has attributes, and if it does, copies them into the New Relic error it creates.
This fixes issue #409 via PR #441.- This increments the
nrpkgerrors
version to v1.1.0.
- This increments the
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.
Release v3.15.2
3.15.2
Added
- Strings logged via the Go Agent's built-in logger will have strings of the form
license_key=
hex-string changed tolicense_key=[redacted]
before they are output, regardless of severity level, where hex-string means a sequence of upper- or lower-case hexadecimal digits and dots ('.'). This incorporates PR #415.
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.
Release v3.15.1
3.15.1
Fixed
-
Updated support for SQL database instrumentation across the board for the Go Agent’s database integrations to more accurately extract the database table name from SQL queries. Fixes Issue #397.
-
Updated the
go.mod
file in thenrecho-v4
integration to require version 4.5.0 of thegithub.com/labstack/echo
package. This addresses a security concern arising from downstream dependencies in older versions of the echo package, as described in the release notes forecho
v4.5.0.
ARM64 Compatibility Note
The New Relic Go Agent is implemented in platform-independent Go, and supports (among the other platforms which run Go) ARM64/Graviton2 using Go 1.17+.
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.
Release v3.15.0
3.15.0
Fixed
-
Updated mongodb driver version to 1.5.1 to fix security issue in external dependency. Fixes Issue #358 and Issue #370.
-
Updated the
go.mod
file in thenrgin
integration to require version 1.7.0 of thegithub.com/gin-gonic/gin
package. This addresses CVE-2020-28483 which documents a vulnerability in versions ofgithub.com/gin-gonic/gin
earlier than 1.7.0.
Added
- New integration
nrpgx
added to provide the same functionality for instrumenting Postgres database queries as the existingnrpq
integration, but using the pgx driver instead. This only covers (at present) the use case of thepgx
driver with the standard librarydatabase/sql
. Fixes Issue #142 and Issue #292
Changed
-
Enhanced debugging logs so that New Relic license keys are redacted from the log output. Fixes Issue #353.
-
Updated the advice in
GUIDE.md
to have correctgo get
commands with explicit reference tov3
.
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.
Release v3.14.1
3.14.1
Fixed
- A typographical error in the nrgrpc unit tests was fixed. Fixes Issue #344.
This updates the nrgrpc integration to version 1.3.1.
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.
Release v3.14.0
3.14.0
Fixed
- Integration tags and
go.mod
files for integrations were updated so that pkg.go.dev displays the documentation for each integration correctly. - The
nrgrpc
server integration was reporting all non-OK
grpc statuses as errors. This has now been changed so that only selected grpc status codes will be reported as errors. Others are shown (via transaction attributes) as "warnings" or "informational" messages. There is a built-in set of defaults as to which status codes are reported at which severity levels, but this may be overridden by the caller as desired. Also supports custom grpc error handling functions supplied by the user.- This is implemented by adding
WithStatusHandler()
options to the end of theUnaryServerInterceptor()
andStreamServerInterceptor()
calls, thus extending the capability of those functions while retaining the existing functionality and usage syntax for backward compatibility.
- This is implemented by adding
- Added advice on the recommended usage of the
app.WaitForConnection()
method. Fixes [https://github.com//issues/296](Issue #296)
Added
- Added a convenience function to build distributed trace header set from a JSON string for use with the
AcceptDistributedTraceHeaders()
method. Normally, you must create a valid set of HTTP headers representing the trace identification information from the other trace so the new trace will be associated with it. This needs to be in a Gohttp.Header
type value.- If working only in Go, this may be just fine as it is. However, if the other trace information came from another source, possibly in a different language or environment, it is often the case that the trace data is already presented to you in the form of a JSON string.
- This new function,
DistributedTraceHeadersFromJSON()
, creates the requiredhttp.Header
value from the JSON string without requiring manual effort on your part. - We also provide a new all-in-one method
AcceptDistributedTraceHeadersFromJSON()
to be used in place ofAcceptDistributedTraceHeaders()
. It accepts a JSON string rather than anhttp.Header
, adding its trace info to the new transaction in one step. - Fixes [https://github.com//issues/331](Issue #331)
Changed
- Improved the NR AWS SDK V2 integration to use the current transaction rather than the one passed in during middleware creation, if
nil
is passed into nrawssdk-v2.AppendMiddlewares. Thanks to @HenriBeck for noticing and suggesting improvement, and thanks to @nc-wittj for the fantastic PR! #328
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.