L’agent NodeJS couvre uniquement les applications lancées par les commandes : ”> node index.js”, ”> keystone index.js”, etc… .
Pour monitorer les applications NodeJS, Nudge APM met à disposition une sonde composée de deux éléments intégrés:
- Le Profiler Natif de NodeJS (inspector) qui est disponible nativement lors de l’installation de nodeJS sur le poste client.
- L’ OpenTelemetry qui capture les informations des requêtes émises ou reçues depuis ou vers le serveur client.
La sonde NodeJS merge les métriques recues par les deux entités cités Profiler et OpenTelemetry puis les envoie au portail Nudge APM

L’installation d’une sonde sur une application NodeJS se fait en quatre étapes :
- Déclaration de l’application dans l’interface Nudge APM
- Installation de l’agent sur le serveur Windows/Linux
- Configuration de l’agent par modification du fichier configurationAgentNodeJS.ini dans son dossier racine.
- Vérifications
Déclaration de l’application
-
À partir du tableau de bord principale de Nudge APM, cliquez sur le bouton Nouvelle application

-
Sélectionnez le type d’environnement de l’application et acceptez les CGU

-
Renseignez les caractéristiques de votre application en prenant soin de bien sélectioner le type d’application : NodeJS

Installation de l’Agent NodeJS
Les 3 fichiers d’installation contiennent un token qui permet de télécharger et d’installer tout les packages y compris OpenTelemetry dédié à l’agent NodeJS.
⚠️ Indication -> Sous docker, les lignes suivantes dans le Dockerfile sont nécessaires pour que le token soit pris en compte lors de l’installation des packages par > npm i
RUN apt install -y git
RUN apt install -y util-linux
RUN apt install -y make gcc g++ python3
RUN git config –global url.”https://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@github.com/”.insteadOf “ssh://git@github.com/”
RUN npm install
Configuration de l’Agent NodeJS
-
Configurez l’Agent NodeJS via le fichier configurationAgentNodeJS.ini.
⚠️Récupérez la clé de l’application fournit par NUDGE lors de sa déclaration dans l’IHM et collez sa valeur dans le champs [Nudge]app_id
⚠️L’url pour diriger les métriques vers le collecteur de NUDGE doit être valorisé au champs [Nudge]url
⚠️Le chemin de l’url à NUDGE au champs [Nudge]pathCollect

- Il est possible de modifier le nom des classes et fonctions inconnues par défaut pour l’affichage du profiler, ainsi que le préfixe du nom de session qui sera ajouté dans l’onglet “Service” colonne “Nom”

- [Profiler]profilerSamplingInterval Intervalle entre 2 échantillons de la stack en µs : 1000 => 1 KHz, 10000 => 100 Hz.
- [NodeJS]refreshLoadCPU période de calcul de charge CPU.
- [NodeJS]filterHeader liste dans un tableau le nom des headers à remonter. Si le tableau est vide, tous les headers des requêtes (OpenTelemetry) remontent.
- [Drives]refreshScanDrives période entre chaque mesures concernant des métriques Disques en minutes.
- [NodeJS]sendUserConnectionString ajoute le user dans la Connection String d’une base de donnée. Cette information sera visible dans l’onglet MAP de Nudge. A vérifier par le client si cela entraine des problèmes de sécurité.
- [NodeJS]stackTraceLimit nombre de ligne maximum que la stack JavaScript remonte vers le collecteur Nudge.
- D’autres champs sont présents dont l’utilité et orienté “tests de fonctionnalités et mise au point de l’agent” pré paramétré pour un fonctionnement optimum comme:
- [NodeJS]openttelemetry qui permet de désactiver (false) ou d’activer (true) OpenTelemetry.
- [NodeJS]profilerV8 qui permet de désactiver (false) ou d’activer (true) le profilerV8 consommateur de ressources CPU. Utile si seul le traçage des appels de requêtes sont nécessaires cela libère de la charge CPU et permet à OpenTelemetry de tracer plus rapidement.
- [NodeJS]recordProfiler autorise l’enregistrement sur disque des fichiers JSON, de données brutes du profilerV8.
- [NodeJS]recordCollecte autorise l’enregistrement sur disque des fichiers JSON, de données brutes OpenTelemetry.
- ⚠️ (Ne pas modifier - false) [NodeJS]exposeGC permet d’interférer avec le Garbage Collecteur de NodeJS (pas le même que celui du CLR pour .NET).
- ⚠️ (Ne pas modifier - true) [NodeJS]waitEndService attend la clôture de OpenTelemetry d’un appel de service (traceId) avant de l’envoyer vers le collecteur Nudge.
- ⚠️ (Ne pas modifier - true) [Profiler]pointEntreeClientOnly renvoie dans Nudge uniquement la stack enfant d’un appel service.
- ⚠️ (Ne pas modifier - 5000) [Profiler]refreshStopStartRecyclage période minimale entre chaque bloc de profilerV8 à merger avec un appel de service client OpenTelemetry.
- ⚠️ (Ne pas modifier - false) [Console] affiche des informations dans la console.
- ⚠️ (Ne pas modifier - en commentaire) [Nudge]sessionId identifiant de session de démarrage de l’agent NodeJS.
- ⚠️ (Ne pas modifier - 3600) [NodeJS]timeoutBufferTransaction temps de rétention des données OpenTelemetry d’un traceId (transaction) avant l’envoie vers le collecteur Nudge.
- ⚠️ (Ne pas modifier - 1000) [NodeJS]bufferSizeSpan nombre de Span (cf OpenTelemetry) en rétention en vu de la Version suivante de l’agent.
Vérifications
- Si vous lancez votre application ainsi : node “./server.js”
- Ajoutez le point d’entrée de l’agent comme ceci -r “[.chemin de l’agent NodeJS]/Agent_Nudge.js” au script de démarrage de votre application.
- Vous utiliserez l’indicateur “-require” ou “-r” qui injecte l’agent NodeJS comme ceci : node -r “[.chemin de l’agent NodeJS]/Agent_Nudge.js” “./server.js”
-
Si votre application se lance sans taper “node” comme par exemple “keystone” ne comportant pas de commutateur d’injection. Il est toujours possible d’injecter l’agent NodeJS en insérant la ligne suivante dans le fichier point d’entrée de votre application.
require(“[.chemin de l’agent NodeJS]/Agent_Nudge.js”);
Si vous rencontrez des difficultés lors de l’installation n’hésitez pas à nous contactez: support@atakama-technologies.com