New features
Added
newrelic.startSegment(), which replacesnewrelic.createTracer().This new API method allows you to create custom segments using either callbacks or promises.
Bug fixes
Fixed bug in
preroute config option in Hapi instrumentation.Only applies to Hapi v16 and below. The pre handler wrapping was not properly returning in cases when the element was a string referring to a registered server method, and as a result these elements would be replaced with
undefined.
New features
Added @newrelic/koa as a dependency.
This introduces instrumentation for Koa v2.0.0 or higher. It will be treated as first-party instrumentation within the agent, but publishing it as a separate module allows it to be installed independently according to users' needs.
Improvements
Refactored instrumentation hooks to work with modules.
With this change it is now possible to link against external instrumentation modules.
Improvements
Promise based web framework middleware instrumentation now supports callback based sequencing.
Previously, a promise based middleware was assumed to continue to the next middleware once the promise it returned resolved. This assumption has been relaxed to allow for a callback to be supplied to the middleware to invoke the next middleware.
Improvements
Removed the
sslconfiguration option.TLS is now always used in communication with New Relic Servers. The
sslconfiguration value andNEW_RELIC_USE_SSLenvironment value are no longer used. Setting either value to anything other thantruewill result in a warning.Security bulletin NR18-05:
Fixes issue introduced in 2.8.0 where the agent may have captured all transaction attributes, even with High-security mode enabled on the account. This may have included sensitive data attached to transactions.
All request parameters now prefixed with
request.parameters..Previously request parameters such as route and query parameters were added as attributes without any name changes. For example
/foo?bar=valuewould add the attributebarto the transaction. Now this attribute would be namedrequest.parameters.bar.Any Insights dashboards, alerts, or other NRQL queries using these attributes must be updated to use the new attribute names.
Adds support for EU Datacenter
Bug fixes
Security bulletin NR18-06:
Fixes issue introduced in 2.8.0 where the agent may have captured all transaction attributes, even with High-security mode enabled on the account. This may have included sensitive data attached to transactions.
Removed support for agent attributes include/exclude rules.
These will be coming back in Node Agent v3.0.0. The fix for the above security bulletin required a backwards incompatible change to our attributes.
Fixed bug in Bluebird instrumentation.
Some methods were not instrumented correctly. This would cause a problem if a function was passed to these methods.
Special thanks to Andreas Lind (@papandreou) for helping us find this bug.
Note
This release is deprecated due to an issue where the agent may capture transaction attributes regardless of agent settings. If you are using this release, upgrade your agent to agent version 2.9.1 or higher. For more information, see Security Bulletin NR18-06.
Improvements
Added the
WebFrameworkShim#savePossibleTransactionNamemethod.This method may be used to mark the current running middleware as a potential responder.
savePossibleTransactionNameshould be used if a middleware can't be determined to be a terminal middleware while it executes, but may be responsible for responding after execution has finished.Fixed
dns.resolveresults assertion.Expanded
async_hookstests around maintain transaction context.Added Koa to metric naming objects.
Added
callbackprop tomiddlewareWithPromiseRecorderreturn spec.While we aren't actually wrapping any callback, this is a workaround that gives us access to the active segment. This ensures that all segments inside Koa transaction traces are named correctly, particularly in cases when transaction context may be lost.
Updated
afterprop inmiddlewareWithPromiseRecorderreturn spec to settxInfo.errorHandled = truein cases when there is no error.Because Koa has no concept of errorware in the same sense as Express or Connect (
(err, req, res, next)), the agent now assumes if a middleware resolves, any error that may have occurred can be marked as handled.
Fixes
- Added check for
parentSegmentinasync_hooksinstrumentation, to help ensure that transaction context is maintained.
Note
This release is deprecated due to an issue where the agent may capture transaction attributes regardless of agent settings. If you are using this release, upgrade your agent to agent version 2.9.1 or higher. For more information, see Security Bulletin NR18-06.
New features
Added instrumentation support for MongoDB version 3.
Version 3 of mongodb is now supported. Previously datastore host information (instance metrics) was incorrectly captured by the agent with
mongodbv3. This has been fixed and all features should be functional now.
Improvements
Updated documentation for
apdex_tsetting and removed environment variable.This was never configurable on client side and the documentation was misleading.
Documented environment variables for
slow_sqlconfigurations.Thanks to Olivier Tassinari (@oliviertassinari) for the update!
Updated
hapi/hapi-pre-17/package.jsonto runerrors.tap.jsin more versions.Added internal cache to unwrapped core modules for agent use.
Improved logging around environment facts gathering.
Bug fixes
Enable certain agent attributes when high-security mode is enabled.
During the switch from the old
capture_params/ignored_paramsto the new attribute include/exclude rules, high-security mode was over-zealous in what attributes it disallowed. This has been trimmed back to be in line with other agents.
Notes
Changed
attributes.enabledtotrueby default.In the previous version we defaulted this to
falseto maintain parity withcapture_paramswhich defaulted tofalse. However, this is a invalid parity becauseattribute.enabledcontrols more attributes thancapture_params.
Improvements
Removed unnecessary checks around
Timer.unref()calls.unrefhas been supported since Node v0.9, meaning it will always be present in timers set by the agent (with 0.10 being the earliest supported version).Added a split in the node versions for the
mysql2andcassandraversioned tests.As of
mysql2v1.3.1 andcassandrav3.4.0 the minimum supported version of Node is 4.Replaced as many instances of
{}as possible withObject.create(null).Removed extraneous logger arg in
addCustomAttributecall.
Bug fixes
The agent will no longer generate browser data for ignored transactions.
Expanded Hapi instrumentation to support route
prehandlers.This is a Hapi route config option that was previously uninstrumented, causing transaction names to become invalid. This expanded instrumentation ensures that all additional handlers are wrapped and associated with the main route.
Nouvelles fonctionnalités
Ajout du filtrage des attributs de l'agent via des règles d'inclusion et d'exclusion.
Les attributs de l’agent peuvent désormais être contrôlés à l’aide de règles d’inclusion et d’exclusion précises. Ces règles, décrites ci-dessous, remplacent
capture_paramsetignored_params. Tous les attributs listés dansignored_paramsseront migrés versattributes.excludeen interne, à moins queattributes.excludene soit explicitement défini.Trois nouvelles propriétés de configuration ont été ajoutées à la configuration racine et à chaque destination (plus d’informations sur les destinations plus tard). Ces nouvelles configurations sont :
attributes.enabled- Permet la collecte d’attributs pour la destination.attributes.include- Une liste d’attributs ou de règles de caractères génériques à inclure.attributes.exclude- Une liste d’attributs ou de règles génériques à exclure.
Les règles d'inclusion et d'exclusion peuvent être des règles exactes (par exemple
request.headers.contentLength), ou des règles avec caractères génériques qui correspondent uniquement au début des clés d'attribut (par exemplerequest.headers.*correspondrait à tout en-tête de requête).Ces règles peuvent être spécifiées globalement à la racine de la configuration, ou pour des destinations spécifiques. Ces destinations sont :
transaction_tracer- Contrôle les attributs de trace de transaction.transaction_events- Contrôle les attributs d’événement de transaction.error_collector- Contrôle les attributs des événements d’erreur.browser_monitoring- Contrôle les attributs de transaction de navigateur/RUM.
addCustomParameterrenommé enaddCustomAttribute.La méthode
addCustomParameterest désormais obsolète et sera supprimée dans une future sortie de l'agent. La méthodeaddCustomAttributeest un remplacement direct pour celle-ci.Ajout d’un cache au filtrage des attributs de l’agent.
Pour minimiser la surcharge liée à l’application des règles d’attribut, l’agent met en cache les résultats du filtrage des clés d’attribut et des destinations spécifiques. Le cache est limité à 1000 paires destination-clé par défaut, mais peut être configuré avec
attributes.filter_cache_limit. Ce cache offre une amélioration de 10x pour l’application des règles de filtre pour le taux d’accès au cache.Ajout de
allow_all_headersaux options de configuration et mise à jour de l’instrumentationhttp.Lorsque la valeur est
true, l’agent collectera tous les en-têtes de requête. Cette collecte respecte les règles d’inclusion et d’exclusion d’attribut de l’agent. Un ensemble par défaut de règles d’exclusion est fourni dansnewrelic.js. Ces règles excluent tous les cookies, et les en-têtes d’authentification.Les segments peuvent désormais être marqués comme opaques, ce qui entraîne l’omission des segments internes de la trace de transaction.
Améliorations
Ajout de limites pour les attributs de l’agent afin de maintenir la surcharge de monitoring à un niveau bas.
Les clés et valeurs d’attribut sont limitées à 255 octets chacune. Les clés de plus de 255 octets sont supprimées, et un message d’avertissement est enregistré dans le log. Les valeurs de plus de 255 octets sont tronquées à 255 octets, en respectant l’encodage UTF-8 multi-octets. Les attributs personnalisés sont limités à 64 par transaction. Les attributs au-delà du 64e sont ignorés silencieusement.
Ajout de l'erreur au message de log d'échec de connexion au collecteur.
L’attribut
request_uria été renommé enrequest.uri.Cela aligne le nom de l’attribut avec tous les autres attributs de requête.
Dépendance
https-proxy-agentmise à jour de^0.3.5à^0.3.6.Mise à jour des tests versionnés le cas échéant pour s’assurer que la plupart des versions mineures des modules instrumentés fonctionnent comme prévu.
Correction du test bloquant pour la ligne v1 du pilote Mongo.
Ajout de tests vérifiant que les transactions Hapi 404 génèrent des métriques correctement nommées.
L’instrumentation Hapi fonctionnait correctement, mais nous n’avions pas de tests pour ce cas spécifique.
Débogage
L’agent ne plantera plus lorsque
crypto.DEFAULT_ENCODINGa été modifié.Auparavant, l’agent supposait que le résultat de
hash.digest()était une instance de Buffer. Sicrypto.DEFAULT_ENCODINGest modifié,hash.digest()renverra une chaîne et l’agent plantera. L’agent s’assure désormais que la valeur est une instance de Buffer avant de continuer.Correction de l’erreur si
process.config.variables.node_prefixest manquant.Si
process.config.variables.node_prefixest évalué à faux (ce qui peut arriver si vous utilisez electron, conduisant à ce problème https://support.newrelic.com/s/hubtopic/aAX8W0000008ZMO/new-relic-on-electron-nodejs) la fonctiongetGlobalPackagesdanslib/environment.jsdonnera une erreur alors qu’elle ne le devrait pas.Merci à Jarred Filmer (@BrighTide) pour le correctif !