Notes
Added support for URL obfuscation using regex (Thanks for your contribution @matewilk)
- For Distributed Tracing, this means that:
- Incoming and outgoing requests'
pathwill be obfuscated - Transaction's
request.urlattribute will be obfuscated - Span's
http.uripath will be obfuscated
- Incoming and outgoing requests'
- For transactions, this means that:
- Transaction trace details
urlwill be obfuscated
- Transaction trace details
- With the following example configuration, URL obfuscation will turn
/api/v1/users/12345456/editto/api/v1/users/**/edit.url_obfuscation: {enabled: true,regex: {pattern: /(\/api\/v1\/users\/)([\d]+)(\/.*$)/,flags: "i",replacement: '$1**$3'}} - You can also use environment variables to configure URL obfuscation:NEW_RELIC_URL_OBFUSCATION_ENABLED: "true",NEW_RELIC_URL_OBFUSCATION_REGEX_PATTERN: '/(\/api\/v1\/users\/)([\d]+)(\/.*$)/',NEW_RELIC_URL_OBFUSCATION_REGEX_FLAGS: 'i',NEW_RELIC_URL_OBFUSCATION_REGEX_REPLACEMENT: '$1**$3'
- For Distributed Tracing, this means that:
Add a new tracking type of instrumentation. This will be responsible for logging
Supportability/Features/Instrumentation/OnResolved/<pkg>andSupportability/Features/Instrumentation/OnResolved/<pkg>/Version/<version>metrics when packages are required.
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
Changed GCP metadata parsing to use
json-bigintto avoid loss of precision from numerical instance ID.Instrumented
winston.loggers.addso it works likewinston.createLogger.
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
getBrowserTimingHeaderto allow the browser agent to be generated even when not in a transaction by addingallowTransactionlessInjectionto function options.allowTransactionlessInjectionis a boolean option, and when set totrue, will allow injection of the browser agent when not in a transaction. This is intended to be used in frameworks that build Static Site Generation(SSG). Note that if you're using this option, you may need to wait until the Node agent has established a connection before callinggetBrowserTimingHeader. To wait until the agent is connected, you can add the following check to your code:
if (!newrelic.agent.collector.isConnected()) { await new Promise((resolve) => { newrelic.agent.on('connected', resolve) })}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 check to the code level metrics utility to ensure filePath was set before adding the
code.*attributes.Updated to latest version of
@newrelic/test-utilities.Fixed issue where listing of dependencies and packages from symlinked nested directories created an infinite loop which caused the agent to never connect.
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 system info gathering to prevent unhandled promise rejection when an error occurs reading
/procinformation.
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 support for Code Level Metrics on API methods:
startSegment,startBackgroundTransaction, andstartWebTransaction.
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
@grpc/grpc-jsinstrumentation to work with 1.8.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.
Notes
Reintroduced throttling during reading of instrumented application's dependency tree during startup, to prevent EMFILE issues.
Improved Restify support
- Added a new test stanza to run restify >=10 on Node 18.
- Update our versioned tests to support Restify 9.0.0.
Laid foundation for supporting Code Level Metrics via CodeStream. Note that this integration is not fully finished and should not be used.
Improved the readability and maintainability of agent by reducing the Cognitive Complexity of various aspects of the agent.
Added
newrelic.noticeError()example to our API docs.Upgraded @grpc/grpc-js from 1.6.9 to 1.7.3.
Upgraded @grpc/proto-loader from 0.6.13 to 0.7.3.
Removed async from benchmark tests, fixed failing benchmark suites, and removed deprecated suite.
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 configuration option,
grpc.ignore_status_codes, which can be used to select nonzero gRPC status codes to ignore and not report as errors.
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
Dropped support for
vision, and instead only instrument@hapi/vision.Updated configuration system to automatically create an environment variable mapping for a new config value.
- It will follow a convention of
NEW_RELIC_PATH_TO_CONFIG_KEY. - For example if there is a new configuration option of
config.nested.object_path.enabledthe env var would beNEW_RELIC_NESTED_OBJECT_PATH.ENABLED.
- It will follow a convention of
Removed
transaction_tracer.hide_internalsconfiguration. All of the internal configuration is now handled by Javascript symbols instead of non-enumerable properties, so there is no longer a performance penalty, as symbols are already hidden by default.
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.