New Relic propose plusieurs outils pour vous aider à obtenir les informations nécessaires pour fournir des métriques utiles sur votre application Node.js. Il s’agit notamment de :
- Lecture des noms de route (si utilisés) à partir des routeurs Express et Restify
- Utiliser l'API pour nommer la requête en cours, soit avec des noms simples, soit avec des groupes de contrôleurs avec des actions
- Règles de support stockées dans de votre agent configuration qui peuvent marquer requests à renommer ou à ignorer en fonction d'expressions régulières correspondant aux URL brutes de la demande (également disponibles sous forme d'appel d'API)
Le nombre de noms suivis par New Relic doit être suffisamment petit pour que l'expérience utilisateur soit robuste. Il doit également être suffisamment grand pour fournir la bonne quantité d’informations (sans vous submerger de données) afin que vous puissiez identifier plus facilement les points problématiques de votre application.
Pour plus d'informations, consultez la documentation de configuration de l'agent Node.js, la documentation de l'API de l'agent Node.js sur Github et les applications d'exemples d'agent Node.js
Demander des noms
L'agent Node.js capture la méthode HTTP avec un chemin potentiellement paramétré (tel /user/:id
que) ou une expression régulière (telle /^/user/([-0-9a-f]+)$/
que). Ces informations font partie du nom de la demande.
Si vous avez pris en charge le suivi lent des transactions et avez ajouté 'request.parameters.*'
à attributes.include
dans votre fichier de configuration, le trace des transactions aura également les paramètres de la requête et leurs valeurs attachées. Si vous n'aimez pas les noms de requête utilisés par l'agnet Node.js, vous pouvez utiliser l'appel d'API pour créer des noms plus descriptifs.
Conseil
Si vous regroupez vos requests sous le nom générique, alors /*
est suffisant, et vous n'avez pas besoin de personnaliser votre fichier configuration ni d'appeler d'API.
Exigences
New Relic utilise des noms de requête pour regrouper requests de plusieurs graphiques et tableaux. La valeur de ces visualisations diminuera à mesure que le nombre de noms de demandes différents augmentera.
Par exemple, n'incluez pas de données potentiellement dynamiques telles que le GUID, les identifiants numériques ou l'horodatage dans les noms de requête que vous créez. Si votre requête est suffisamment lente pour générer une trace de transaction, cette trace contiendra l'URL d'origine. Si vous activez la capture des paramètres, le paramètre sera également attaché à la trace.
Conseil
Évitez d’avoir plus de 50 noms de transactions différents. Par exemple, si vous avez plus de quelques centaines de noms de requêtes différents, repensez votre stratégie de dénomination.
Évitez les problèmes de regroupement métrique
L'API de dénomination des requêtes aide New Relic à éviter les problèmes liés à la gestion d'un trop grand nombre de métriques, ce que l'on appelle parfois « l'explosion de métriques ». New Relic dispose de plusieurs stratégies pour gérer ces problèmes ; la plus grave consiste simplement à ajouter l'application incriminée à votre liste de refus.
La principale raison pour laquelle vous devez être prudent lors de l’utilisation de ces outils de dénomination de requêtes est d’éviter que cela n’arrive à votre application. Pour plus d'informations, consultez Problèmes de regroupement métrique.
Lignes directrices
Définissez vos règles de configuration des plus spécifiques aux plus générales. Les premières règles répertoriées dans votre fichier de configuration ou ajoutées avec l'API de nommage des transactions de Node.js seront appliquées en premier et doivent être étroitement ciblées. Des règles de « fall-through » plus générales doivent être ajoutées vers la fin de la liste, car elles seront évaluées dans l'ordre dans lequel elles ont été configurées ou ajoutées à l'aide de l'API de dénomination des transactions Node.js.
Charger l'API
Assurez-vous que le chargement du module New Relic est la première chose que fait votre application, car il doit bootstrap avant que le reste de votre application ne se charge :
const newrelic = require('newrelic');
Cela renvoie l'API New Relic Node.js. Vous pouvez exiger en toute sécurité le module de plusieurs modules de votre application, car il ne s'initialise qu'une seule fois.
Demande d'appel d'API
Voici un résumé de la demande d'appel d'API pour l'agent Node.js de New Relic.
instrumentation personnalisée appel d'API
Utilisez ces appel d'API pour étendre votre instrumentation avec instrumentation personnalisée.
métriques personnalisées appel d'API
Utilisez ces appels d'API pour enregistrer des métriques arbitraires supplémentaires.
événement personnalisé appel d'API
Utilisez ces appels d'API pour enregistrer un événement supplémentaire :
Méthodes de gestion des transactions
Utilisez ces appels d'API pour interagir avec la transaction en cours
Règles pour nommer et ignorer requests
Si vous ne souhaitez pas placer d'appels au module New Relic directement dans le code de votre application, vous pouvez utiliser des règles basées sur des modèles pour nommer requests. Il existe deux ensembles de règles : un pour renommer requests et un pour marquer les requêtes à ignorer par l'instrumentation de New Relic.
Voici la structure des règles dans l'agent Node.js de New Relic.
Voici des exemples complets de la manière dont les règles sont incluses dans le fichier de configuration :
Appel d'API pour les règles
Voici les appels d'API pour nommer et ignorer les règles avec l'agent Node.js de New Relic.