Configuration de la surveillance d' Node.js s via des agents
Pour surveiller les applications d' Node.js s dans votre environnement à l'aide de l'agent Instana, installez le collecteur Instana Node.js. Le collecteur « Instana » ( Node.js ) est un paquet npm que vous ajoutez aux dépendances de vos applications Node.js. Il permet la collecte de métriques et le traçage automatique, ainsi que la transmission des métriques et des traces vers Instana.
Pour plus d'informations sur les autres options de surveillance d' Node.js, consultez la page Options de surveillance d' Node.js.
- Avant de commencer
- Configuration de la surveillance
- Installation du collecteur « Node.js » sur différentes plateformes
- Installation manuelle du collecteur Node.js
- Activation du collecteur « Node.js »
- Configuration des outils de compilation pour le collecteur d' Node.js s
- Modules complémentaires natifs
- Désactivation du collecteur « Node.js »
- Sujets connexes
Avant de commencer
Pour configurer la surveillance par agent, procédez comme suit :
- Consultez les conditions préalables à la surveillance des applications d' Node.js.
- Installez l'agent hôte d' Instana.
Configuration de la surveillance
Pour configurer la surveillance d' Node.js s à l'aide de l'agent Instana, procédez comme suit :
Installez le collecteur « Node.js » : Choisissez une méthode d'installation adaptée à votre environnement :
- Installation spécifique à la plateforme : suivez la procédure d'installation adaptée à votre environnement.
- Installation manuelle : si votre plateforme ne figure pas dans la liste, installez manuellement le collecteur Node.js.
Si vous utilisez des outils de compilation, configurez-les.
Une fois la surveillance configurée, vous pouvez consulter les métriques et les traces associées à vos applications Node.js dans l'interface utilisateur d' Instana. Pour plus d'informations, consultez la section « Affichage des traces et des métriques ».
Installation du collecteur « Node.js » sur différentes plateformes
En fonction de votre environnement, suivez les étapes décrites dans les sections suivantes pour installer le collecteur d' Node.js s. Le tableau suivant répertorie les options d'installation du collecteur disponibles sur différentes plateformes :
| Plateformes | Installation automatique | Installation manuelle |
|---|---|---|
| Kubernetes et Red Hat OpenShift | [x] | [x] |
| Cloud Foundry | [x] | [x] |
| Apigee Microgateway | [x] | |
| Next.js | [x] |
Kubernetes et Red Hat OpenShift
Si votre application Node.js s'exécute dans un environnement Kubernetes et Red Hat OpenShift, vous pouvez installer le collecteur Instana Node.js automatiquement ou manuellement comme suit :
Installation automatique du collecteur (méthode recommandée) : pour installer le collecteur automatiquement, procédez comme suit :
Installez le webhook Instana AutoTrace.
Remarque : si vous prévoyez d'utiliser le SDK Instana Node.js, consultez la section « Utilisation de API avec le webhook AutoTrace ».Si votre application Node.js et l'agent Instana s'exécutent dans un cluster Kubernetes, configurez l'accès réseau pour les applications surveillées. Pour plus d'informations, consultez la page « Accès au réseau » sur Kubernetes.
Installation manuelle du collecteur : pour installer le collecteur manuellement, consultez la section « Installation manuelle du collecteur d' Node.js s ». N'utilisez la méthode manuelle que si l'installation automatique n'est pas possible.
Sur les systèmes en lecture seule, les modules complémentaires natifs compilés pour une version prédéfinie d' Node.js peuvent entraîner des problèmes de compatibilité avec d'autres versions d' Node.js. Le collecteur ne peut pas décompresser les fichiers binaires précompilés, ce qui empêche le chargement de certains modules natifs. Par conséquent, certaines mesures, telles que les données relatives au ramasse-miettes et certaines statistiques sur la boucle d'événements, ne sont pas collectées. Toutefois, la fonction de traçage générale n'est pas affectée. Pour plus d'informations, consultez la section consacrée au dépannage.
Cloud Foundry
Pour installer le collecteur Instana Node.js sur Cloud Foundry, sélectionnez l'une des options suivantes :
Installation automatique du collecteur (recommandée) : pour Tile 1.177.0 et les versions ultérieures, installez le collecteur Node.js à l'aide du buildpack Instana afin d'automatiser la configuration des applications Node.js sur Cloud Foundry.
Installation manuelle du collecteur : pour installer le collecteur manuellement, consultez la section « Installation manuelle du collecteur d' Node.js s ». N'utilisez la méthode manuelle que si l'installation automatique n'est pas possible.
Apigee Microgateway
Pour utiliser le package de collecte « Instana » ( Node.js ) avec Apigee Microgateway (également appelé edgemicro ), suivez les instructions fournies dans la section « Surveillance d'Apigee Microgateway à l'aide du collecteur « Instana » ( Node.js ) ».
Next.js
Pour utiliser le collecteur Instana Node.js afin de surveiller les applications Next.js, procédez comme suit :
- Installez le collecteur au niveau global ou local.
- Utilisez les indicateurs de chargement pour activer le collecteur.
Installation manuelle du collecteur « Node.js »
Avant d'installer le collecteur, veillez à lire attentivement la section « Avant de commencer ».
Vous pouvez installer le collecteur « Node.js » :
Vous pouvez installer le collecteur d' Node.js s ou.
Installation du collecteur sur place
Pour installer le collecteur Instana Node.js, installez le paquet npm@instana/collector dans votre application en exécutant la commande suivante :
npm install --save @instana/collector@latest
Une fois le collecteur installé, activez-le pour configurer la surveillance. Pour plus d'informations, consultez la section « Activer le collecteur d' Node.js s ».
Installation du collecteur à l'échelle de l'entreprise
Vous pouvez également installer le collecteur « Node.js » au niveau global en suivant les étapes suivantes :
Installez le package
@instana/collectorsur le système cible:Si vous utilisez npm, exécutez la commande suivante :
npm install -g @instana/collector@latestSi vous utilisez yarn, exécutez la commande suivante:
yarn global add @instana/collector@latest
Si vous installez le collecteur dans une application conteneurisée, vous pouvez ajouter l'instruction précédente à
Dockerfile.Déterminez l'emplacement où le paquet est installé. L'emplacement dépend du système d'exploitation. Pour plus d'informations sur l'emplacement où npm installe les paquets, consultez la documentation d' Node.js relative aux dossiers.
Vérifiez que le package
@instana/collectoravec toutes ses dépendances est disponible sur le système cible dans un emplacement connu, tel que/path/to/instana/node_modules/@instana/collector.
Une fois le collecteur installé, activez-le pour configurer la surveillance. Pour plus d'informations, consultez la section « Activer le collecteur d' Node.js s ».
Installation du collecteur à partir d'un paquet précompilé
Pour télécharger manuellement le package compressé précompilé du collecteur Instana Node.js, cliquez sur Téléchargement du collecteur Instana Node.js
Pour configurer la surveillance, activez le collecteur en suivant les instructions de la section « Activer le collecteur d' Node.js s ».
Activation du collecteur « Node.js »
En fonction des modules utilisés dans votre application Node.js, activez le collecteur comme suit :
- Si votre application utilise des modules d' CommonJS, suivez les étapes décrites dans la section « CommonJS ».
- Si votre application utilise des modules ECMAScript, suivez les étapes décrites dans la section ECMAScript.
CommonJS
Pour les applications qui utilisent les modules d' CommonJS, activez le collecteur Node.js en suivant l'une des méthodes suivantes :
- Utilisez l'indicateur «
--requireload » pour l'activation. - Vous devez inclure et initialiser le collecteur « Node.js » comme première instruction de votre application.
Ces méthodes chargent et initialisent le collecteur d' Node.js s avant le code de votre application.
Charger le drapeau --require
Cette approche est privilégiée.
Pour activer le collecteur dans les applications qui utilisent les modules d' CommonJS, effectuez l'une des opérations suivantes au moment de lancer l'exécutable Node.js.
Veillez à ne pas oublier par inadvertance la src/immediate partie lorsque vous définissez NODE_OPTIONS ou ajoutez le --require paramètre. Le chemin doit commencer par ./ pour que Node.js l'identifie comme un chemin relatif et non comme un identifiant de module. Le chemin est évalué en fonction du répertoire de travail actuel.
Définissez la
NODE_OPTIONSvariable avant de lancer le processus d'activation d' Node.js :NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Si vous compilez l'application avec l'option « Docker », vous devez définir cette option
NODE_OPTIONSen ajoutant la ligne suivante à votre fichierDockerfile(après la dernièreFROMinstruction et avant la dernièreCMDinstruction ouENTRYPOINTqui lance lenodeprocessus) :ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Vous pouvez également ajouter le paramètre "
--requireà la commande qui lance Node.js. Si vous démarrez normalement l'application à l'aide de la commande "node app/index.js, ajoutez un drapeau de chargement supplémentaire "--require. Voir l'exemple suivant :node --require ./node_modules/@instana/collector/src/immediate app/index.jsSi cette application est construite et exécutée en utilisant Docker, vous devez modifier le
CMDfinal ou leENTRYPOINTdans votre Dockerfile.Pour plus d'informations sur le paramètre
--require, voir -r, --require module dans la Node.js.
CommonJS Manuel obligatoire
require('@instana/collector')();
// All other require statements must be done after the collector is initialized.
// Note the () after the require statement of the collector which initializes it.
// const express = require('express');
Le code précédent initialise le collecteur avec les options de configuration par défaut. Vous pouvez également initialiser le collecteur Instana Node.js à l'aide d'un objet de configuration personnalisé. Pour obtenir la liste des options de configuration valides, consultez la section « Configuration du collecteur » sur Node.js. Pour plus d'informations sur la configuration de la connectivité entre votre application surveillée et l'agent d' Instana, consultez la section « Communication de l'agent ».
ECMAScript
Si votre application utilise ECMAScript et le @instana/collector collecteur installé en tant que dépendance, vous pouvez activer ce dernier en chargeant le collecteur Instana Node.js à l'aide des indicateurs de chargement Node.js.
Si l'application utilise des modules ECMAScript, effectuez l'une des étapes suivantes lorsque vous démarrez l'exécutable du nœud. La définition NODE_OPTIONS ou l'utilisation de --import l'argument initialise le collecteur d' Node.js s avant le code de l'application. Pour plus d'informations sur les modules ECMAScript, consultez la documentation officielle de l' Node.js.
Définissez la
NODE_OPTIONSvariable avant de lancer le processus d'activation d' Node.js :Si vous compilez l'application avec l'option « Docker », configurez-la
NODE_OPTIONSen ajoutant la ligne suivante à votreDockerfilefichier (après la dernièreFROMinstruction et avant le dernierCMD« orENTRYPOINT» qui lance lenodeprocessus) :Utilisez la commande suivante pour importer le collecteur « Instana » (à partir de la version 18.19 de Node.js ) :
ENV NODE_OPTIONS="--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs"
Vous pouvez également inclure le --import paramètre lors du démarrage de Node.js. Si vous démarrez votre application avec
node app/index.js, ajoutez la --import commande à la fin.Utilisez la commande suivante pour importer le collecteur « Instana » (à partir de la version 18.19 de Node.js ) :
node --import /path/to/instana/node_modules/@instana/collector/esm-register.mjs app/index.js
Le chargeur initialise automatiquement le collecteur Instana Node.js.
- Si votre version d' Node.js est antérieure à la version v18.19.0, vous devez utiliser
--experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjsà la place de--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs. - L'utilisation de
--experimental-loaderavecesm-loader.mjsn'est plus prise en charge dans les versions actuelles et sera supprimée lors de la prochaine mise à jour. Pour plus d'informations, consultez la section « Modifications importantes ».
Activer le collecteur sur Windows
Si l'application utilise des modules ECMAScript et que votre système d'exploitation est Windows, ajoutez file:/// au début du chemin d'accès du chargeur ECMAScript :
--import file:///absolute/path/to/instana/node_modules/@instana/collector/esm-register.mjs
Configuration des outils de compilation pour le collecteur d' Node.js s
Si vous utilisez un outil de bundling (tel que Webpack ou Rollup) ou un transcompilateur (tel que Babel, Traceur ou le compilateur d' TypeScripttsc), consultez la section suivante pour connaître la procédure d'installation du collecteur Node.js ainsi que toute autre considération relative à votre scénario de build.
Regroupeurs
Lorsque vous pré-traitez votre application serveur Node.js avec un bundler, tel que Webpack ou Rollup, assurez-vous que vous ne bundlez que votre code et non le code de vos dépendances à partir du dossier " node_modules.
Vous devez exclure les dépendances pour les raisons suivantes:
- Le module
@instana/collectorne peut pas être pré-traité avec Webpack. Entre autres problèmes, les instructionsrequiredynamiques utilisées dans votre code ne sont pas résolues correctement. - Pour instrumenter des bibliothèques tierces, le paquet « npm
@instana/collector» intercepte lerequireprocessus de « Node.js ». Cependant, si ces bibliothèques ne sont pas chargées au moment de l'exécution, mais sont plutôt intégrées à votre propre code lors de la compilation, aucunrequireprocessus n'est exécuté et l'instrumentation n'est pas appliquée. Par conséquent, le traçage d' Instana ne fonctionne pas ou ne fonctionne que partiellement, c'est-à-dire qu'il ne fonctionne que pour les modules principaux d' Node.js, tels que [...http], car ces modules sont exclus du regroupement par défaut.
Par conséquent, vous devez configurer votre programme de mise en bundle à l'aide du module webpack-node-externals de sorte que tout ce qui se trouve dans node_modules soit exclu de toutes les transformations de code:
// your webpack.config.js:
const nodeExternals = require('webpack-node-externals');
module.exports = {
...
// externals: nodeModules,
externals: [nodeExternals()],
...
};
Si vous utilisez l'interface CLI d' Angular, notamment avec Angular Universal ou SSR, vous devez ajouter "externalDependencies": ["@instana/collector"] (et éventuellement d'autres bibliothèques qu'il @instana/collector instrument) à votre angular.json fichier afin de les exclure du regroupement.
Transpilateurs
Si vous utilisez un transpileur, tel que TypeScript ou Babel, assurez-vous que votre transpileur produit du code CommonJS ou ECMAScript dist.
Initialiser le traceur via les drapeaux de chargement pour CommonJS et ECMAScript.
Pour plus d'informations sur l'accès au SDK dans votre code, voir les modules ECMAScript.
Extensions natives
Le programme de suivi installe les modules complémentaires natifs suivants:
- gcstats.js: extrait des informations sur la récupération de place.
- event-loop-stats: extrait des informations sur l'activité de la boucle d'événements.
- autoprofile: recherche les problèmes de performances ou les goulots d'étranglement. AutoProfile™ est désactivé par défaut. Pour activer AutoProfile™, voir Configuration du collecteurNode.js.
Ces modules complémentaires constituent des dépendances facultatives d' npm. S'ils ne peuvent pas être installés sur votre système, le collecteur fonctionne toujours comme prévu. Si vous rencontrez un problème avec les extensions, consultez la section Dépannage. Pour plus d'informations sur les exigences relatives aux modules complémentaires d' C++, consultez la documentation officielle d' Node.js ou celle de node-gyp.
Désactivation du collecteur « Node.js »
Vous pouvez utiliser des variables d'environnement pour désactiver le collecteur Node.js pour le développement (local). L'infrastructure Express a rempli la variable d'environnement NODE_ENV à cette fin.
Pour désactiver le collecteur Node.js , procédez comme suit:
Chargez le collecteur « Node.js » comme suit :
if (process.env.NODE_ENV !== 'development') { require('@instana/collector')(); }Démarrez votre application en local avec la variable
NODE_ENVdéfinie surdevelopment. Voir cet exemple :export NODE_ENV=developmentNODE_ENV=development node myApp.js
Sujets connexes
- Node.js Présentation Découvrez le collecteur Instana Node.js, notamment ses restrictions, les versions d' Node.js et les bibliothèques prises en charge, ainsi que d'autres informations relatives à ce collecteur.
- Node.js Configuration du collecteur Découvrez comment configurer le collecteur Instana Node.js pour aller au-delà des options par défaut.
- Node.js collecteur API Obtenez des informations sur l'utilisation de la fonction qui initialise le collecteur Instana Node.js et sur l'utilisation de Instana API pour les activités comprenant la configuration du logger après l'initialisation et l'activation de OpenTracing pour Node.js avec Instana.
- Node.js Référentiel « collector GitHub » Le référentiel « GitHub » pour
@instana/collectorle paquet utilisé pour la surveillance des applications du serveur Node.js à l'aide de Instana.