Fehlerbehebung

Node.js-Collector nicht installiert

Art des Überwachungsproblems: nodejs_collector_not_installed

Der Prozess „ Node.js “ kann keine Verbindung zum Agenten herstellen, um Traces und Metriken zu senden.

Ursache

Dieses Problem kann aus einem der folgenden Gründe auftreten:

  • Fehlerhafte Installation des @instana/collector Pakets: Wenn das @instana/collector Paket zu Ihrer Anwendung hinzugefügt und korrekt aktiviert wurde, finden Sie folgende Einträge in Ihren Anwendungsprotokollen:

    Attempting agent communication via <hostname>:<port>
     

    Wenn Sie keine solche Nachricht in Ihrem Anwendungsprotokoll sehen, ist das @instana/collector-Paket wahrscheinlich nicht ordnungsgemäß installiert und initialisiert.

    Eine fehlerhafte Integration des Collectors in Ihre „ Node.js “-Anwendung kann die Beobachtbarkeit Ihrer Anwendung in „ Instana “ beeinträchtigen. Obwohl Ihre Anwendung unter Instana angezeigt wird, funktioniert die Ablaufverfolgung nur teilweise. Manche Anrufe werden zurückverfolgt, andere hingegen verpasst.

  • Probleme mit der Netzwerkverbindung: Wenn der „ Node.js “-Kollektor installiert ist und die folgende Meldung in Ihren Anwendungsprotokollen angezeigt wird, kann das @instana/collector Paket aufgrund eines Netzwerkproblems nicht mit dem Host-Agenten kommunizieren:

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

Überprüfung der Kollektorintegration

Informationen zur Überprüfung der Collector-Integration finden Sie in den folgenden Abschnitten:

CommonJS

Wenn Sie „ CommonJS, “ verwenden, rufen Sie die von require('@instana/collector') „immediately“ exportierte Funktion unmittelbar vor allen anderen require „or“- oder import „statements“-Anweisungen auf. Sie können die Funktion auf eine der folgenden Arten aufrufen:

  • Rufe die Funktion in einer einzigen Anweisung auf:

    require('@instana/collector')()
     
  • Rufen Sie die Funktion wie folgt in zwei aufeinanderfolgenden Anweisungen auf:

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

Die folgenden Beispiele zeigen eine fehlerhafte Integration des Collectors:

// 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!
...
 

ECMAScript-Module

Wenn Sie ECMAScript-Module (ESM) verwenden, laden und initialisieren Sie den Collector mithilfe der Ladeflags. Initialisieren Sie den Collector im Code nicht wie folgt:

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

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

Behebung von Netzwerkproblemen

Um Netzwerkprobleme zu beheben, gehen Sie wie folgt vor:

  • Überprüfen Sie, ob der Node.js -Prozess eine Verbindung zum Host-Agenten auf demselben Host über Port 42699 herstellen kann. Weitere Informationen zur erforderlichen Netzwerktransparenz finden Sie unter „Netzwerkanforderungen für den Host-Agenten von Instana “.

  • Überprüfen Sie bei containerisierten Plattformen die Netzwerkverbindungen zwischen dem Container mit der zu verfolgenden Anwendung und dem Container des Host-Agenten von „ Instana “. Stellen Sie sicher, dass keine Probleme bei der Einrichtung des Overlay-Netzwerks vorliegen, wenn der zu überwachende Anwendungscontainer versucht, eine Verbindung zum „ Instana “-Agent-Container auf demselben Host herzustellen.

  • Stellen Sie sicher, dass der „ Node.js “-Collector die richtige IP-Adresse oder den richtigen DNS -Namen verwendet, um mit dem „ Instana “-Agenten zu kommunizieren. Wenn Sie die Netzwerkadresse ändern müssen, können Sie den „ Node.js “-Collector anweisen, die INSTANA_AGENT_HOST Umgebungsvariable zu verwenden.

  • Stellen Sie sicher, dass der Host-Agent Port 42699 überwacht. Wenn Sie eine Neuzuordnung des Ports benötigen, weil der Host-Agent nicht Port 42699, sondern einen anderen Port überwacht, können Sie den Collector mithilfe der Umgebungsvariablen INSTANA_AGENT_PORT für die Verwendung eines anderen Ports konfigurieren.

Wenn keine der oben genannten Lösungen bei der Behebung des Problems hilft, öffnen Sie ein Support-Ticket.

Collector zu spät initialisiert

Art des Überwachungsproblems: nodejs_collector_initialized_too_late

Wenn das @instana/collector Paket initialisiert wird, nachdem andere Pakete von „ Node.js “ geladen wurden, können Sie die nodejs_collector_initialized_too_late angezeigte Warnung auf Ihrem „ Node.js “-Dashboard einsehen.

Ursache

Dieser Fehler tritt auf, weil andere Pakete von „ Node.js “ geladen wurden, bevor das @instana/collector Paket aufgerufen und initialisiert wurde. Weitere Informationen finden Sie unter „Installieren des „ Node.js “-Kollektors “ und „Überprüfen der Kollektorintegration “.

Lösung

Um dieses Problem zu beheben, aktualisieren Sie Ihren Code, sodass das Paket @instana/collector vor allen anderen Initialisierungen angefordert und initialisiert wird. Weitere Informationen finden Sie unter "Aktivieren des Collectors ".

AutoProfile Paket fehlt oder es gibt ein Problem beim Laden

