Configuration du collecteur « Node.js »
Dans la plupart des cas, vous devez initialiser le collecteur Instana Node.js et require('@instana/collector')(); conserver les options de configuration par défaut.
- Ordre de priorité des paramètres
- Communication avec l'agent
- Désactivation des événements de fin de ligne (EOL) d' Node.js
- traçage
- Autoriser la sortie de la racine de la portée sans la portée de l'entrée
- Ignorer les points de terminaison
- Désactiver le traçage
- Désactivation du traçage automatique
- Désactivation d' W3C
- Désactivation de l'intégration d' OpenTelemetry
- Désactivation du traçage des threads de travail
- Capture des traces de pile
- Capture des intervalles de journalisation
- Configuration d'un chemin package.json personnalisé
- Nom du service
- Kafka en-têtes de corrélation de trace
- HTTP 4xx Signalement des erreurs via les codes d'état
- Définition du nom de processus
- Signalement des rejets de promesses non gérés
- Configuration du niveau de journalisation de traçage
- AutoProfile
- Agrégation automatique des appels de sortie courts
- Délai de transmission des données
- Désactiver le recours aux modules complémentaires natifs précompilés
- Référence de configuration complète
- Sujets connexes
Ordre de priorité des paramètres
À partir de la version 6, lorsque vous définissez plusieurs configurations, l'ordre de priorité suivant s'applique (du plus élevé au plus faible) :
- Variables d'environnement (priorité maximale; elles prévalent sur les autres configurations)
- Configuration en code
- Configuration de l'agent
- Valeurs par défaut
Communication avec l'agent
Vous pouvez configurer le collecteur pour modifier l'hôte et le port de l'agent.
Hôte de l'agent
Le collecteur tente de communiquer avec l'agent Instana via l'adresse IP 127.0.0.1 et via la passerelle par défaut de l'hôte en tant qu'option de secours. Si l'agent n'est pas disponible via l'une de ces adresses IP, indiquez l'option agentHost pour utiliser une adresse IP personnalisée.
require('@instana/collector')({
agentHost: '::1' // use IPv6 to contact via localhost
});
Ou tirez parti d'une variable d'environnement.
require('@instana/collector')({
agentHost: process.env.HOST_IP
});
S'il n'est pas configuré, le collecteur Instana recherche une variable d'environnement appelée INSTANA_AGENT_HOST et utilise ce qui est défini dans cette variable d'environnement pour communiquer avec l'agent. S'il n'existe pas de variable d'environnement de ce type, il va d'abord essayer de contacter l'agent sur localhost, puis sur la passerelle par défaut.
Port de l'agent
Le collecteur tente de communiquer avec l'agent « Instana » via le port 42699. Si le port a été modifié, vous pouvez utiliser l'option agentPort pour modifier le port.
require('@instana/collector')({
agentPort: 42699
});
S'il n'est pas configuré, le collecteur Instana recherche une variable d'environnement appelée INSTANA_AGENT_PORT et utilise ce qui est défini dans cette variable d'environnement pour communiquer avec l'agent. S'il n'existe pas de variable d'environnement de ce type, il bascule sur le port par défaut 42699.
Kubernetes et Red Hat OpenShift
Si votre application Node.js et l'agent Instana s'exécutent dans un cluster Kubernetes, consultez la documentation relative à l'accès réseau à l'adresse Kubernetes pour obtenir des informations sur la configuration requise dans ce contexte.
Désactivation des événements de fin de ligne (EOL) d' Node.js
Dans les environnements non « serverless » équipés d'un agent Instana, le Tracer d' Node.js déclenche des événements d'incident lorsqu'il détecte que la version d' Node.js en cours d'exécution a atteint sa fin de vie (EOL).
Pour désactiver ces événements EOL, vous pouvez les désactiver à l'aide de la variable d'environnement suivante :
INSTANA_TRACING_DISABLE_EOL_EVENTS=true
Pour obtenir la liste complète des versions d' Node.js en fin de vie, consultez la page officielle des versions d' Node.js.
Traçage
Le traçage offre une visibilité de bout en bout sur votre application en enregistrant des informations détaillées sur les requêtes à mesure qu'elles transitent par les différents services et composants.
Le traçage est activé par défaut. Pour désactiver le traçage, que ce soit de manière globale ou sélective, consultez la section consacrée à la désactivation du traçage pour connaître les options de configuration.
Autoriser une section de sortie racine sans section d'entrée
Par défaut, l'outil Tracer de Instana Node.js ne capture que les segments de sortie pour lesquels il existe un segment d'entrée actif. Vous pouvez activer cette fonction pour permettre au traceur de tracer des travées de sortie autonomes.
Pour activer cette fonction, utilisez l'une des options suivantes :
Définissez la variable
INSTANA_ALLOW_ROOT_EXIT_SPANd'environnement.Configurer la fonction par le biais de la fonction d'initialisation du traceur :
require('@instana/collector')({ tracing: { allowRootExitSpan: true } });
Si INSTANA_ALLOW_ROOT_EXIT_SPAN est configuré sur 1 ou true, ou si allowRootExitSpan est défini sur true, le traceur capture les segments de sortie même en l'absence de segment d'entrée actif.
Cette fonctionnalité est utile dans les cas suivants, où les tâches sont déclenchées par un mécanisme qui n'est pas pris en charge par l'instrumentation automatique d' Instana :
- Messages entrants provenant de bibliothèques de messagerie non prises en charge
- Les requêtes effectuées via des protocoles non pris en charge, tels que le protocole « raw » Transmission Control Protocol ( TCP ) ou WebSocket
- Les tâches planifiées qui sont lancées en interne par l'application en utilisant des mécanismes tels que "
setTimeout, "setIntervalou des bibliothèques de planification Node.js non prises en charge
Ignorer les points de terminaison
À partir de l'outil de traçage d' Node.js ( Tracer 4.9.0 ), vous pouvez réduire l'ingestion de données superflues en excluant certaines traces ou certains appels. Ce mécanisme de filtrage affine la collecte de vos traces. Pour désactiver les traces, définissez ces paramètres dans les paramètres de configuration de Tracer de l' Node.js :
- Technologie : Indiquez la technologie concernée, par exemple,
Kafka,RedisDynamoDB, ouHTTP. - Méthode : Identifiez la méthode à exclure. Par exemple, excluez ces méthodes pour les technologies suivantes :
Kafka:send,consumeRedis:get,typeDynamoDB:query,scanHTTP:get,post
- Terminal (le cas échéant) : affinez davantage le filtrage en fonction de terminaux spécifiques. Par exemple, les points de terminaison pour les technologies suivantes sont définis comme suit :
Kafka: Le point de terminaison correspond au nom du sujet.HTTP: Le point de terminaison correspond au chemin d'accès URL.
- Connexion (facultatif) : exclure les traces d'une connexion spécifique. Par exemple, la connexion pour les technologies suivantes est définie comme suit :
Redis: La connexion correspond à la chaîne de connexion.HTTP: La connexion comprend l'hôte et le port.
La fonctionnalité permettant d'ignorer des points de terminaison est soumise aux restrictions suivantes :
- Cette fonctionnalité est actuellement disponible pour Redis, DynamoDB,, Kafka et HTTP. Cependant, seuls Kafka et HTTP prennent en charge le filtrage à la fois par méthode et par point de terminaison.
- La bibliothèque ` Kafka.js ` prend en charge la méthode ` sendBatch `, qui permet d'envoyer des messages à plusieurs sujets à la fois. Lorsque vous filtrez les traces en utilisant à la fois la méthode et le point de terminaison, indiquez tous les points de terminaison (sujets) concernés dans la configuration. Si un sujet est omis, le traçage n'est pas ignoré.
- Le filtrage des connexions n'est actuellement pris en charge que pour Redis et HTTP.
- Le filtrage des appels d'entrée de type « HTTP » est actuellement pris en charge.
Règles de filtrage
Les règles de filtrage des traces sont les suivantes :
- Lorsqu'une trace est ignorée, toutes les traces suivantes en aval sont également ignorées.
- Utilisez
*pour ignorer tous les points de terminaison, toutes les méthodes ou toutes les connexions. - Les valeurs des points de terminaison (telles que les noms de sujets « Kafka ») restent cohérentes d'un service à l'autre.
- Les noms des méthodes peuvent varier en fonction du langage de programmation et de la technologie utilisés. Consultez l'interface utilisateur d' Instana pour déterminer la méthode et le point de terminaison appropriés pour votre service.
La capture d'écran suivante de l'interface utilisateur d' Instana fournit une référence visuelle permettant d'identifier la méthode et le point de terminaison appropriés pour la configuration :

