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 !