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.
Notes
Added ability to mark errors as expected when using
newrelic.noticeError
, by adding an optional boolean:newrelic.noticeError(error, {customAttributes}, true|false)
when there are custom error attributes.newrelic.noticeError(error, true|false)
if there are no custom error attributes.expected
errors do not affect error metrics or Apdex.
Added ability to disable distributed tracing for aws-sdk 3.290.0 and higher.
Updated README header image to latest OSS office required images
Updated @grpc/grpc-js from 1.8.8 to 1.8.9
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
- This version of the agent was not available, and has been deprecated. The NPM release pipeline did not run successfully. New Relic recommends installing Node agent v9.12.1 instead.
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 instrumentation for Prisma(
@prisma/client
).- Miniumum supported version of
@prisma/client
is 4.0.0. - Captures spans for queries.
- It names them based on the model and action.(i.e. Datastore/statement/Prisma/user/create)
- For statements and queries using the
$queryRaw
,$executeRaw
,$queryRawUnsafe
, and$executeRawUnsafe
the names will be aligned with the raw SQL.(i.e. Datastore/statement/Prisma/User/select)
- Captures database metrics for all statements and queries.
- Captures SQL Traces.
- Provides connection between application and database server via service maps.
- Miniumum supported version of
Huge shoutout to @osmanmrtacar for the original contribution
- Updated
@grpc/protoloader
from 0.7.4 to 0.7.5. - Updated
@grpc/grpc-js
from 1.8.7 to 1.8.8.
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
- Fix: Replaced
request.aborted
withresponse.close
in HTTP instrumentation. - Fixed issue where setting
NEW_RELIC_GRPC_IGNORE_STATUS_CODES
wasn't properly parsing the codes as integers, thus not ignoring reporting errors of certain status codes. - Upgraded
@grpc/grpc-js
from 1.8.4 to 1.8.7.
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
- Fixed error with Lambda/ALB serverless instrumentation when no response headers were included
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.