L’agent Nudge Node.js vous permet de corréler les traces d’application et les mesures de performances afin d’identifier rapidement les goulots d’étranglement et les appels de service problématiques.
*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) n’est pas activable dans cette version.
- L’ OpenTelemetry qui capture les informations des requêtes émises ou reçues depuis ou vers le serveur client.
Dans cette version seul les données d’OpenTelemtry sont collectées.
La sonde NodeJS collecte les métriques reçues par l’entités citée 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électionner le type d’application : NodeJS

Installation de l’Agent NodeJS
A partir du package NPM
- Installez l’agent avec la commande :
A partir du fichier ZIP
Les 3 fichiers d’installation contiennent un token qui permet de télécharger et d’installer tous 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://github_pat_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@github.com/".insteadOf "ssh://git@github.com/"
RUN npm install
Configuration de l’Agent NodeJS
- Si vous avez installé l’agent VIA NPM, vous devez préalablement copier le fichier de configuration dans un autre dossier que le dossier de l’agent car il est déconseillé de modifier un package dans un /node_modules.
Puis à l’aide de la variable d’environnement NUDGE_CONFIG, vous devez indiquer son chemin.
- Configurez l’Agent NodeJS soit par
- les variables d’environnement qui ont pour règle de nommage NUDGE_[SECTION]_[KEY] exemple : NUDGE_NODEJS_AUTOINSTRUMENTATION, NUDGE_NUDGE_URL, etc ..
- le fichier de configuration configurationAgentNodeJS.ini.
Les variables d’environnement sont prioritaires sur la valeur des paramètres du fichier de configuration.
L’avantage de modifier le fichier de configuration est que pour certains paramètres, il n’est pas nécessaire de redémarrer l’agent.
⚠️Récupérez la clé de l’application fournie par NUDGE lors de sa déclaration dans l’IHM et collez sa valeur dans le champ [Nudge]app_id
⚠️L’url pour diriger les métriques vers le collecteur de NUDGE doit être valorisé au champ [Nudge]url
⚠️Le chemin de l’url à NUDGE est valorisé au champ [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”

- [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.
- [NodeJS]autoInstrumentation qui permet de désactiver (false) ou d’activer (true) OpenTelemetry.
- D’autres champs sont présents dont l’utilité est orientée “tests de fonctionnalités et mise au point de l’agent” pré paramétré pour un fonctionnement optimum comme:
- ⚠️ (Ne pas modifier - false) [NodeJS]recordCollecte autorise l’enregistrement sur disque des fichiers JSON, de données brutes OpenTelemetry.
- ⚠️ (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) [Console] affiche des informations dans la console et/ou dans les fichiers logs.
- ⚠️ (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’envoi vers le collecteur Nudge.
Lancement de l’agent avec votre application
Si vous lancez votre application ainsi :
A partir du package NPM : L’agent s’installe dans le dossier /node_modules de votre application
Pour lancer l’agent au format package NPM exemple :
node -r agent.nodejs.nudge [app.js]
A partir du fichier ZIP : L’agent est en dehors de votre application
Pour lancer l’agent au format ZIP, ajoutez le point d’entrée de l’agent comme ceci
node -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