Options de configuration
Vous pouvez activer l'exclusion des points de terminaison en utilisant l'une des options suivantes :
- Variables d'environnement
- Configuration en code
- Configuration de l'agent
Variables d'environnement
Vous pouvez configurer les points de terminaison à ignorer en utilisant les variables d'environnement suivantes pour filtrer les points de terminaison par service :
INSTANA_IGNORE_ENDPOINTS_PATHINSTANA_IGNORE_ENDPOINTS
INSTANA_IGNORE_ENDPOINTS_PATH
Grâce à cette variable d'environnement, vous pouvez configurer le filtrage via un fichier d' YAML s externe, comme le montre l'exemple suivant :
INSTANA_IGNORE_ENDPOINTS_PATH=/absolute/path/to/config.yaml
Dans l'exemple précédent, le config.yaml fichier doit comporter un chemin d'accès absolu et respecter la structure de configuration indiquée.
L'exemple suivant illustre le filtrage par méthode :
tracing:
ignore-endpoints:
redis:
- get
- type
dynamodb:
- query
kafka:
- send
http:
- get
Cette configuration filtre les traces suivantes :
GETetTYPEles commandes pourRedisQUERYcommande pourDynamoDBSENDméthode pourKafkaet toutes les traces en avalGETméthode pourHTTPet toutes les traces en aval
L'exemple suivant illustre le filtrage par méthode, point de terminaison et connexion :
tracing:
ignore-endpoints:
kafka:
- methods: ["consume"]
endpoints: ["topic1", "topic2"]
- methods: ["consume", "send"]
endpoints: ["topic3"]
- methods: ["*"] # Applied to all methods
endpoints: ["topic4"]
- methods: ["consume"]
endpoints: ["*"] # Applied to all endpoints
http:
- methods: ["get"]
endpoints: ["/status"]
- methods: ["get", "post"]
endpoints: ["/status", "/v1/status"]
- methods: ["*"]
connection: ["localhost:3000"]
redis:
- methods: ['get']
connections: ['192.168.0.1:9191']
Cette configuration filtre les traces suivantes :
CONSUMEméthode pourtopic1ettopic2dansKafkaet toutes les traces en avalCONSUMEetSENDles méthodes pourtopic3dansKafkaet toutes les traces en aval- Toutes les méthodes (
*) pourtopic4dansKafkaet toutes les traces en aval CONSUMEméthode pour tous les sujets (*) dansKafkaet toutes les traces en avalGETméthode vers l' URL/statusdansHTTPet toutes les traces en avalGETetPOSTles méthodes aux URL/status, ainsi que/v1/statusHTTPdans toutes les traces en aval- Toutes les méthodes de connexion (
*)localhost:3000et toutes les traces en aval GETméthode à l'établissement de la connexion192.168.0.1:9191pourRedis
Vous pouvez combiner les deux options de filtrage (méthode uniquement et méthode et point de terminaison) dans le même fichier de configuration.
Cette configuration est compatible avec la structure d' configuration.yaml de l'agent.
INSTANA_IGNORE_ENDPOINTS
Grâce à cette variable d'environnement, vous pouvez exclure des traces en vous basant uniquement sur les noms des méthodes.
INSTANA_IGNORE_ENDPOINTS=redis:get,type
Cette configuration exclut les GET commandes TYPE et du redis paquet de la journalisation.
Pour configurer des exclusions pour plusieurs paquets, utilisez les configurations indiquées dans l'exemple suivant.
INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:send;http:get
Cette configuration filtre les traces suivantes :
GETetTYPEles commandes dansRedisQUERYetSCANles commandes dansDynamoDBSENDméthode dansKafkaGETméthode dansHTTP
Configuration en code
Vous pouvez configurer les points de terminaison à ignorer en utilisant la configuration intégrée au code pour filtrer les points de terminaison par service.
L'exemple suivant illustre le filtrage par méthode :
require('@instana/collector')({
tracing: {
ignoreEndpoints: {
redis: ['get', 'type'],
dynamodb: ['query', 'scan'],
kafka: ['send'],
http: ['get']
}
}
});
Cette configuration filtre les traces suivantes :
GETetTYPEles commandes dansRedisQUERYetSCANles commandes dansDynamoDBSENDméthode dansKafkaet toutes les traces en avalGETméthode dansHTTPet toutes les traces en aval
L'exemple suivant illustre le filtrage par méthode et par point de terminaison :
require('@instana/collector')({
tracing: {
ignoreEndpoints: {
kafka: [
{ methods: ['consume'], endpoints: ['topic1', 'topic2'] },
{ methods: ['send'], endpoints: ['topic3'] }
],
http: [
{
methods: ['get'], endpoints: ['/status']
}
]
}
}
});
Cette configuration filtre les traces suivantes :
CONSUMEméthode pourtopic1ettopic2dansKafkaet toutes les traces en avalSENDméthode pourtopic3dansKafkaet toutes les traces en avalGETméthode vers l' URL/statusdansHTTPet toutes les traces en aval
Vous pouvez utiliser les deux options de filtrage (méthode uniquement et méthode et point de terminaison) dans la même configuration.
Configuration de l'agent
Vous pouvez également ignorer de manière centralisée les points de terminaison de tous vos services en les configurant via l'agent. Veillez toutefois à bien prendre connaissance des règles applicables avant de poursuivre. Pour plus d'informations, consultez la section « Ignorer des terminaux à l'aide de l'agent ».
Désactiver le traçage
Pour désactiver le traçage, vous pouvez soit le désactiver complètement, soit exclure de manière sélective certaines instrumentations ou des groupes entiers, tels que les bases de données, la messagerie ou la journalisation. Cette flexibilité vous permet d'ajuster le traçage en fonction des besoins de votre application.
Pour appliquer la configuration permettant de désactiver le traçage, utilisez l'une des méthodes suivantes :
- Variables d'environnement
- Configuration en code
- Configuration de l'agent ( YAML )
Désactiver tout le traçage
La désactivation du traçage empêche totalement le traçage d' Instana s de collecter ou de signaler des segments. Cette approche peut s'avérer utile dans certains cas, par exemple pour le débogage, les tests ou lorsque le traçage n'est temporairement pas nécessaire.
Lorsque le traçage est désactivé, ni l'instrumentation automatique ni le SDK de traçage ne sont actifs. Tous les appels au SDK sont ignorés sans générer d'erreurs ni de segments.
Pour désactiver tout le traçage, utilisez l'une des méthodes suivantes :
Variable d'environnement : définissez les variables d'environnement
INSTANA_TRACING_DISABLEsurtrue.INSTANA_TRACING_DISABLE=trueConfiguration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { disable: true } });
Désactivation de certains instruments
Utilisez l'option suivante pour désactiver le traçage pour des instrumentations spécifiques ou pour un paquet en particulier. Pour trouver les noms appropriés, consultez les valeurs Instrumentation identifier répertoriées dans la section « Bibliothèques prises en charge ».
Pour désactiver certaines instrumentations, utilisez l'une des méthodes suivantes :
Variable d'environnement : définissez la variable
INSTANA_TRACING_DISABLE_INSTRUMENTATIONSd'environnement comme indiqué dans l'exemple suivant :INSTANA_TRACING_DISABLE_INSTRUMENTATIONS=redis,graphqlDans cet exemple, le traçage est désactivé pour
redisetgraphqlavec cette configuration. Aucune portée n'est enregistrée ni communiquée pour ces deux instruments.Configuration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { disable: { instrumentations: ['redis', 'graphql'] } } });
Désactivation des groupes d'instrumentation
Vous pouvez désactiver des catégories entières d'instruments associés en indiquant des noms de groupes. Cette approche est utile lorsque vous souhaitez désactiver le traçage pour un ensemble plus large de bibliothèques à l'aide d'une seule configuration.
La désactivation au niveau du groupe est actuellement limitée aux catégories suivantes :
Pour désactiver certains groupes d'instrumentation, utilisez l'une des méthodes suivantes :
Variable d'environnement : définissez la variable
INSTANA_TRACING_DISABLE_GROUPSd'environnement comme indiqué dans l'exemple suivant :INSTANA_TRACING_DISABLE_GROUPS=logging,databaseDans cet exemple, toutes les instrumentations des groupes
loggingdatabaseset sont désactivées avec cette configuration. Aucune donnée de portée n'est collectée ni communiquée pour les instruments appartenant à ces groupes.Configuration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { disable: { groups: ['logging', 'database'] } } });
Désactivation du traçage via la configuration de l'agent
Vous pouvez également désactiver globalement les instrumentations ou les groupes pour tous vos services en les configurant via l'agent. Pour plus d'informations, consultez la section « Désactivation du traçage ».
Désactiver le traçage à l'aide d'une liste plate unique
Avec le format de liste plate, vous pouvez désactiver plusieurs instrumentations ou groupes en utilisant une liste séparée par des virgules.
Pour désactiver le traçage sous forme de liste plate unique, utilisez l'une des méthodes suivantes :
Variable d'environnement : définissez la variable d'environnement
INSTANA_TRACING_DISABLEcomme indiqué dans l'exemple suivant :INSTANA_TRACING_DISABLE=redis,graphql,logging,databaseDans cet exemple, le traçage est désactivé tant pour les instrumentations individuelles (
redisetgraphql) que pour les groupes entiers (loggingetdatabase). Aucune plage n'est enregistrée pour aucune des entrées spécifiées.Configuration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { disable: ['redis', 'graphql', 'logging', 'database'] } });
Désactivation du traçage automatique
Le traçage automatique est également activé par défaut. Pour désactiver uniquement le traçage automatique (en laissant le traçage manuel activé avec le kit SDK ou openTraing), indiquez l'option suivante dans la fonction d'initialisation :
require('@instana/collector')({
tracing: {
automaticTracingEnabled: false
}
});
Enfin, vous pouvez désactiver le traçage automatique en définissant la variable d'environnement INSTANA_DISABLE_AUTO_INSTR=true.
Lorsque le traçage automatique est désactivé, vous pouvez toujours utiliser le kit SDK ou l'API OpenTracing pour créer des étendues manuellement.
Désactivation d' W3C
Par défaut, le collecteur Instana Node.js traite et transmet les en-têtes tracestate W3C traceparent et à des fins de corrélation des traces distribuées. Vous pouvez désactiver la corrélation, la propagation ou les deux à la fois dans « W3C », de manière indépendante, en fonction de vos besoins en matière de traçabilité.
Désactivation de la corrélation « W3C »
Désactive le traitement des en-têtes « W3C » ou traceparent des tracestate en-têtes sans affecter la propagation des messages sortants.
Pour désactiver la corrélation « W3C », utilisez la configuration suivante dans le code :
require('@instana/collector')({
tracing: {
disableW3cCorrelation: true
}
});
Vous pouvez également désactiver la corrélation « W3C » en définissant la variable d'environnement INSTANA_TRACING_DISABLE_W3C_CORRELATION sur true.
Vous pouvez également configurer ce paramètre de manière globale via l'agent. Pour plus d'informations, consultez la section « Désactivation de la corrélation d' W3C ».
Désactivation de la propagation d' W3C
Désactive l'injection d' W3C s traceparentettracestate d'en-têtes dans les requêtes sortantes.
Pour désactiver la propagation d' W3C, utilisez la configuration suivante dans le code :
require('@instana/collector')({
tracing: {
disableW3cPropagation: true
}
});
Vous pouvez également désactiver la propagation de ` W3C ` en définissant la variable d'environnement INSTANA_TRACING_DISABLE_W3C_PROPAGATION sur true.
Vous pouvez également configurer ce paramètre de manière globale via l'agent. Pour plus d'informations, consultez la section « Désactivation de la propagation d' W3C ».
Désactiver complètement l' W3C
Désactive à la fois la corrélation et la propagation des « W3C s ».
Pour désactiver complètement l' W3C, utilisez la configuration suivante dans le code :
require('@instana/collector')({
tracing: {
disableW3c: true
}
});
Vous pouvez également désactiver complètement l' W3C en définissant la variable d'environnement INSTANA_TRACING_DISABLE_W3C sur true.
Vous pouvez également configurer ce paramètre de manière globale via l'agent. Pour plus d'informations, consultez la section « Désactiver complètement l' W3C ».
Désactivation de l'intégration d' OpenTelemetry
L'intégration d'Opentelemetry est activée par défaut. Pour désactiver l'intégration, transmettez l'option suivante à la fonction d'initialisation:
require('@instana/collector')({
tracing: {
useOpentelemetry: false
}
});
De plus, vous pouvez désactiver l'intégration d' OpenTelemetry en définissant la variable INSTANA_DISABLE_USE_OPENTELEMETRY sur true. Pour plus d'informations, consultez la section « Variables d'environnement » sur Instana.
Désactivation du traçage des threads de travail
Pour empêcher le collecteur Instana Node.js de tracer les threads de travail, définissez la variable d'environnement suivante :
INSTANA_DISABLE_WORKER_THREADS=true
Cette configuration désactive le traçage pour tous les threads de travail, mais le processus principal continue d'être tracé automatiquement. Utilisez cette configuration lorsque les threads de travail exécutent des tâches internes ou en arrière-plan que vous souhaitez exclure du traçage.
Capture des traces de pile
Par défaut, le collecteur enregistre les 10 derniers points d'appel pour chaque intervalle de sortie capturé. Cette valeur peut être augmentée ou diminuée selon vos besoins.
Vous pouvez configurer deux aspects de la capture de la trace de pile :
- Longueur de la trace de pile : nombre de points d'appel à capturer.
- Valeurs acceptées : 0 à 500
- Valeur par défaut : 10
- Mode de trace de pile : comment les traces de pile sont-elles capturées?
- Valeurs prises en charge :
all: Récupère la trace de pile pour tous les segments de sortie (par défaut).# Captures stack trace for all spans. INSTANA_STACK_TRACE=allerror: Ne recueille la trace de la pile que pour les segments présentant des erreurs.# Captures stack trace only for erroneous spans. INSTANA_STACK_TRACE=errornone: Ne recueille pas la trace de la pile.# Disable collection of stack trace. INSTANA_STACK_TRACE=none
- Valeurs prises en charge :
Vous pouvez configurer la capture de la trace de pile en utilisant l'une des options suivantes :
- Variables d'environnement
- Configuration en code
- Configuration de l'agent
Configuration de la longueur de la trace de pile
Vous pouvez ajuster le nombre de points d'appel enregistrés dans les traces de pile en configurant la longueur de la trace de pile. Pour configurer la longueur de la trace de pile, utilisez l'une des méthodes suivantes :
- Variable d'environnement : définissez la variable d'environnement
INSTANA_STACK_TRACE_LENGTHcomme indiqué dans l'exemple suivant :INSTANA_STACK_TRACE_LENGTH=15 - Configuration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { global: { stackTraceLength: 15 } } }); - Configuration de l'agent : voir « Configuration via l'agent ».
Configuration du mode de trace de pile
Vous pouvez définir les situations dans lesquelles les traces de pile sont enregistrées en configurant le mode de trace de pile.
Pour configurer le mode de trace de pile, utilisez l'une des méthodes suivantes :
- Variable d'environnement : définissez la variable d'environnement
INSTANA_STACK_TRACEcomme indiqué dans l'exemple suivant :INSTANA_STACK_TRACE='error' - Configuration dans le code : passez l'option suivante lors de l'initialisation du traceur :
require('@instana/collector')({ tracing: { global: { stackTrace: 'none' } } }); - Configuration de l'agent : voir « Configuration via l'agent ».
Configuration via l'agent
Vous pouvez également configurer globalement la capture des traces de pile pour tous vos services via l'agent. Pour plus d'informations, consultez la section « Capture des traces de pile ».
Capture des intervalles de journalisation
Lorsqu'une bibliothèque de journalisation prise en charge est instrumentée, le collecteur d' Node.js s capture les appels de journalisation sous forme de segments et les transmet à Instana. Par défaut, seuls les appels dont le niveau de gravité est égal ou warn supérieur à sont enregistrés.
Pour configurer le niveau de gravité minimal, utilisez l'une des méthodes suivantes :
Variable d'environnement : Définissez la variable d'environnement
INSTANA_TRACING_CAPTURE_LOG_LEVEL:INSTANA_TRACING_CAPTURE_LOG_LEVEL=errorConfiguration dans le code : passez l'option suivante lors de l'initialisation du collecteur :
require('@instana/collector')({ tracing: { captureLogLevel: 'error' } });
Le tableau suivant présente les valeurs prises en charge :
| Valeur | Comportement |
|---|---|
info |
Enregistre les intervalles de journalisation pour les appels de journalisation dont le niveau de gravité est égal ou info supérieur à. |
warn |
Enregistre les intervalles de journalisation pour les appels de journalisation dont le niveau de gravité est égal ou warn supérieur à. Il s'agit du paramètre par défaut. |
error |
Enregistre les intervalles de journalisation pour les appels de journalisation dont le niveau de gravité est égal ou error supérieur à. |
off |
Désactive complètement la capture des intervalles de journalisation. |
Les valeurs ne sont pas sensibles à la casse. Si une valeur non prise en charge est configurée, le collecteur enregistre un avertissement et utilise la valeur par défaut (warn).
Pour configurer la sortie du journal de traçage interne, reportez-vous à la section « Configuration du niveau du journal de traçage ».
Configuration d'un chemin d'accès personnalisé à l' package.json
Le collecteur « Instana » tente de localiser le fichier package.json principal de votre projet afin d'en extraire des informations importantes, telles que le nom de votre application. Si vous devez définir un chemin personnalisé pour votre fichier package.json ou si le collecteur ne parvient pas à localiser le fichier, vous pouvez utiliser l'option de configuration nommée packageJsonPath.
require('@instana/collector')({
packageJsonPath: 'absolute/path/to/package.json'
});
Vous pouvez également configurer le chemin du fichier package.json en définissant la variable d'environnement INSTANA_PACKAGE_JSON_PATH .
Nom du service
Les services sont un concept central dans Instana. Les appels, les portées et les traces sont étroitement liés aux services. Par défaut, le collecteur Node.js utilise les attributs name et version à partir du fichier principal package.json. Pour personnaliser le nom du service, vous pouvez configurer la propriété serviceName.
require('@instana/collector')({
serviceName: 'shop'
});
Vous pouvez également configurer un nom de service personnalisé en définissant la variable d'environnement INSTANA_SERVICE_NAME. Pour plus d'informations sur la configuration d'un service personnalisé, consultez la section « Définition du nom du service au niveau global ».
Kafka en-têtes de corrélation de trace
À partir de la version 4.x du collecteur, les en-têtes de corrélation de la trace Kafka sont toujours envoyés dans le format " string, ce qui élimine le support du format " binary. Pour plus d'informations, voir Migration des en-têtesKafka.
Supprimer toutes les configurations qui font référence à la variable d'environnement " INSTANA_KAFKA_HEADER_FORMAT et à l'option de configuration " tracing: { kafka: { headerFormat: .... }}}.
HTTP 4xx Signalement des erreurs via les codes d'état
Par défaut, Instana ne considère pas les réponses de type « HTTP » 4xx comme des erreurs lors des appels à HTTP. Vous pouvez activer ce comportement lorsque vous avez besoin d'une visibilité sur les réponses d'erreur client, par exemple pour inclure 401 Unauthorized ou 403 Forbidden les réponses provenant d'un service en aval.
Les options de configuration suivantes sont disponibles :
classifyAll4xxAsErrors: Considère chaque réponse « 4xx » provenant d'un service en aval comme une erreur.classifyAsErrors: Ne considère comme des erreurs que certains codes d'état spécifiques provenant d'un service en aval.
Lorsque ces deux options sont activées, classifyAsErrors a la priorité, et seuls les codes répertoriés sont considérés comme des erreurs. Les codes d'état pour classifyAsErrors doivent se situer dans l'intervalle 400–499. Tout code ne se situant pas dans cette plage est ignoré.
Considérer toutes les réponses de type « 4xx » comme des erreurs
Pour traiter chaque réponse « 4xx » provenant d'un appel sortant comme une erreur, utilisez l'une des méthodes suivantes :
Définissez la
INSTANA_TRACING_HTTP_EXIT_CLASSIFY_ALL_4XX_AS_ERRORSvariable d'environnement suivante :INSTANA_TRACING_HTTP_EXIT_CLASSIFY_ALL_4XX_AS_ERRORS=trueConfigurer via la fonction d'initialisation du collecteur :
require('@instana/collector')({ tracing: { http: { exit: { classifyAll4xxAsErrors: true } } } });Configurez-le via le fichier de configuration de l'agent. Pour plus d'informations, consultez la page HTTP 4xx relative au signalement des erreurs de code d'état.
Considérer certaines réponses d’ 4xx s comme des erreurs
Pour ne considérer que certains codes d'état comme des erreurs lors des appels sortants, utilisez l'une des méthodes suivantes :
Définissez la
INSTANA_TRACING_HTTP_EXIT_CLASSIFY_AS_ERRORSvariable d'environnement en lui attribuant une liste de codes d'état séparés par des virgules :INSTANA_TRACING_HTTP_EXIT_CLASSIFY_AS_ERRORS=401,403Configurer via la fonction d'initialisation du collecteur :
require('@instana/collector')({ tracing: { http: { exit: { classifyAsErrors: [401, 403] } } } });Configurez-le via le fichier de configuration de l'agent. Pour plus d'informations, consultez la page HTTP 4x relative au signalement des erreurs de code d'état.
Définition du nom de processus
Utilisez la variable d'environnement INSTANA_PROCESS_NAME pour définir un libellé personnalisé pour l'entité d'infrastructure qui représente le processus Node.js.
Signalement des rejets de promesses non gérés
Le collecteur Instana Node.js peut signaler les rejets de promesses non gérés sous forme de tickets à l'adresse Instana. Un rejet de promesse non géré est une promesse qui est rejetée mais pour laquelle aucun gestionnaire de rejet n'a été défini (c'est-à-dire que la chaîne de promesses ne comporte pas de .catch(...)).
Par défaut, cette fonction est désactivée. Si elle est activée et qu'un rejet de promesse non géré est détecté, cela est signalé comme un problème de gravité "avertissement" à Instana.
Notez que l'appel qui est en cours au moment du rejet de la promesse n'est pas marqué comme une erreur due au rejet non géré. La raison en est double :
- Les rejets non gérés n'entraînent pas d'erreur dans l'environnement d'exécution Node.js. Même si des rejets non gérés se produisent lors du traitement d'une demande, la demande peut toujours être traitée avec succès.
- L'environnement d'exécution Node.js ne permet pas de détecter les rejets non gérés dans le cadre d'appels spécifiques. En fait, les rejets non gérés ne sont détectés que plus tard, lorsque la promesse concernée est sur le point d'être nettoyée de la mémoire. A ce stade, la demande qui a déclenché le rejet non géré est déjà terminée et traitée.
Cette fonction peut être activée avec l'option reportUnhandledPromiseRejections, comme suit :
require('@instana/collector')({
reportUnhandledPromiseRejections: true
});
À partir de, Node.js12.0.0 une option de ligne de commande permet --unhandled-rejections option de ligne de commande de contrôler la manière dont sont gérés les rejets de promesses non gérés. La signalisation des rejets non gérés n'est pas prise en charge avec --unhandled-rejections=strict, car dans ce mode, Node.js convertit les rejets non gérés en exceptions non interceptées.
Configuration du niveau de journalisation de traçage
Les paramètres de cette section permettent de configurer la sortie des journaux internes du collecteur, qui comprend les messages de diagnostic générés par le collecteur lui-même. Ces paramètres n'ont aucune incidence sur les entrées du journal de votre application.
Niveau de journalisation
Par défaut, le niveau de journalisation du collecteur est info. Pour modifier le niveau de journalisation, utilisez l'une des méthodes suivantes :
Configurer le collecteur lors de l'initialisation :
require('@instana/collector')({ level: 'debug' });Définissez la variable d'environnement
INSTANA_LOG_LEVELsurdebug,info,warn, ouerror.Définissez la variable d'environnement
INSTANA_DEBUGsur une valeur non vide pour activer la journalisationdebug.
Si vous constatez l'apparition de messages de journalisation de débogage inattendus liés à Instana (entrées de journal contenant "name":"@instana/collector" et "level":20), vérifiez si le niveau de journalisation est défini sur debug ou si INSTANA_LOG_LEVEL=debug ou INSTANA_DEBUG est activé.
Si vous utilisez votre propre module de journalisation (voir la section suivante), il vous appartient de configurer son niveau de journalisation.
Consignateur personnalisé (parent)
AutoProfile
Depuis la version 1.98.1. Requiert au moins la version 6.4.0 de Node.js
Cette fonction est actuellement en phase de test de l'aperçu public.
Pour activer l'option « autoProfile: trueAutoProfile », ajoutez-la lors de l'initialisation du collecteur.
require('@instana/collector')({
autoProfile: true
});
Vous pouvez également activer l'option « AutoProfile » en définissant la variable d'environnement INSTANA_AUTO_PROFILE sur true
Agrégation automatique des appels de sortie courts
Depuis : 1.108.0.
Le traceur « Node.js » prend en charge l'agrégation automatique des appels de base de données très courts (< 10 ms) et à haute fréquence. Cela permet de conserver une valeur minimale de surcharge des performances de traçage dans les scénarios où des appels de ce type sont exécutés en succession rapide. A l'heure actuelle, cette fonction est incluse et doit être activée de façon explicite. Elle deviendra le comportement par défaut dans l'une des versions suivantes.
Pour l'activer immédiatement, utilisez l'une des méthodes suivantes :
- Définissez la variable d'environnement
INSTANA_SPANBATCHING_ENABLED=true. - Utiliser la configuration dans le code :
require('@instana/collector')({ tracing: { spanBatchingEnabled: true } }); - Ajouter le contenu suivant à l'agent
configuration.yaml:com.instana.plugin.nodejs: span-batching-enabled: true
Notez que ces options de configuration seront ignorées lorsque ce comportement sera défini par défaut.
En raison du mode de fonctionnement de cette fonction, il est possible que l'activation de cette option ait un impact sur l'extraction des noeuds finaux, en modifiant le nombre d'appels vers des noeuds finaux de base de données à faible temps d'attente.
Délai de transmission des données
Vous pouvez configurer la fréquence à laquelle les métriques sont transmises du collecteur Node.js vers l'agent Instana à l'aide de la variable INSTANA_METRICS_TRANSMISSION_DELAY d'environnement ou de l'option config.metrics.transmissionDelay de configuration.
Valeur par défaut : 1 000 millisecondes (1 seconde)
Valeur maximale : 5 000 millisecondes (5 secondes)
Cette valeur est exprimée en millisecondes. Vous pouvez configurer le délai de transmission afin d'ajuster la fréquence des mises à jour des métriques. Augmentez le délai pour réduire la fréquence de mise à jour. Cette approche s'avère utile dans les situations de forte charge et permet de réduire au minimum le trafic réseau et les coûts liés à l'ingestion des données.
Vous pouvez configurer le délai de transmission des métriques en utilisant l'une des méthodes suivantes :
- Définissez la variable d'environnement
INSTANA_METRICS_TRANSMISSION_DELAY(valeur en millisecondes) :INSTANA_METRICS_TRANSMISSION_DELAY=5000 - Utiliser la configuration dans le code (valeur en millisecondes) :
require('@instana/collector')({ metrics: { transmissionDelay: 5000 } });
Dans les exemples précédents, le système transmet les métriques toutes les 5 000 millisecondes (5 secondes) au lieu des 1 000 millisecondes (1 seconde) par défaut.
Désactiver le recours aux modules complémentaires natifs précompilés
Si les dépendances facultatives du module complémentaire natif ne sont pas installées correctement, le package @instana/collector tente automatiquement d'utiliser les fichiers binaires préconfigurés qui correspondent au système d'exploitation, à la version Node.js et à la variante libc . Vous pouvez désactiver l'utilisation des prégénérations en définissant INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS=false.
Référence de configuration complète
Voici toutes les valeurs de configuration possibles, accompagnées de leurs valeurs par défaut :
{
agentHost: '127.0.0.1',
agentPort: 42699,
serviceName: null,
packageJsonPath: null,
// the log level:
level: 'info',
tracing: {
enabled: true,
automaticTracingEnabled: true,
// Spans are batched and sent to the agent once every second, or if ${forceTransmissionStartingAt} spans have been collected (whichever happens earlier)
forceTransmissionStartingAt: 500,
// If more than ${maxBufferedSpans} have been buffered and the collector has not been able to send them to the agent, it will start to drop spans to avoid causing memory issues.
maxBufferedSpans: 1000,
http: {
// This is usually configured at the agent level (configuration.yaml).
extraHttpHeadersToCapture: [],
exit: {
// Treat all 4xx responses as errors on exit spans
classifyAll4xxAsErrors: true,
// Treat only the listed 4xx status codes as errors on exit spans.
classifyAsErrors: []
}
},
global: {
// Number of stack trace frames to capture. Set to 0 to disable stack trace collection.
stackTraceLength: 15,
// Stack trace collection mode: (`all`, `error`, `none`)
stackTrace: 'all',
},
// To disable individual tracing plug-ins.
disabledTracers: [],
// Can also be configured at the agent level (configuration.yaml).
spanBatchingEnabled: false,
// Disable W3C behavior
disableW3cCorrelation: false,
disableW3cPropagation: false,
disableW3c: false,
captureLogLevel: 'warn'
},
metrics: {
timeBetweenHealthcheckCalls: 3000,
transmissionDelay: 1000
},
// This is usually configured at the agent level (configuration.yaml).
secrets: {
matcherMode: 'contains-ignore-case',
keywords: ['key', 'pass', 'secret']
},
autoProfile: false
}
Voici la liste de toutes les variables d'environnement prises en charge par le collecteur Node.js :
| Variable d'environnement | Option de configuration équivalente |
|---|---|
INSTANA_AGENT_HOST |
config.agentHost |
INSTANA_AGENT_PORT |
config.agentPort |
INSTANA_SERVICE_NAME |
config.serviceName |
INSTANA_PACKAGE_JSON_PATH |
config.packageJsonPath |
INSTANA_PROCESS_NAME |
– |
INSTANA_DISABLE_AUTO_INSTR=true |
config.tracing.automaticTracingEnabled = false |
INSTANA_TRACING_DISABLE |
config.tracing.disable |
INSTANA_STACK_TRACE_LENGTH |
config.tracing.global.stackTraceLength |
INSTANA_STACK_TRACE |
config.tracing.global.stackTrace (all,error,none) |
INSTANA_LOG_LEVEL |
config.level |
INSTANA_DEBUG |
config.level = debug |
INSTANA_AUTO_PROFILE=true |
config.autoProfile = true |
INSTANA_SPANBATCHING_ENABLED=true |
config.tracing.spanBatchingEnabled = true |
INSTANA_TRACE_IMMEDIATELY=true |
config.tracing.activateImmediately = true |
INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS |
– |
INSTANA_ALLOW_ROOT_EXIT_SPAN |
config.tracing.allowRootExitSpan = true |
INSTANA_IGNORE_ENDPOINTS |
config.tracing.ignoreEndpoints |
INSTANA_METRICS_TRANSMISSION_DELAY |
config.metrics.transmissionDelay |
INSTANA_TRACING_DISABLE_W3C |
config.tracing.disableW3c |
INSTANA_TRACING_DISABLE_W3C_PROPAGATION |
config.tracing.disableW3cPropagation |
INSTANA_TRACING_DISABLE_W3C_CORRELATION |
config.tracing.disableW3cCorrelation |
INSTANA_TRACING_HTTP_EXIT_CLASSIFY_ALL_4XX_AS_ERRORS |
config.tracing.http.exit.classifyAll4xxAsErrors |
INSTANA_TRACING_HTTP_EXIT_CLASSIFY_AS_ERRORS |
config.tracing.http.exit.classifyAsErrors |
INSTANA_TRACING_CAPTURE_LOG_LEVEL |
config.tracing.captureLogLevel |