Improvements
- Improved metadata collection for AWS, Azure, GCE, and Pivotal Cloud Foundry.
Bug fixes
Fixed a bug in PG query obfuscation for
$
placeholders.The agent used to mis-detect
$1
value placeholders as unmatched dollar-quoted strings causing the whole query to be obfuscated to just?
. These placeholders are now correctly detected and obfuscated.
Improvements
Improved documentation for
newrelic.start*Transaction
andTransactionHandle.
Formatting for the
startWebTransaction
andstartBackgroundTransaction
methods was fixed and documentation for theTransactionHandle
class whichgetTransaction
returns was added.
Bug fixes
Fixed parsing the table name from SQL queries.
Quotes around the table name are now stripped after parsing the query and before constructing the metrics.
Fixed unhandled rejection error caused by
ioredis
instrumentation.
Bug fixes
Fixed issue with transaction events not including correct duration values.
This issue was introduced in v2.0.0, and it has affected web transactions histogram and percentile charts.
Fixed issue with Redis instrumentation causing the agent to crash in some cases.
Previously, the Redis instrumentation would crash the agent when Redis commands were called without a callback and after the transaction has ended.
Fixed issue with the agent crashing on Node v4.0-4.4 and v5.0-5.9.
This issue was caused by incorrect shim for Buffer.from(), and it affected older minor versions of Node v4 and v5.
Notes
The New Relic Node Agent v2 is here!
This release contains major changes to the agent instrumentation API, making it easier to create and distribute your own instrumentation for third party modules. Check out Upgrade the Node agent or the Migration Guide for more information on upgrading your application to this version.
BREAKING: Reversed naming and ignore rules.
Naming rules are now applied in the order they are defined.
BREAKING: De-duplicated HTTP request transactions.
Only one transaction is created per
request
event emitted by an HTTP server. Previously this was one transaction per listener per event emitted.BREAKING: Stopped swallowing outbound request errors.
Errors emitted by outbound HTTP requests will no longer be swallowed by the agent.
BREAKING: Node v0.8 is no longer supported. Minimum version is now v0.10.
The v1 agent will continue to support Node 0.8 but will no longer receive updates.
BREAKING: npm v1 is no longer supported. Minimum version is now v2.0.0.
New features
Added API for writing messaging framework instrumentation.
Introduced new
MessageShim
class for writing instrumentation. This shim can be accessed using thenewrelic.instrumentMessages()
API method.Added
amqplib
instrumentation.Applications driven by
amqplib
consumers will now have transactions automatically created for consumed messages. See Troubleshoot message consumers for more information on this instrumentation and its limitations.Advanced instrumentation API is now generally available.
New methods for instrumenting common modules were introduced during the Agent v2 beta. These APIs are now available to everyone:
newrelic.instrument()
/Shim
: This method can be used to instrument generic modules, such as connection pooling libraries, task schedulers, or anything else not covered by a specialized class.newrelic.instrumentDatastore()
/DatastoreShim
: This method is good for instrumenting datastore modules such asmongodb
,mysql
, orpg
.newrelic.instrumentWebframework()
/WebFrameworkShim
: This method is used for instrumenting web frameworks likerestify
orexpress
.
Documentation and tutorials for the new API can be found on our GitHub documentation page: http://newrelic.github.io/node-newrelic/
Improvements
Rewrote built-in instrumentation using the new
Shim
classes.The following instrumentations have been rewritten:
- Datastores
cassandra-driver
ioredis
memcached
mongodb
mysql
node-cassandra-cql
pg
redis
- Web frameworks
director
express
hapi
restify
- Datastores
The
@newrelic/native-metrics
module is now included as an optional dependency.This module will be installed automatically with Agent v2. If it fails to install the agent will still function.
New features
Node v8 is officially supported with the exception of
async
/await
.Support for the new
async/await
keywords is coming in a future release. Until this support is added, New Relic does not support and highly discourages using the Node.js agent with applications that utilizeasync
/await
, as it could result in transaction state loss and data being mixed between transactions.
Fixes
- Fixed issues related to changes in the core networking modules that resulted in transaction state loss. Also instrumented new asynchronous API methods in crypto and inspector.
Bug fixes
Fixed a transaction state loss introduced in Node 7.10.0 when using
net.createConnection
.Added a new segment for
net.connect
,net.createConnection
, andhttp.Agent#createConnection
. Sockets created within a transaction also have theiremit
bound to the segment.Fixed a typo about the name of the default configuration file. Thanks Jacob LeGrone (@jlegrone)!
Notes
- Dropped support for Express <4.6.
New features
Improved API for writing web framework instrumentation.
Introduced a new
WebFrameworkShim
class for writing instrumentation. This shim can be accessed using thenewrelic.instrumentWebframework
API method.
Improvements
Incorporated fixes and features from 1.38.0, 1.38.1, and 1.38.2.
Only one transaction is created for each request emitted by a server.
Previously we created a transaction for each listener on the
request
event.Fixed the beta sign up link in the README.md.
Rewrote instrumentation for Connect, Director, Express, Hapi, and Restify.
These instrumentations were rewritten using the new
WebFrameworkShim
. As a consequence of this rewrite, all our instrumentations now have feature parity, meaning every instrumentation will create Middleware metrics for your server.Tutorials on using the new instrumentation shim can be found on our API docs: http://newrelic.github.io/node-newrelic/.
Removed
express_segments
feature flag.This configuration previously controlled the creation of middleware metrics in our Express instrumentation. With the move to the WebFrameworkShim this was dropped.
New features
Error messages are redacted in High-security mode now.
New configurations were added for disabling some New Relic API methods. These default to enabled and are all disabled in High-security mode.
api.custom_parameters_enabled
controlsnewrelic.addCustomParameters()
api.custom_events_enabled
controlsnewrelic.recordCustomEvent()
api.notice_error_enabled
controlsnewrelic.noticeError()
Updated the default value for
transaction_tracer.record_sql
toobfuscated
.This value was previously
off
by default. This change brings the New Relic Node Agent defaults in line with other New Relic Agents.
Bug fixes
Our when instrumentation better detects when a module is actually
when
.Thanks to Pasi Eronen (@pasieronen) for the contribution!
Quiet a warning in our native promise instrumentation on Node 0.10.
Fixed a bug in the generic pool instrumentation affecting version 3.
Bug fixes
When.js hooks similar to
Promise.onPotentiallyUnhandledRejection
now function as intended.Previously, hooks like
Promise.onPotentiallyUnhandledRejection
would not work due to the way the agent wraps the promise constructor. When.js expects these handles to be assigned directly onto the promise constructor, and our wrapper was intercepting the assignment. The wrapper will now properly proxy these values and assign them onto the original constructor, restoring the proper behavior.Express route parameters will now be properly attached to the corresponding transaction.
Previously, our express instrumentation would read the route parameters and place them on the segment responsible for matching the parameters. This behavior did not place the parameters on the transaction that the segments belonged to, causing the parameters to not show up properly on transaction traces and transaction events.
Bug fixes
Fixed issue with when.js instrumentation not preserving all properties on wrapped Promise constructor.
Previously, the when.js instrumentation would cause an unhandled exception when private methods on the Promise constructor were called (e.g. when adapting functions that do not use promises).