Traitement des incidents

Collecteur Node.js non installé

Type de problème de surveillance : nodejs_collector_not_installed

Le processus « Node.js » ne parvient pas à se connecter à l'agent pour envoyer les traces et les métriques.

Cause

Ce problème peut survenir pour l'une des raisons suivantes :

  • Installation incorrecte du @instana/collector paquet : si le @instana/collector paquet a été ajouté à votre application et correctement activé, vous pouvez voir les entrées suivantes dans les journaux de votre application :

    Attempting agent communication via <hostname>:<port>
     

    Si vous ne voyez pas de message de ce type dans votre journal d'application, le package @instana/collector n'est probablement pas installé et initialisé correctement.

    Une intégration incorrecte du collecteur avec votre application Node.js peut nuire à la visibilité de votre application dans Instana. Bien que votre application s'affiche dans l' Instana, le traçage ne fonctionne que partiellement. Certains appels sont localisés, tandis que d'autres ne le sont pas.

  • Problèmes de connectivité réseau : si le collecteur « Node.js » est installé et que le message suivant apparaît dans les journaux de votre application, cela signifie que le @instana/collector package ne parvient pas à communiquer avec l'agent hôte en raison d'un problème de réseau :

    Announce attempt failed: <error>. Will retry in <seconds>s.
     

Vérification de l'intégration du collecteur

Pour vérifier l'intégration du collecteur, consultez les sections suivantes :

CommonJS

Si vous utilisez CommonJS,, appelez la fonction exportée par require('@instana/collector') immédiatement avant toute autre require instruction import ou. Vous pouvez appeler la fonction de l'une des manières suivantes :

  • Appelez la fonction en une seule instruction :

    require('@instana/collector')()
     
  • Appelez la fonction dans deux instructions consécutives comme suit :

    // Correct:
    const instana = require('@instana/collector');
    instana(); // this is fine
    
    // Now all other modules can be required:
    require('something');
    require('another-thing');
    ...
     

Les exemples suivants illustrent une intégration incorrecte du collecteur :

// WRONG!
require('@instana/collector'); // @instana/collector is not initialized

require('something');
require('another-thing');

...
 
// WRONG!
const instana = require('@instana/collector');

require('something');
require('another-thing');

instana(); // TOO LATE!
...
 

Modules ECMAScript

Si vous utilisez les modules ECMAScript (ESM), chargez et initialisez le collecteur à l'aide des indicateurs de chargement. N 'initialisez pas le collecteur dans le code comme suit :

import instana from '@instana/collector'
// Wrong!
instana()

import { something, else } from 'some-module';
 

Résolution des problèmes de réseau

Pour résoudre les problèmes de réseau, procédez comme suit :

  • Vérifiez que le processus Node.js peut se connecter à l'agent hôte sur le même hôte sur le port 42699. Pour plus d'informations sur la visibilité réseau requise, consultez la section « Configuration réseau requise pour l'agent hôte d' Instana ».

  • Dans les plateformes conteneurisées, vérifiez la visibilité réseau entre le conteneur contenant l'application à tracer et le conteneur de l'agent hôte d' Instana. Assurez-vous qu'il n'y a aucun problème de configuration du réseau superposé lorsque le conteneur d'application à tracer tente de se connecter au conteneur de l'agent d' Instana s sur le même hôte.

  • Assurez-vous que le collecteur Node.js utilise l'adresse IP ou le nom de domaine DNS correct pour communiquer avec l'agent Instana. Si vous devez modifier l'adresse réseau, vous pouvez demander au collecteur d' Node.js s d'utiliser la variable INSTANA_AGENT_HOST d'environnement.

  • Assurez-vous que l'agent hôte écoute sur le port 42699. Si vous avez besoin d'une nouvelle affectation de port parce que l'agent hôte n'écoute pas sur le port 42699 mais sur un autre, vous pouvez configurer le collecteur pour qu'il utilise un autre port en utilisant la variable d'environnement INSTANA_AGENT_PORT.

Si aucune des solutions précédentes ne vous aide à résoudre le problème, ouvrez un ticket d'assistance.

Collecteur initialisé trop tard

Type de problème de surveillance : nodejs_collector_initialized_too_late

Lorsque le @instana/collector module est initialisé après le chargement d'autres modules d' Node.js, vous pouvez consulter nodejs_collector_initialized_too_late l'avertissement affiché sur votre tableau de bord Node.js.

Cause

Cette erreur survient parce que d'autres paquets d' Node.js s ont été chargés avant que le @instana/collector paquet ne soit importé et initialisé. Pour plus d'informations, consultez les sections « Installation du collecteur d' Node.js s » et « Vérification de l'intégration du collecteur ».

La solution

Pour résoudre ce problème, mettez à jour votre code afin d'exiger et d'initialiser le package @instana/collector avant toute autre initialisation. Pour plus d'informations, voir Activation du collecteur.

