Notes
Features
- Added Interactive Application Security Testing(IAST) mode of security agent when
config.security.agent.enabled
is true. (#1664) (3e926e5)
Caution
The New Relic Security agent IAST mode is in public preview and should only be used in non-production environments.
To learn about how to use IAST, check out our documentation.
- To enable the security agent set
config.security.agent.enabled
andconfig.security.enabled
to true.
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.
Notes
Features
Added supportability metrics to indicate how agent was loaded and if source maps were enabled (#1657) (6f6f7e6)
Supportability/Features/CJS/Preload
- recorded if-r newrelic
was used to load agentSupportability/Features/CJS/Require
- recorded ifrequire('newrelic')
was used to load agentSupportability/Features/EnableSourceMaps
- recorded ifnode --enable-source-maps
was present to start application
Added logging of
process.execArgs
at the debug level (#1654) (c85c006)
Miscellaneous chores
- Updated c8 to merge v8 coverage reports asynchronously to avoid OOM issues (#1652) (34376d7)
- Updated explorer hub link in readme (#1656) (c1e81a7)
Tests
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.
Notes
Bug Fixes
- Updated mysql instrumentation to properly wrap the connection pool.getConnection and poolCluster.of (#1647) (4caf1db)
- Added instrumentation to
PoolNamespace.prototype.query
- Added instrumentation to
Continuous Integration
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.
Notes
Bug Fixes
- updated prisma instrumentation to properly parse database connection strings that work across all versions of prisma (#1634) (b2101fd)
Code Refactoring
- run-versioned-tests.sh: added ability to run versioned tests and skip collecting coverage by passing in
SKIP_C8
env var to the job. (#1621) (0ba9dcb)
Documentation
Miscellaneous Chores
- pin testdobule to 3.17.2 as 3.18.0 no longer works on node 14 (#1628) (d68bd9f)
- remove release-please workflow and scripts (#1624) (80f7eb8)
Tests
- pin prisma to 4.14.0 until we fix instrumentation (#1631) (a60659d)
- scripts: fix failing changelog unit test (#1626) (08f48b3)
- config: increase test coverage (#1625) (67f39d8)
- config: revert changes to lib/config/index.js (#1630) (fea1068)
Continuous Integration
- changed versioned tests script to use SKIP_C8 (#1621) (83e95e3)
- add --use-new-release functionality (#1633) (d97b421)
- add ability to generate release notes from conventional commits (#1623) (880a88b)
- create-docs-pr: Set username/email to machine user by default (#1627) (3870a1f)
- fix issue with missing type in the prep-release (#1638) (9a906e8)
- update prep-release to fetch entire history of caller repo (#1641) (428174a)
- update to conditionally add CLI flag to prep-release (#1640) (b167c93)
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.
Notes
Added batching and compression to infinite tracing.
- These options are on by default.
- To restore uncompressed spans set
config.infinite_tracing.compression
tofalse
. - To send single spans vs batches set
config.infinite_tracing.batching
tofalse
. - The environment variables for these new configurations are:
NEW_RELIC_INFINITE_TRACING_BATCHING
andNEW_RELIC_INFINITE_TRACING_COMPRESSION
.
Added support to record Nest.js error stack traces.
- Nest.js is officially supported via underlying instrumentation of express or fastify.
Added job to create a release notes PR in the post-release workflow.
Removed request library and updated helper to use http/https to make requests in tests.
Reduced cognitive complexity in lib/serverless/aws-lambda.js
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.
Notes
BREAKING - Updated the default of
config.transaction_tracer.record_sql
fromoff
toobfuscated
. This means that sql statements will be captured but obfuscated.BREAKING - Route (URL) parameters are now stored as
request.parameters.route.*
attributes on Transactions, root Segments and Spans.After this change, the following becomes true:
Query parameters will be available as attributes prefixed with request.parameters.* on Transactions and Spans.
Route parameters will be available as attributes prefixed with request.parameters.route.* on Transactions and Spans.
Route parameters (aka url parameters) are a common feature of various web frameworks, where you can create a placeholder as part of an API route definition.
For example, given the following Express route definition and request url:
app.get('/api/users/:id', myMiddleware, myController)bash$curl http://localhost:3000/api/users/abc123?id=trueThe route parameter is
id
, and has a value ofabc123
. This would becomerequest.parameters.route.id: abc123
on the Transaction, root Segment, and Span attributes. This example also has a query parameter ofid
, which has a value of true. This would becomerequest.parameters.id: true
on the Transaction, root Segment, and Span attributes.
BREAKING - Removed
captureUrlParams
fromWebFrameworkShim
class.DEPRECATION NOTICE:
shim.unwrap
andshim.unwrapOnce
will no longer function if you attempt to unwrap an item that has been wrapped multiple times.- This is because since we now allow instrumenting the same module more than once, you cannot safely unwrap without breaking all registered instrumentation. We plan to remove
shim.unwrap
andshim.unwrapOnce
in the next major release.
- This is because since we now allow instrumenting the same module more than once, you cannot safely unwrap without breaking all registered instrumentation. We plan to remove
Added the ability to register instrumentation multiple hooks (onRequire, onResolved) for the same resolved moduleName.
- This has been a limitation of the agent from the beginning.
- If you used the api to instrument
api.instrument
,api.instrumentDatastore
,api.instrumentWebframework
,api.instrumentMessages
, orapi.instrumentConglomerate
, it would override existing instrumentation hooks. The effect was that the Node.js agent would not function as designed.
Refactored lib/transaction/tracecontext.js to reduce cognitive complexity.
Refactored lib/transaction/trace/index.js to reduce cognitive complexity.
Upgraded devDependencies jsdoc, and lean-jsdoc-theme.
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.
Notes
- Added a new configuration option
heroku.use_dyno_names
to specify whether or not to useprocess.env.DYNO
for naming the host name and display host. This option defaults to true. If you are on heroku and do not want this functionality setheroku.use_dyno_names
tofalse
. You can also control this configuration options with the environment variable ofNEW_RELIC_HEROKU_USE_DYNO_NAMES
. Thanks @benney-au-le for your contribution 🚀
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.
Notes
- Restored assigning loaded version of agent to require.cache as
__NR_cache
instead of a symbol to properly detect attempts at loading agent twice.
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.
Notes
- Added new API function called
setErrorGroupCallback
, which provides a way for you to customize theerror.group.name
attribute of errors that are captured by the agent. This attribute controls how the Errors Inbox functionality groups similar errors together. To learn more about this function, please refer to our example app.
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.
Notes
Updated http instrumentation to no longer remove the
x-new-relic-disable-dt
header when using AWS SDK v3. This was done to prevent the "The request signature we calculated does not match the signature you provided. Check your key and signing method." error from AWS SDK.Added an API method
setUserID
to provide an ability to associate a unique identifier with a transaction event, transaction trace and errors within transaction. The attribute will beenduser.id
.Added default configuration for security 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.