Node.js -Kollektor installieren
Sie können den Kollektor für Node.js installieren, um Node.js -Anwendungen in Ihrer Umgebung zu überwachen.
- Vorbereitende Schritte
- Hier beginnen
- Kollektor ' Node.js ' für verschiedene Erstellungsszenarios installieren
- Kollektor ' Node.js ' auf verschiedenen Plattformen bereitstellen
- Installieren des Kollektors
- Kollektor ' Node.js ' ohne Änderung Ihrer Anwendung installieren
- Native Add-ons
- Node.js-Collector während der Entwicklung inaktivieren
- Fehlerbehebung
- Verwandte Themen
Vorbereitungen
Instana Host Agent installieren
Sie müssen den Instana-Hostagenten installieren, bevor Sie den Node.js -Collector installieren. Weitere Informationen zur Installation eines Hostagenten finden Sie unter Hostagenten installieren.
Installierte Node.js -Version überprüfen
Stellen Sie sicher, dass der Node.js -Collector die installierte Node.js -Version unterstützt. Informationen zu den unterstützten Node.js -Versionen finden Sie unter Node.js.
Allgemeine Hinweise zur Installation
Lesen Sie die folgenden Hinweise, um potenzielle Probleme bei der Installation und Verwendung des Kollektors Node.js zu vermeiden:
Falsche Kollektorintegration
Eine falsche Integration des Collectors in Ihre Node.js -Anwendung kann zu einer verringerten Beobachtbarkeit für Ihre Anwendung in Instana führen. Während Ihre Anwendung in Instana angezeigt wird, funktioniert die Traceerstellung nur teilweise. Einige Aufrufe werden verfolgt, während andere verpasst werden.
CommonJS: Wenn SieCommonJS, setzen die
require
-Anweisung als erste Anweisung in Ihrer Anwendung und Aufruf der Funktion, die exportiert wird vonrequire('@instana/collector')
später reicht nicht aus.Die folgenden Beispiele zeigen eine falsche Kollektorintegration:
// 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! ...
Stattdessen müssen Sie die von
require('@instana/collector')
exportierte Funktion unmittelbar vor allen anderenrequire
-oderimport
-Anweisungen aufrufen. Sie können die Funktion entweder in einer Anweisung aufrufen, wie in Schritt 2 im Abschnitt Node.js -Collector installieren (beachten Sie das zweite Paar runder Klammern inrequire('@instana/collector')()
), oder in zwei aufeinanderfolgenden Anweisungen wie folgt:// Correct: const instana = require('@instana/collector'); instana(); // this is fine // Now all other modules can be required: require('something'); require('another-thing'); ...
ECMAScript-Module: Wenn Sie ECMAScript-Module (ESM) verwenden, dürfen Sie den Collector im Code nicht wie folgt importieren oder benötigen:
import instana from '@instana/collector' instana() import { something, else } from 'some-module';
Laden Sie stattdessen den Collector mithilfe des experimentellen Ladeprogrammflags.
Traceerstellung mit mehreren Tracer
Verfolgen Sie eine einzelne Node.js -Anwendung nicht gleichzeitig mit Instana und einem Tracer eines anderen Anbieters (z. B. New Relic, Dynatrace oder Datadog).
OpenTelemetry
Verwenden Sie nicht das OpenTelemetry SDK und den Instana-Collector in derselben Node.js -Anwendung. Wenn Sie beide verwenden, können die folgenden Probleme auftreten:
- Fehlender Aufruf in Instana
- Duplizierte Daten in Instana
- Defekte Instrumentierungen
Wenn Sie jedoch das SDK der OpenTelemetry verwenden wollen, finden Sie weitere Informationen unter Node.js OpenTelemetry integration.
Beginnen Sie hier
Verwenden Sie die Installationsmethode, die für die Plattform und das Erstellungsszenario Ihrer Anwendung am besten geeignet ist. Beginnen Sie mit den folgenden Abschnitten, die Sie zu den Schritten zum Installieren des Kollektors Node.js führen.
- Node.js -Collector für verschiedene Erstellungsszenarios installieren: Lesen Sie die Hinweise, wenn Sie einen Bundler (wie Webpack oder Rollup) oder einen Transpiler (wie Babel, Traceur oder den TypeScript -Compiler
tsc
) verwenden. - Kollektor Node.js auf verschiedenen Plattformen bereitstellen: Lesen Sie die Hinweise zu verschiedenen Plattformen, auf denen Ihre Node.js -Anwendung ausgeführt wird.
Kollektor ' Node.js ' für verschiedene Erstellungsszenarios installieren
Wenn Sie einen Bundler (wie Webpack oder Rollup) oder einen Transpiler (wie Babel, Traceur oder den TypeScript -Compiler tsc
) verwenden, verwenden Sie den bereitgestellten Abschnitt, um Sie zu den Schritten für die Installation des Node.js -Collectors und zu allen anderen Aspekten für Ihr Erstellungsszenario zu führen.
Bundlers (Webpack oder Rollup)
Wenn Sie Ihre Node.js -Serveranwendung mit einem Bundle wie Webpack oder Rollup vorverarbeiten, können Sie eine der folgenden Installationsmethoden verwenden:
- Node.js -Kollektor installieren, ohne Ihre Anwendung zu ändern.
@instana/collector
als normale Abhängigkeit installieren.
Die bevorzugte Installationsmethode ist Node.js -Collector ohne Änderung Ihrer Anwendung installieren.
In beiden Fällen müssen Sie sicherstellen, dass Sie nur Ihren eigenen Code und nicht den Code Ihrer Abhängigkeiten aus dem Ordner node_modules
bündeln.
Sie müssen die Abhängigkeiten aus den folgenden Gründen ausschließen:
- Das Modul
@instana/collector
unterstützt keine Vorverarbeitung mit Webpack. Unter anderem werden dynamischerequire
-Anweisungen, die in Ihrem Code verwendet werden, nicht ordnungsgemäß aufgelöst. - Zur Instrumentierung von Bibliotheken anderer Anbieterfängt das npm-Paket
@instana/collector
denrequire
-Prozess von Node.jsab. Wenn diese Bibliotheken jedoch nicht zur Laufzeit geladen werden und stattdessen zur Buildzeit mit Ihrem eigenen Code gebündelt werden, wird keinrequire
-Prozess ausgeführt und die Instrumentierung wird nicht angewendet. Daher funktioniert die Instana-Traceerstellung nicht oder teilweise, d. h., die Traceerstellung funktioniert nur für Node.js -Kernmodule wiehttp
, da diese Module standardmäßig von der Bündelung ausgeschlossen sind.
Daher müssen Sie Ihren Bundler mithilfe des Moduls webpack-node-externals konfigurieren, damit alles in node_modules
von allen Codeumsetzungen ausgeschlossen wird:
// your webpack.config.js:
const nodeExternals = require('webpack-node-externals');
module.exports = {
...
// externals: nodeModules,
externals: [nodeExternals()],
...
};
Wenn Sie Angular CLI verwenden, insbesondere mit Angular Universal oder SSR, müssen Sie "externalDependencies": ["@instana/collector"]
(und möglicherweise andere Bibliotheken, die @instana/collector
-Instrumente sind) zu Ihrer angular.json
-Datei hinzufügen, um sie von der Bündelung auszuschließen.
Transpiler (Babel oder Traceur)
Wenn Sie einen Transpiler (wie Babel, Traceur oder den TypeScript -Compiler tsc
) verwenden, können Sie eine der folgenden Installationsmethoden verwenden:
- Node.js -Kollektor installieren, ohne Ihre Anwendung zu ändern.
@instana/collector
als normale Abhängigkeit installieren.
Die bevorzugte Methode ist die Installation des Node.js -Collectors ohne Änderung der Anwendung.
Wenn Sie @instana/collector
als normale Abhängigkeit installieren möchten, müssen Sie genau darauf achten, wie import
-und require
-Anweisungen von Ihrem Transpiler behandelt werden. Wenn Ihr Transpiler ES6 import
-Anweisungen verarbeitet, wird der Kollektor durch das Hinzufügen von import instana from '@instana/collector';
am Anfang der Hauptdatei nicht installiert:
import instana from '@instana/collector';
// THIS WILL NOT WORK because transpilers change the order of imports and statements.
instana();
import express from 'express';
Die Installation funktioniert nicht, da gemäß der Spezifikation ES6 alle Importe ausgewertet werden, bevor der Hauptteil des Moduls ausgeführt wird. Babel und andere Transpiler erfüllen diese Regel und verschieben alle Importe an den Anfang, wenn sie Quellendateien transpilieren. Alle tatsächlichen Anweisungen werden nach den Importen eingefügt. Daher wird der Import für express
im folgenden Beispiel vor dem Aufruf instana()
; in Ihrer transpiled-Datei platziert:
var _instana = _interopRequireDefault(require("@instana/collector"));
var _express = _interopRequireDefault(require("express"));
var _morgan = _interopRequireDefault(require("morgan"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _instana.default)(); // <- This is too late, since all other modules will already have been required.
...
Der tatsächliche Aufruf der Initialisierungsfunktion von @instana/collector
erfolgt nach allen require
-Anweisungen in der transpiled-Datei.
Stattdessen können Sie import './instanaInit';
am Anfang Ihrer Hauptdatei und anschließend alle anderen Importe wie folgt einfügen:
// Put this import at the top of your main file. Only the import here,
// don't change this to "import instana from './instanaInit'"!
import './instanaInit';
// Now all the other imports can follow:
import express from 'express';
import morgan from 'morgan';
// The following statement is optional; it is only required if you want to use
// Instana's Node.js API (https://www.ibm.com/docs/en/instana-observability/current?topic=nodejs-instana-api):
// @ts-ignore (in case you are using TypeScript, to avoid 'Could not find a declaration file for '@instana/collector')
import instana from '@instana/collector';
Die Datei instanaInit.js
(oder instanaInit.ts
, wenn Sie TypeScriptverwenden) muss die folgende Anweisung enthalten:
require('@instana/collector')();
Wenn Sie diese Anweisung verwenden, wird die Initialisierungsfunktion sofort aufgerufen, wenn der Prozess gestartet wird.
Im Allgemeinen müssen Sie bei Verwendung eines Transpilers die Ausgabedateien des Transpilers überprüfen, wenn Sie @instana/collector
integrieren.
Node.js -Kollektor auf verschiedenen Plattformen implementieren
Verwenden Sie den bereitgestellten Abschnitt als Leitfaden für die Schritte zur Installation des Node.js -Collectors und für alle weiteren Aspekte der Plattform, auf der Ihre Node.js -Anwendung ausgeführt wird.
Kubernetes und Red Hat OpenShift
Wenn Ihre Node.js-Anwendung in einer Kubernetes- und Red Hat OpenShift-Umgebung läuft, können Sie den Instana AutoTrace-Webhook verwenden oder den Node.js Kollektor, um Ihre Anwendung zu überwachen.
Instana AutoTrace webhook
Der Instana AutoTrace Webhook ist eine Implementierung eines Kubernetes Mutating Webhook Admission Controllers, der automatisch alle Anforderungen für den Betrieb von Node.js-Anwendungen in einem gesamten Kubernetes-Cluster konfiguriert.
Wenn Sie den Instana AutoTrace-Webhook auf Ihren Kubernetes-Clustern installieren, müssen Sie keine Ihrer Node.js-Anwendungen, die in diesen Clustern laufen, manuell verfolgen.
Wenn Sie den Instana AutoTrace Webhook verwenden und das Instana Node.js SDK nutzen möchten, lesen Sie den Abschnitt Verwendung der API zusammen mit dem AutoTrace Webhook.
Collector Node.js manuell installieren
Wenn Ihre Node.js -Anwendung und der Instanea-Agent, der in einem Kubernetes -Cluster ausgeführt wird, müssen Sie das Kollektorpaket Node.js installieren und den Netzzugriff für überwachte Anwendungen konfigurieren. Weitere Informationen zur erforderlichen Konfiguration finden Sie unter Kubernetes -Netzzugriff.
Cloud Foundry
Sie können Cloud Foundry -Anwendungen nur überwachen, wenn der Instantagent aktiv in den Diego-Zellen der Cloud Foundry -Basis ausgeführt wird. Ohne den Agenten, der in der zugrunde liegenden Diego-Zelle ausgeführt wird, wird die Überwachung nicht unterstützt.
Weitere Informationen zum Einrichten von Instantagenten und der zugehörigen Cloud Foundry -oder Pivotal Platform-Funktionalität finden Sie in der Cloud Foundry und Pivotal-Plattform -Dokumentation.
Auf Cloud Foundry ist keine Konfiguration auf der Ebene von cf push
und beim Anwendungsmanifest erforderlich. Der einzige erforderliche Schritt besteht darin, das Paket @instana/collector
zur Cloud Foundry Node.js hinzuzufügen, wie im Abschnitt Node.js -Collector installieren beschrieben.
Apigee Microgateway
Weitere Informationen zur Verwendung des Instana-Pakets Node.js -Collector mit Apigee Microgateway (auch bekannt als edgemicro
) finden Sie unter Apigee Microgateway überwachen.
Next.js
Verwenden Sie für Next.js -Anwendungen den Ansatz, der im Abschnitt Node.js -Kollektor ohne Änderung Ihrer Anwendung installieren beschrieben ist.
Installieren des Kollektors
Lesen Sie unbedingt den Abschnitt Hier beginnen .
- ECMAScript-Unterstützung wurde in Node.js Collector 2.14.0hinzugefügt.
- Einige ECMAScript-Module befinden sich in der experimentellen Phase. Weitere Informationen finden Sie in der offiziellen Dokumentation.
Führen Sie die folgenden Schritte aus, um den Instana-Kollektor Node.js zu installieren:
Installieren Sie das npm-Paket
@instana/collector
in Ihrer Anwendung:npm install --save @instana/collector
Aktivieren Sie den Collector innerhalb der Node.js-Anwendung:
Um den Collector in Ihrer Node.js-Anwendung zu aktivieren, lesen Sie die Abschnitte CommonJS und ECMAScript.
CommonJS
Wenn die AnwendungCommonJS, Aktivieren Sie den Collector innerhalb der Anwendung, indem Sie ihn als erste Anweisung in Ihrer Anwendung anfordern und initialisieren.
Stellen Sie sicher, dass diese Zeile die erste Anweisung ist. Andernfalls kann der Collector nicht auf bestimmte Informationen zugreifen. Weitere Informationen zum ordnungsgemäßen Hinzufügen dieser Zeile finden Sie unter Falsche Kollektorintegration.
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');
Der vorangehende Code initialisiert den Kollektor mit den Standardkonfigurationsoptionen. Sie können auch ein Konfigurationsobjekt übergeben, wenn Sie den Instana Node.js Kollektor initialisieren. Eine Liste der gültigen Konfigurationsoptionen finden Sie unter Node.js Collector Configuration. Weitere Informationen zur Konfiguration der Konnektivität zwischen Ihrer überwachten Anwendung und dem Instana-Agenten finden Sie unter Agentenkommunikation.
ECMAScript
Wenn Ihre Anwendung ECMAScript verwendet und der @instana/collector
-Kollektor als Abhängigkeit installiert ist, aktivieren Sie den Kollektor für die Anwendung, indem Sie den Instana Node.js-Kollektor über die Node.js-Kommandozeilenflags laden. Folgen Sie den Anweisungen im Abschnitt ECMAScript.
Installation des Node.js Kollektors ohne Änderung der Anwendung
In Situationen, in denen Sie den Quellcode der überwachten Anwendung nicht ändern können (oder wollen), können Sie den Kollektor installieren, ohne den Quellcode zu ändern. Dieser Ansatz wird für Anwendungen bevorzugt, die mit Webpack, Babel oder einem anderen Bundler oder Transpiler erstellt wurden. Sie können diesen Ansatz auch für Next.js-Anwendungen verwenden.
Bei diesem Ansatz können Sie den Kollektor auf eine der folgenden Arten installieren:
- Installieren Sie
@instana/collector
als lokale Abhängigkeit von Ihrem Projekt - Installieren Sie
@instana/collector
global auf dem Zielsystem.
Installieren des Kollektors als lokale Abhängigkeit
Um den Collector als lokale Abhängigkeit zu installieren, führen Sie die folgenden Schritte aus:
Fügen Sie das Paket
@instana/collector
zu den Abhängigkeiten Ihres Projekts hinzu:Wenn Sie npm verwenden, führen Sie den folgenden Befehl aus:
npm install --save @instana/collector`
Wenn Sie yarn verwenden, führen Sie den folgenden Befehl aus:
yarn add @instana/collector
Fügen Sie die Funktion
require('@instana/collector')();
nicht in Ihren Code ein. Keine Ihrer JavaScript oder TypeScript Dateien muss das@instana
Paket erwähnen.Aktivieren Sie den Node.js -Collector:
Um den Collector in Ihrer Node.js-Anwendung zu aktivieren, lesen Sie die Abschnitte CommonJS und ECMAScript.
CommonJs
Für Anwendungen, die CommonJS, verwenden, führen Sie einen der folgenden Schritte aus, wenn Sie das Node.js-Programm starten. Wenn Sie entweder NODE_OPTIONS
oder das --require
-Flag verwenden, wird der Node.js-Kollektor vor Ihrem Anwendungscode geladen und initialisiert.
Achten Sie darauf, dass Sie nicht versehentlich den Teil src/immediate
weglassen, wenn Sie NODE_OPTIONS
setzen oder den Parameter --require
hinzufügen. Der Pfad muss mit ./
beginnen, damit Node.js ihn als relativen Pfad und nicht als Modulbezeichner identifiziert. Der Pfad wird auf der Grundlage des aktuellen Arbeitsverzeichnisses ausgewertet.
Setzen Sie die
NODE_OPTIONS
Variable bevor Sie den Node.js Aktivierungsprozess starten:NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"
Wenn Sie die Anwendung mit Docker erstellen, müssen Sie
NODE_OPTIONS
setzen, indem Sie die folgende Zeile zu IhremDockerfile
hinzufügen (nach der letztenFROM
-Anweisung und vor der letztenCMD
oderENTRYPOINT
, die dennode
-Prozess startet):ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"
Fügen Sie alternativ den Parameter
--require
zu dem Befehl hinzu, der Node.js startet. Wenn Sie die Anwendung normalerweise mit dem Befehlnode app/index.js
starten, fügen Sie ein zusätzliches--require
-Befehlszeilenargument hinzu. Sehen Sie sich das folgende Beispiel an:node --require ./node_modules/@instana/collector/src/immediate app/index.js
Wenn diese Anwendung mit Docker erstellt und ausgeführt wird, müssen Sie das letzte
CMD
oder dasENTRYPOINT
in Ihrer Dockerdatei ändern.Für weitere Informationen über den
--require
Parameter, siehe -r, --require module in der Node.js Dokumentation.
ECMAScript
Wenn die Anwendung ECMAScript-Module verwendet, führen Sie einen der folgenden Schritte aus, wenn Sie die ausführbare Node-Datei starten. Das Setzen von NODE_OPTIONS
oder das Auswählen des --import
- oder --experimental-loader
-Arguments basierend auf Ihrer Node.js-Version lädt und initialisiert den Node.js-Kollektor vor dem Anwendungscode. Weitere Informationen zu ECMAScript-Modulen finden Sie in der offiziellen Node.js-Dokumentation.
Setzen Sie die
NODE_OPTIONS
Variable bevor Sie den Node.js Aktivierungsprozess starten:Wenn Sie die Anwendung mit Docker erstellen, setzen Sie
NODE_OPTIONS
, indem Sie die folgende Zeile zu IhremDockerfile
hinzufügen (nach der letztenFROM
-Anweisung und vor der letztenCMD
oderENTRYPOINT
, die dennode
-Prozess startet):Für Node.js 18.19.0 und später, verwenden Sie den folgenden Befehl, um den Instana-Kollektor zu importieren:
ENV NODE_OPTIONS="--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs"
Für Node.js Versionen vor 18.19.0 verwenden Sie den folgenden Befehl, um den Instana-Kollektor zu importieren:
--experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjs"
Alternativ fügen Sie den Parameter
--import
oder--experimental-loader
ein, wenn Sie Node.js starten. Wenn Sie Ihre Anwendung mitnode app/index.js
starten, fügen Sie den entsprechenden--import
oder--experimental-loader
Befehl basierend auf Ihrer Node.js Version an das Kommandozeilenargument an. Sehen Sie sich das folgende Beispiel an:Für Node.js 18.19.0 und später, verwenden Sie den folgenden Befehl, um den Instana-Kollektor zu importieren:
node --import /path/to/instana/node_modules/@instana/collector/esm-register.mjs app/index.js
Für Node.js Versionen vor 18.19.0 verwenden Sie den folgenden Befehl, um den Instana-Kollektor zu importieren:
node --experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjs app/index.js
Der Lader initialisiert automatisch den Instana Node.js Kollektor.
Aktivieren Sie den Collector unter Windows
Wenn die Anwendung ECMAScript-Module verwendet und Ihr Betriebssystem Windows ist, stellen Sie file:///
dem Pfad für den ECMAScript-Loader voran:
--import file:///path/to/instana/node_modules/@instana/collector/esm-register.mjs
or
--experimental-loader file:///path/to/instana/node_modules/@instana/collector/esm-loader.mjs
Kollektor global installieren
Führen Sie die folgenden Schritte aus, um den Collector global zu installieren:
Installieren Sie das Paket
@instana/collector
auf dem Zielsystem:Wenn Sie npm verwenden, führen Sie den folgenden Befehl aus:
npm install -g @instana/collector
Wenn Sie yarn verwenden, führen Sie den folgenden Befehl aus:
yarn global add
Wenn Sie den Kollektor in einer containerisierten Anwendung installieren, können Sie die vorherige Anweisung zu
Dockerfile
hinzufügen.Ermitteln Sie die Position, an der der Befehl
npm install -g
das Paket installiert. Die Position hängt vom Betriebssystem ab. Weitere Informationen dazu, wo npm installierte Pakete stellt, finden Sie in der Node.js -Dokumentation zu Ordnern.Stellen Sie sicher, dass das Paket
@instana/collector
mit allen zugehörigen Abhängigkeiten auf dem Zielsystem an einer bekannten Position wie/path/to/instana/node_modules/@instana/collector
verfügbar ist.Aktivieren Sie den Node.js -Collector:
CommonJS: Wenn die AnwendungCommonJS, folgen Sie den Schritten in derCommonJS Abschnitt.
ECMAScript-Module: Wenn die Anwendung ECMAScript-Module verwendet, befolgen Sie die Schritte im ECMAscript Abschnitt.
Native -Add-ons
Der Tracer installiert die folgenden nativen Add-ons:
- gcstats.js: Ruft Informationen zur Garbage-Collection ab.
- event-loop-stats: Ruft Informationen zur Ereignisschleifenaktivität ab.
- autoprofile: Untersucht Leistungsprobleme oder Engpässe. AutoProfile™ ist standardmäßig inaktiviert. Informationen zum Aktivieren von AutoProfile™finden Sie unter Node.js -Kollektorkonfiguration.
Diese Add-ons sind "optionale npm-Abhängigkeiten". Wenn sie nicht auf Ihrem System installiert werden können, funktioniert der Collector weiterhin wie erwartet. Wenn ein Problem mit den Add-ons auftritt, lesen Sie den Abschnitt zur Fehlerbehebung. Weitere Informationen zu den Voraussetzungen für C + + -Add-ons finden Sie in der offiziellen Node.js -Dokumentation oder in node-gyp.
Abhängigkeiten ohne optionale Abhängigkeiten installieren
Wenn Sie Ihre Abhängigkeiten mit dem Befehl npm install --no-optional
oder yarn --ignore-optional
installieren, versucht npm oder yarn nicht, die nativen Add-ons zu installieren.
Um das Problem zu beheben, dass die nativen Add-ons nicht über npm oder yarn installiert werden, entfernen Sie entweder die Flags aus dem Installationsschritt oder fügen Sie die folgenden Installationsschritte hinzu:
npm install @instana/autoprofile
oderyarn add @instana/autoprofile
npm install event-loop-stats
oderyarn add event-loop-stats
npm install gcstats.js
oderyarn add gcstats.js
Kollektor Node.js während der Entwicklung inaktivieren
Sie können Umgebungsvariablen verwenden, um den Kollektor Node.js für (lokale) Entwicklung zu inaktivieren. Das Express-Framework hat die Umgebungsvariable NODE_ENV
zu diesem Zweck populär gemacht.
Führen Sie die folgenden Schritte aus, um den Node.js -Collector zu inaktivieren:
Laden Sie den Node.js-Collector wie folgt:
if (process.env.NODE_ENV !== 'development') { require('@instana/collector')(); }
Starten Sie Ihre Anwendung lokal, wobei die Variable
NODE_ENV
aufdevelopment
gesetzt ist. Beispiele:export NODE_ENV=development
NODE_ENV=development node myApp.js
Fehlerbehebung
@instana/autoprofile konnte nicht geladen werden
Der folgende Fehler tritt auf, wenn der Client oder Kunde AutoProfile™aktivieren muss:
Could not load @instana/autoprofile. You will not get profiling information for this Node.js app in Instana, although autoprofiling has been enabled.
Überprüfen Sie zur Behebung des Fehlers, ob Ihre Node.js -Version unterstützt wird und führen Sie den Befehl npm rebuild
aus.
Vorkompilierten Build kopieren
Der folgende Fehler tritt normalerweise auf, wenn Node.js Tracer versucht, die vorkompilierten Binärdateien zu entpacken und der Ordner tmp nicht beschreibbar ist (z. B. in Kubernetes -Pods):
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'
}
Um den Fehler beim Kopieren des vorkompilierten Builds zu beheben, überprüfen Sie, ob sich das System im nicht schreibgeschützten Modus befindet.
Beheben des Ecmascript-URL-Schemafehlers unter Windows
Der folgende Fehler tritt häufig auf, wenn Sie den Instana-Collector in einer Windows ECMAScript-Anwendung aktivieren:
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader.
Dieser Fehler tritt auf, wenn Sie in den Loader-Befehlen einen absoluten Pfad angeben. Um dieses Problem zu beheben, stellen Siefile:///
zum Pfad. Weitere Informationen finden Sie im Collector unter Windows aktivieren Abschnitt.
runtime-version-switch module not found
Fehlermeldung
Der folgende Fehler wird angezeigt, wenn die AutoTrace Webhook-Instrumentierungsversion veraltet ist, aber der Node.js-Kollektor auf die neueste Version aktualisiert wurde. Dieser Fehler tritt auf, wenn das runtime-version-switch
Skript aus dem AutoTrace Webhook entfernt wird.
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)
Obwohl Sie den neuesten AutoTrace Webhook verwenden, verweisen die bereits bereitgestellten Kubernetes Artefakte möglicherweise auf ein veraltetes Instrumentierungs-Image.
Zur Lösung des Problemsruntime-version-switch module not found
Fehlermeldung, führen Sie die folgenden Schritte aus: 1. Deinstallieren Sie den AutoTrace Webhook. 2. Stellen Sie den AutoTrace Webhook erneut bereit, um die Änderungen zu übernehmen.