Einrichtung von Instrumentation
Instrumentation ist der Prozess der Verwendung von Code, um Monitoring- und Logging-Tools in Ihre Anwendung zu integrieren. Dies ermöglicht es Ihnen, die Leistung und das Verhalten Ihrer Anwendung zu verfolgen sowie Probleme in der Produktion zu debuggen.
Konvention
Um Instrumentation einzurichten, erstellen Sie eine Datei instrumentation.ts|js
im Stammverzeichnis Ihres Projekts (oder im Ordner src
, falls Sie einen verwenden.
Exportieren Sie dann eine register
-Funktion in der Datei. Diese Funktion wird einmalig aufgerufen, wenn eine neue Next.js-Serverinstanz initialisiert wird.
Beispielsweise, um Next.js mit OpenTelemetry und @vercel/otel zu verwenden:
Siehe das Next.js mit OpenTelemetry Beispiel für eine vollständige Implementierung.
Wissenswert:
- Die
instrumentation
-Datei sollte sich im Stammverzeichnis Ihres Projekts befinden und nicht innerhalb desapp
- oderpages
-Verzeichnisses. Wenn Sie densrc
-Ordner verwenden, platzieren Sie die Datei insrc
nebenpages
undapp
.- Wenn Sie die
pageExtensions
-Konfigurationsoption verwenden, um ein Suffix hinzuzufügen, müssen Sie auch den Dateinamen derinstrumentation
entsprechend anpassen.
Beispiele
Importieren von Dateien mit Nebeneffekten
Manchmal kann es nützlich sein, eine Datei in Ihren Code zu importieren, aufgrund der Nebeneffekte, die sie verursacht. Beispielsweise könnten Sie eine Datei importieren, die eine Reihe globaler Variablen definiert, aber nie explizit die importierte Datei in Ihrem Code verwenden. Sie hätten dennoch Zugriff auf die globalen Variablen, die das Paket deklariert hat.
Wir empfehlen, Dateien mit der JavaScript-import
-Syntax innerhalb Ihrer register
-Funktion zu importieren. Das folgende Beispiel demonstriert eine grundlegende Verwendung von import
in einer register
-Funktion:
Wissenswert:
Wir empfehlen, die Datei innerhalb der
register
-Funktion zu importieren, anstatt am Anfang der Datei. Auf diese Weise können Sie alle Nebeneffekte an einer Stelle in Ihrem Code zusammenfassen und unbeabsichtigte Folgen durch globalen Import am Dateianfang vermeiden.
Importieren von runtime-spezifischem Code
Next.js ruft register
in allen Umgebungen auf, daher ist es wichtig, Code, der bestimmte Laufzeitumgebungen nicht unterstützt (z.B. Edge oder Node.js), bedingt zu importieren. Sie können die Umgebungsvariable NEXT_RUNTIME
verwenden, um die aktuelle Umgebung abzufragen: