New Features
- Additional Transaction Information applied to Span Events
- When Distributed Tracing and/or Infinite Tracing are enabled, the Agent will now incorporate additional information from the Transaction Event on to the currently available Span Event of the transaction.
- The following items are affected:
aws-lambda
related attributeserror.message
error.class
error.expected
http.statusCode
http.statusText
message.*
parent.type
parent.app
parent.account
parent.transportType
parent.transportDuration
- Request Parameters
request.parameters.*
request.header.*
request.method
request.uri
- The following items are affected:
- Custom Attributes
- Custom transaction attributes added via
API.addCustomAttribute
orAPI.addCustomAttributes
will now be propagated to the currently active span, if available.
- Custom transaction attributes added via
- Security Recommendation:
- Review your Transaction Event attributes configuration. Any attribute include or exclude setting specific to Transaction Events should be applied to your Span Attributes configuration or global attributes configuration. Please see Node.js agent attributes for more on how to configure.
- When Distributed Tracing and/or Infinite Tracing are enabled, the Agent will now incorporate additional information from the Transaction Event on to the currently available Span Event of the transaction.
Improvements
- Upgraded @grpc/grpc-js from 1.0.3 to 1.0.4
- Modified redis callback-less versioned test to use
commandQueueLength
as indicator redis command has completed and test can continue. This is in effort to further reduce these test flickers. Additionally, added wait for client 'ready' before moving on to tests. - Updated force secret test runs to run on branch pushes to the main repository.
New Features
Added AWS API Gateway V2 support to Lambda instrumentation.
Added 'transaction.name' intrinsic to active span at time transaction name is finalized.
This enables finding transaction name for traces that may not have a matching transaction event.
Added 'error.expected' attribute to span active at time expected error was noticed.
Improvements
Dropped errors earlier during collection when error collection is disabled.
Error attributes will no longer show up on spans when error collection has been disabled. Other unnecessary work will also be avoided.
Removed allocation of logging-only objects used by transaction naming when those log levels are disabled.
Upgraded escodegen from 1.12.0 to 1.14.1.
Upgraded readable-stream from 3.4.0 to 3.6.0.
Upgraded @grpc/proto-loader from 0.5.3 to 0.5.4.
Converted facts unit test to use tap API.
Converted transaction 'finalizeName...' unit tests to use tap API.
Added several items to .npmignore to prevent accidental publishing.
Fixed Redis client w/o callback versioned test flicker.
Doesn't end transaction until error encountered. Increases wait time for first operation which has to complete for the second operation to be successful.
New Features
Bumped @newrelic/native-metrics to ^5.1.0.
Upgraded nan to ^2.14.1 to resolve 'GetContents' deprecation warning with Node 14. This version of the native metrics module is tested against Node 14 and includes a pre-built binary download backup for Node 14.
Improvements
Added whitespace trimming of license key configuration values.
Previously, when a license key was entered with leading or trailing whitespace, it would be used as-is and result in a validation failure. This most commonly occurred with environment variable based configuration.
Moved to GitHub actions for CI.
Updated PR template and added initial issue templates.
Converted most of the collector API unit tests to use the tap API. Split larger test groupings into their own test files.
Fixes
- Added synthetics headers to transaction event intrinsics for Distributed Tracing
- Fixed stale comment documentation with regards to segment recording
New Features
Added a configurable-length span queue to Infinite Tracing: infinite_tracing.span_events.queue_size.
The queue length can be modified to balance the needs of keeping full traces against trade-off of memory usage and CPU overhead in a high-throughput application.
Improvements
- Updated remaining /api unit tests to use tap API.
- Updated @grpc/grpc-js to v1.0.3.
Fixes
Fixed issue where API.instrumentLoadedModule could throw an exception when it failed.
Error details will now be caught and logged.
Resolved non-proxy minimist security warnings by bumping dependencies.
These updates only impact development dependencies. Thank you to @devfreddy for the contribution.
- Updated minimist sub-deps to resolve most related security warnings.
- Updated tap to resolve remaining tap security warnings.
- Updated @newrelic/proxy.
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.
Improvements
Added
function_version
to lambda metadata payload.This is pulled from an invocation's
context.functionVersion
value.
Improvements
Added error attributes to spans.
- The public api method
noticeError()
now attaches exception details to the currently executing span. Spans with error details are now highlighted red in the Distributed Tracing UI. Also, the attributeserror.class
anderror.message
are added to the span. If multiple errors are recorded for a single span, only the final error's attributes will be added to the span. - Added ID of the span in which an error occurred to the corresponding transaction error event.
- The public api method
Added new public API methods
addCustomSpanAttribute
andaddCustomSpanAttributes
to add attributes to the currently executing span.Added new attributes to http outbound spans:
http.statusCode
andhttp.statusText
.Updated W3C Trace Context "Known Issues and Workaround" notes with latest accurate consideration.
Converted unit tests to run via
tap
. Removesmocha
dependency.
Fixes
- Fixed route naming when hapi's
pre
route handlers share functions. - Fixed
child_process
instrumentation so that handlers can be effectively removed when attached via.once()
or manually removed viaremoveListener()
.
Improvements
Support new http[s] get/request function signature in Node v10+
Added the following Span attributes:
http.statusCode
http.statusText
The above attributes will be replacing the following deprecated attributes:
httpResponseCode
response.status
response.statusMessage
The deprecated attributes will be removed with the next major release of the agent.
Updates version check to be in alignment with our stated support policy and the version constraints in package.json
Redacts individual certificate configuration values before sending to server settings. When configured, these values will now appear like:
{certificates.0: ****}
.
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 New Relic Node agents to this agent release.
Improvements
Removed calls to
OutgoingMessage.prototype._headers
in favor of using publicgetHeaders
API (thanks to @adityasabnis for bringing this to our attention).Removed engine upper-bound to enable easier experimentation of newer Node versions with the agent for customers.
Please see https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compa... for officially supported versions. Incompatibilities are expected for odd-numbered releases, which are not supported, and even-numbered releases before "official" support has been released.
Reduced "... Aggregator data send." log messages to
debug
level to reduce noise of default logs.Prevented passing CI with
.only()
in mocha tests.Removed CI restriction for Node
12.15
. Node shipped a fix for the12.16
breakage in12.16.1
.Reduced logging level of raw
x-queue-start
orx-request-start
header values to avoid logging very large values at default logging levels.
Fixes
Bumped
@newrelic/aws-sdk
version tov1.1.2
fromv1.1.1
. https://github.com/newrelic/node-newrelic-aws-sdk/blob/master/CHANGELOG.mdNotable improvements include:
- Fixed issue where instrumentation would crash pulling
host
andport
values whenAmazonDaxClient
was used as the service forDocumentClient
.
- Fixed issue where instrumentation would crash pulling
Fixed issue where disabled agent would return an empty string instead of an empty object from API getLinkingMetadata().
This issue would cause the
@newrelic/winston-enricher
module to crash when attempting to inject log metatdata.
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 New Relic Node agents to this agent release.
New Features
Added support for W3C Trace Context, with easy upgrade from New Relic trace context.
Distributed tracing now supports W3C Trace Context headers for HTTP protocols when distributed tracing is enabled. Our implementation can accept and emit both the W3C trace header format and the New Relic trace header format. This simplifies agent upgrades, allowing trace context to be propagated between services with older and newer releases of New Relic agents. W3C trace header format will always be accepted and emitted. New Relic trace header format will be accepted, and you can optionally disable emission of the New Relic trace header format.
When distributed tracing is enabled with
distributed_tracing.enabled: true
, the Node agent will now accept W3C'straceparent
andtracestate
headers when callingTransactionHandle#acceptDistributedTraceHeaders
or automatically viahttp
instrumentation. When callingTransaction#insertDistributedTraceHeaders
, or automatically viahttp
instrumentation, the Node agent will include the W3C headers along with the New Relic distributed tracing header, unless the New Relic trace header format is disabled usingdistributed_tracing.exclude_newrelic_header:true
.Added
TransactionHandle#acceptDistributedTraceHeaders
API for accepting both New Relic and W3C Trace Context distributed traces.Deprecated
TransactionHandle#acceptDistributedTracePayload
which will be removed in a future major release.Added
TransactionHandle#insertDistributedTraceHeaders
API for adding outbound distributed trace headers. Both W3C Trace Context and New Relic formats will be included unlessdistributed_tracing.exclude_newrelic_header: true
.Deprecated
TransactionHandle#createDistributedTracePayload
which will be removed in a future major release.
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 Node New Relic agents to this agent release.
Improvements
Improved transaction and trace ID generation.
AWS Lambda
- Added collection of additional AWS Lambda event source meta data.
- Added event type detection for Lambda invocation events.
- Expanded ARN harvest to include ALB and CloudWatch.
Fixes
- Fixed issue where Lambda invocation errors were not noticed in Node 10 or Node 12 environments.
- Pins Node 12 CI/testing version to
v12.15
to avoid breakages withv12.16.0
until cause(s) resolved. - Updated publish-docs script to use
npm run
instead ofmake
.
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 New Relic Node agents to this agent release.