計装 (Instrumentation) の設定方法
計装 (Instrumentation) とは、コードを使用してアプリケーションにモニタリングやロギングツールを統合するプロセスです。これにより、アプリケーションのパフォーマンスや動作を追跡し、本番環境での問題をデバッグできます。
規約
計装を設定するには、プロジェクトのルートディレクトリ(またはsrc
フォルダを使用している場合はその中)にinstrumentation.ts|js
ファイルを作成します。
次に、このファイルからregister
関数をエクスポートします。この関数は、新しいNext.jsサーバーインスタンスが起動する際に1回呼び出されます。
例えば、Next.jsをOpenTelemetryと@vercel/otelで使用する場合:
完全な実装についてはNext.js with OpenTelemetryの例を参照してください。
知っておくと良いこと:
instrumentation
ファイルはプロジェクトのルートに配置し、app
やpages
ディレクトリ内には配置しないでください。src
フォルダを使用している場合は、pages
やapp
と同階層のsrc
内にファイルを配置します。pageExtensions
設定オプションを使用して接尾辞を追加する場合、instrumentation
のファイル名もそれに合わせて更新する必要があります。
例
副作用のあるファイルのインポート
時々、コード内で副作用を引き起こすためにファイルをインポートすることが有用な場合があります。例えば、グローバル変数のセットを定義するファイルをインポートしても、コード内で明示的にそのインポートファイルを使用しない場合があります。それでも、パッケージが宣言したグローバル変数にアクセスできます。
register
関数内でJavaScriptのimport
構文を使用してファイルをインポートすることを推奨します。以下の例は、register
関数内でのimport
の基本的な使用方法を示しています:
知っておくと良いこと:
ファイルの先頭でグローバルにインポートするのではなく、
register
関数内からインポートすることを推奨します。これにより、コード内の副作用を1か所にまとめ、ファイルの先頭でグローバルにインポートすることによる意図しない影響を避けることができます。
ランタイム固有のコードのインポート
Next.jsはすべての環境でregister
を呼び出すため、特定のランタイム(例: EdgeまたはNode.js)をサポートしていないコードを条件付きでインポートすることが重要です。現在の環境を取得するためにNEXT_RUNTIME
環境変数を使用できます: