Skip to content

Releases: newrelic/go-agent

v3.19.0

15 Sep 19:41
61058d0
Compare
Choose a tag to compare

Added

  • logcontext-v2/logWriter plugin: a new logs in context plugin that supports the standard library logging package.
  • logcontext-v2/zerologWriter plugin: a new logs in context plugin for zerolog that will replace the old logcontext-v2/zerolog plugin. This plugin is more robust, and will be able to support a richer set of features than the previous plugin.
  • see the updated logs in context documentation for information about configuration and installation.

Changed

  • the logcontext-v2/zerolog plugin will be deprecated once the 3.17.0 release EOLs.

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.2

07 Sep 19:11
727f14e
Compare
Choose a tag to compare

3.18.2

Added

  • Added WithDefaultFunctionLocation trace option. This allows the caller to indicate a fall-back function to use for CLM in case no other location was found first.
  • Added caching versions of the code-level metrics functions ThisCodeLocation and FunctionLocation , and trace options WithThisCodeLocation and WithFunctionLocation. These improve performance by caching the result of computing the source code location, and reuse that cached result on all subsequent calls.
  • Added a WithCodeLevelMetrics trace option to force the collection of CLM data even if it would have been excluded as being out of the configured scope. (Note that CLM data are never collected if CLM is turned off globally or if the WithoutCodeLevelMetrics option was specified for the same transaction.)
  • Added an exported CodeLevelMetricsScopeLabelToValue function to convert a list of strings describing CLM scopes in the same manner as the NEW_RELIC_CODE_LEVEL_METRICS_SCOPE environment variable (but as individual string parameters), returning the CodeLevelMetricsScope value which corresponds to that set of scopes.
  • Added a new CodeLevelMetricsScopeLabelListToValue function which takes a comma-separated list of scope names exactly as the NEW_RELIC_CODE_LEVEL_METRICS_SCOPE environment variable does, and returns the CodeLevelMetrics value corresponding to that set of scopes.
  • Added text marshaling and unmarshaling for the CodeLevelMetricsScope value, allowing the CodeLevelMetrics field of the configuration struct to be converted to or from JSON or other text-based encoding representations.

Changed

  • The WithPathPrefix trace option now takes any number of string parameters, allowing multiple path prefixes to be recognized rather than just one.
  • The FunctionLocation function now accepts any number of function values instead of just a single one. The first such parameter which indicates a valid function, and for which CLM data are successfully obtained, is the one which will be reported.
  • The configuration struct field PathPrefix is now deprecated with the introduction of a new PathPrefixes field. This allows for multiple path prefixes to be given to the agent instead of only a single one.
  • The NEW_RELIC_CODE_LEVEL_METRICS_SCOPE environment variable now accepts a comma-separated list of pathnames.

Fixed

  • Improved the implementation of CLM internals to improve speed, robustness, and thread safety.
  • Corrected the implementation of the WrapHandle and WrapHandleFunc functions so that they consistently report the function being invoked by the http framework, and improved them to use the new caching functions and ensured they are thread-safe.

This release fixes issue #557.

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.1

18 Aug 19:07
5421539
Compare
Choose a tag to compare

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 the IgnoredPrefix configuration field of Config.CodeLevelMetrics in favor of a new slice field IgnoredPrefixes. The corresponding configuration option-setting functions ConfigCodeLevelMetricsIgnoredPrefix and WithIgnoredPrefix 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, the NEW_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

01 Aug 21:44
b580d7f
Compare
Choose a tag to compare

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 where StartTransaction 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

29 Jun 22:14
d71efc4
Compare
Choose a tag to compare

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 the RecordLog 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 the nrmssql 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, and GrpcStatusCode to grpcStatusLevel, grpcStatusMessage, and grpcStatusCode respectively, to conform to existing naming conventions for New Relic agents. Fixes issue 492.
  • Updated go.mod for the nrgin integration to mitigate security issue in 3rd party dependency.
  • Updated go.mod for the nrawssdk-v1 integration to properly reflect its dependency on version 3.16.0 of the Go Agent.
  • Updated go.mod for the nrlambda integration to require aws-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

26 May 20:30
a0f3666
Compare
Choose a tag to compare

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 the x/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

19 May 22:45
41d47c0
Compare
Choose a tag to compare

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.
  • 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.

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

07 Dec 06:21
4b46fc5
Compare
Choose a tag to compare

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 to license_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

27 Oct 20:16
5be716d
Compare
Choose a tag to compare

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 the nrecho-v4 integration to require version 4.5.0 of the github.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 for echo 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

02 Sep 23:12
779fa03
Compare
Choose a tag to compare

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 the nrgin integration to require version 1.7.0 of the github.com/gin-gonic/gin package. This addresses CVE-2020-28483 which documents a vulnerability in versions of github.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 existing nrpq integration, but using the pgx driver instead. This only covers (at present) the use case of the pgx driver with the standard library database/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 correct go get commands with explicit reference to v3.

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.