Art des Überwachungsproblems: nodejs_collector_native_addon_autoprofile_missing

Sie haben den Prozess „ Node.js “ so konfiguriert, dass er die Funktion „ AutoProfile “ von „ Instana “ nutzt, doch das Paket ist @instana/autoprofile möglicherweise nicht geladen. Daher werden in „ Instana “ keine Profiling-Informationen für diese Anwendung unter „ Node.js “ angezeigt.

Fehlermeldung :

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

Ursache

Das Paket @instana/autoprofile ist eine optionale Abhängigkeit von @instana/collector und wird nach Möglichkeit automatisch installiert. Da es sich jedoch um ein natives Add-on handelt, kann die Installation fehlschlagen. Weitere Informationen finden Sie unter Native Add-ons.

Der Installationsfehler von @instana/autoprofile (insbesondere bei containerisierten Anwendungen) kann auf einen der folgenden Gründe zurückzuführen sein:

  • Das Fehlen der erforderlichen Betriebssystempakete für die Erstellung von Code für „ C++ “. Dieses Problem tritt auf, wenn diese Pakete auf dem Zielcomputer oder im Ziel-Container-Image fehlen.

  • Die Art und Weise, wie das Bild des Containers aufgebaut ist. Node.js-Pakete müssen auf dem Zielimage installiert werden. Es funktioniert nicht, npm install oder yarn auf einem Build-System auszuführen und dann den gesamten Ordner node_modules in ein Container-Image mit einer möglicherweise anderen Architektur oder einem anderen Betriebssystem zu kopieren. Dieser Schritt muss innerhalb des Zielbildes erfolgen.

  • Wenn die Befehle npm install --no-optional oder yarn --ignore-optional zur Installation von Abhängigkeiten verwendet werden, kann das Paket ebenfalls fehlen.

  • Das @instana/autoprofile Modul ist nicht mit der aktuellen Version von „ Node.js “ kompatibel.

Fehlende oder doppelte Anrufe

Fehler :

Es kann vorkommen, dass „ Instana “ einige Anrufe nicht erfasst oder doppelte Anrufe anzeigt, was zu unvollständigen oder ungenauen Rückverfolgungsdaten führt.

Ursache

Fehlende oder doppelte Anrufe können aus folgenden Gründen auftreten:

  • Nicht unterstützte Trigger: In der Regel erfassen „ Instana “-Tracer nur ausgehende Aufrufe, wenn ein aktiver Eintrag-Span vorhanden ist. In einigen Grenzfällen kann diese Regel dazu führen, dass Anrufe, von denen Sie erwarten, dass sie erfasst werden, nicht erfasst werden. Beispielsweise wenn die Ausführung durch einen Mechanismus ausgelöst wird, der von der automatischen Instrumentierung von „ Instana “ nicht unterstützt wird.
  • Tracing mit mehreren Tracern: Die Verwendung von „ Instana “ zusammen mit einem Tracer eines Drittanbieters (wie z. B. New Relic, Dynatrace oder Datadog ) in derselben „ Node.js “-Anwendung kann dazu führen, dass Aufrufe fehlen oder doppelt vorhanden sind und die Instrumentierung von „ Node.js “ fehlschlägt.

Lösung

Um dieses Problem zu beheben oder zu vermeiden, führen Sie die folgenden Schritte aus:

  • Benutzerdefinierte Ablaufverfolgung für nicht unterstützte Trigger verwenden: Erstellen Sie einen Eintrag über die benutzerdefinierte Ablaufverfolgung mithilfe des SDK „ Instana “ ( Node.js ). Weitere Informationen zum SDK „ Node.js “ finden Sie unter „Tracing ist inaktiv, wenn kein aktiver Eintragsschnittpunkt vorhanden ist“.

  • Vermeiden Sie die Überwachung mit mehreren Tracern: Überwachen Sie eine einzelne „ Node.js “-Anwendung nicht gleichzeitig mit mehreren Tracern.

Fehler beim Kopieren der vorkompilierten Version

Fehlermeldung :

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'
}
 

Ursache

Dieser Fehler tritt in der Regel auf, wenn der „ Node.js -Tracer“ versucht, die vorkompilierten Binärdateien zu entpacken, und der Ordner „tmp“ nicht beschreibbar ist (beispielsweise in Pods von „ Kubernetes “).

Lösung

Um den Fehler beim Kopieren des vorkompilierten Builds zu beheben, überprüfen Sie, ob sich das System nicht im schreibgeschützten Modus befindet.

Nicht unterstütztes ECMAScript- URL -Schema auf Windows

Fehlermeldung :

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

Ursache

Dieser Fehler tritt auf, wenn Sie in den Loader-Befehlen einen absoluten Pfad angeben.

Modul zum Wechseln der Laufzeitversion fehlt

Fehlermeldung :

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)
 

Ursache

Dieser Fehler wird angezeigt, wenn die Version der Webhook-Instrumentierung unter AutoTrace veraltet ist, der Collector unter Node.js jedoch auf die neueste Version aktualisiert wurde. Dies geschieht aufgrund der Entfernung des runtime-version-switch Skripts aus dem Webhook unter AutoTrace.

Hinweis: Obwohl Sie den neuesten Webhook unter AutoTrace verwenden, verweisen die bereits bereitgestellten Artefakte unter Kubernetes möglicherweise auf ein veraltetes Instrumentierungs-Image.