AutoProfile problème lié à l'absence ou au chargement d'un paquet

Type de problème de surveillance : nodejs_collector_native_addon_autoprofile_missing

Vous avez configuré le processus « Node.js » pour qu'il utilise la fonctionnalité « AutoProfile » d' Instana, mais il se peut que le @instana/autoprofile paquet ne soit pas chargé. Par conséquent, vous n'obtenez pas d'informations de profilage pour cette application Node.js dans Instana.

Message d'erreur :

Could not load @instana/autoprofile. You will not get profiling information for this Node.js app in Instana, although autoprofiling has been enabled.
 

Cause

Le paquet @instana/autoprofile est une dépendance optionnelle de @instana/collector, et il est automatiquement installé lorsque cela est possible. Mais comme il s'agit d'un module complémentaire natif, son installation peut échouer. Pour plus d'informations, voir les modules complémentaires natifs.

L'échec de l'installation d' @instana/autoprofile, en particulier pour les applications conteneurisées, peut être dû à l'une des raisons suivantes :

  • L'absence des paquets du système d'exploitation nécessaires à la compilation du code d' C++. Ce problème survient lorsque ces paquets sont manquants sur la machine cible ou dans l'image du conteneur cible.

  • La manière dont l'image du conteneur est construite. Les packages Node.js doivent être installés sur l'image cible. L'exécution de npm install ou yarn sur un système de construction, puis la copie de l'intégralité du dossier node_modules dans une image de conteneur avec une architecture ou un système d'exploitation potentiellement différent ne fonctionne pas. Cette étape doit se dérouler à l'intérieur de l'image cible.

  • Si les commandes npm install --no-optional ou yarn --ignore-optional sont utilisées pour installer des dépendances, le paquet peut également être manquant.

  • Ce @instana/autoprofile module n'est pas compatible avec la version actuelle d' Node.js.

Appels manquants ou en double

Erreur :

Il arrive parfois que Instana ne parvienne pas à enregistrer certains appels ou affiche des appels en double, ce qui entraîne des données de traçage incomplètes ou inexactes.

Cause

Des appels manquants ou en double peuvent survenir pour les raisons suivantes :

  • Déclencheurs non pris en charge : en règle générale, les traceurs d' Instana s ne capturent les appels sortants que lorsqu'un intervalle d'entrée actif existe. Dans certains cas particuliers, cette règle peut conduire à ce que des appels qui devraient être capturés ne le soient pas. Par exemple, lorsque le travail est déclenché par un mécanisme qui n'est pas pris en charge par l'instrumentation automatique d' Instana.
  • Tracé avec plusieurs outils de traçage : l'utilisation d' Instana en association avec un outil de traçage tiers (tel que New Relic, Dynatrace ou Datadog ) au sein d'une même application Node.js peut entraîner des appels manquants ou dupliqués, ainsi que des échecs de l'instrumentation d' Node.js.

La solution

Pour résoudre ou éviter ce problème, procédez comme suit :

Échec de la copie de la version précompilée

Message d'erreur :

Copying the precompiled build for event-loop-stats (linux/x64/musl/ABI 108) failed. [Error: ENOENT: no such file or directory, lstat '/tmp/event-loop-stats'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/tmp/event-loop-stats'
}
 

Cause

Cette erreur survient généralement lorsque l'outil « Node.js Tracer » tente de décompresser les binaires précompilés et que le dossier « tmp » n'est pas accessible en écriture (par exemple, dans les pods d' Kubernetes ).

La solution

Pour résoudre l'erreur de compilation liée à la copie de la version précompilée, vérifiez que le système n' est pas en mode lecture seule.

URL s ECMAScript non prises en charge sur Windows

Message d'erreur :

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader.
 

Cause

Cette erreur se produit lorsque vous indiquez un chemin d'accès absolu dans les commandes du chargeur.

Module de changement de version d'exécution manquant

Message d'erreur :

Error: Cannot find module '/opt/instana/instrumentation/nodejs/runtime-version-switch'
Require stack:
- internal/preload
  at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
  at Module._load (node:internal/modules/cjs/loader:985:27)
  at Function.patchedModuleLoad [as _load] (/opt/instana/instrumentation/nodejs/node_modules/@instana/core/src/util/requireHook.js:93:34)
 

Cause

Cette erreur s'affiche si la version de l'instrumentation du webhook AutoTrace est obsolète, alors que le collecteur Node.js a été mis à jour vers la dernière version. Cela est dû à la suppression du runtime-version-switch script du webhook AutoTrace.

Remarque : bien que vous utilisiez la dernière version du webhook AutoTrace, les artefacts Kubernetes déjà déployés peuvent faire référence à une image d'instrumentation obsolète.