JavaScript ソースマッピングの設定
アップロードされたソースマップによって、Splunk RUM がスタックトレースを人間が判読可能な形式に戻すことができます。
このページでは、JavaScript ソースマッピングの設定方法について説明します。これにより、Splunk RUM がブラウザアプリケーションのエラーからのスタックフレームを、人間が読める形式に変換して、エラーに関連するソースコードの正確な行を確認できるようになります。
JavaScript ソースマッピングの設定には、次の手順が含まれます。
-
(オプション)ビルドツールによって生成されるソースマップに
sourcesContentプロパティを追加します。 -
splunk-rumCLI または Splunk Webpack ビルドプラグインを使用して、縮小されたファイルにコードスニペットを挿入します。 -
ソースマップを Splunk RUM にアップロードします。
-
縮小されたファイルを実稼働環境に展開します。
Splunk では、対応するバイナリを配布する前に、このページの手順に従ってソースマップを Splunk RUM にアップロードすることを推奨しています。これを確実にするためのベストプラクティスは、これらの手順を CI パイプラインに統合して、アプリケーションを作成するたびに、対応するソースマップがパイプラインによって Splunk RUM に自動的にアップロードされるようにすることです。または、ソースマップをオンデマンドでアップロードすることもできます。
現在、この機能は us2 リージョンではご利用いただけません。
Splunk RUM は、ソースマップを永続的に保存します。現時点では、それらを Splunk RUM から削除することはできません。
前提条件
-
ブラウザの RUM エージェント(splunk-otel-web.js)を v0.20.2 以降に更新します。そうしないと、Splunk RUM はブラウザアプリケーションからのスタックトレースをシンボリケートできません。
オプション 1:splunk-rum CLI の使用
-
ビルド環境の設定:
ヒント: これらの例では、一般的なビルドツールについて説明します。ツールが異なる場合でも、splunk-rumCLI を使用できます。この例を一般的なガイドとして、お使いのセットアップに合わせて調整してください。-
実稼働環境ビルドツールがソースマップを生成するように設定されていることを確認します。
バンドラツール向けにソースマップを有効にする方法については、JjavaScript バンドラまたはフレームワークのドキュメントを参照してください。例:
-
Webpack バンドラを使用している場合は、
devtool: "source-map"のような設定をプロジェクトの webpack.config.js ファイルに追加します。 -
Next.jsフレームワークを使用している場合は、プロジェクトの next.config.ts ファイルに
productionBrowserSourceMaps: trueを追加します。
-
-
プロジェクトを実稼働モードでビルドします。
つまり、バンドラまたはフレームワークのコマンドを実行して、プロジェクトを(開発モードではなく)実稼働モードでビルドします。
-
Webpack バナーの場合は、コマンド
webpackを実行 -
Next.js フレームワークの場合は、
next buildコマンドを実行 -
package.json に、実稼働モードでアプリケーションをビルドするためのスクリプトがすでに定義されている場合は、そのスクリプトを実行します。たとえば、次の package.json の場合は、次のようになります。
// package.json { ... "scripts": { "build": "webpack", "dev": "webpack --mode=development" ... } ... }buildスクリプトを実行します(devスクリプトではありません)。npm run build
-
-
実稼働バンドルとソースマップが同じ出力ディレクトリに書き込まれていることを確認します。
つまり、バンドルまたはフレームワークが出力ディレクトリに使用しているディレクトリを確認し、このディレクトリの内容を検査します。例:
-
Webpack を使用している場合は、dist(デフォルトの出力ディレクトリ)を調べます。
-
Next.js を使用している場合は、.next 内のディレクトリを調べます。
出力ディレクトリは、
splunk-rumコマンドの--pathオプションを使用して指定するものです。ビルドコマンドの出力フォルダが ./dist ディレクトリの場合は、そのディレクトリの内容を調べて、.js と .js.map ファイルの両方が作成されていることを確認します。
# verify that both .js and .js.map files appear here find ./dist -type f | sortこれにより、実稼働環境ビルドコマンドが、出力ディレクトリ ./dist 内に .js と .js.map ファイルの両方を生成するよう適切に設定されていることが確認できます。
-
-
-
指定したディレクトリ内のすべてのソースマップと縮小されたファイルのペアを検索し、各ペアのソースマップ ID を計算して、そのソースマップ ID を縮小された各ファイルにコードスニペットとして挿入します。
splunk-rum sourcemaps inject --path path-to-production-files -
指定したディレクトリ内のソースマップを Splunk RUM にアップロードします。このコマンドでは、アプリケーション名(
applicationName)とアプリケーションバージョン(applicationVersion)に、「Splunk ブラウザ RUM インストルメンテーションを設定する」で使用したものと同じ値を使用します。注:SPLUNK_REALMおよびSPLUNK_ACCESS_TOKEN環境変数を設定しなかった場合は、--realm valueおよび--token your-splunk-org-access-tokenパラメータもこのコマンドに追加する必要があります。splunk-rum sourcemaps upload \ --app-name applicationName \ --app-version applicationVersion \ --path path-to-production-files
構文
splunk-rum [command] [parameters]
コマンドの説明
|
コマンド |
説明 |
|---|---|
|
|
パラメータ:
|
|
|
パラメータ:
|
オプション 2:Webpack ビルドプラグインを使用
プロジェクトがバンドルツールとして Webpack 5 を使用している場合は、Splunk RUM Webpack ビルドプラグインをプロジェクトに追加して、ソースマッピングのサポートを容易にすることができます。このプラグインは、splunk-otel-js-web リポジトリ内の個別の npm アーティファクトです。
プロジェクトで異なるバンドルツールまたは異なるバージョンの Webpack を使用している場合は、代わりに splunk-rum CLI を使用します。
-
開発依存関係として、Splunk RUM Webpack プラグインを
package.jsonに追加します。npm install @splunk/rum-build-plugins --save-dev -
ソースマップを生成するよう
webpack.config.jsを設定します。Devtool | webpack を参照してください。 -
webpack.config.jsに次の行を追加して、Splunk RUM Webpack プラグインをプラグインのリストに追加します。<applicationName>と<applicationVersion>は、「Splunk ブラウザ RUM インストルメンテーションを設定する」で使用した値と同じです。自分自身のローカル開発向けにローカルビルドを実行しているときにソースマップがアップロードされないようにする場合は、disableUploadをtrueに設定します。const { SplunkRumWebpackPlugin } = require('@splunk/rum-build-plugins') module.exports = { ... plugins: [ ..., new SplunkRumWebpackPlugin({ applicationName: 'applicationName', version: 'applicationVersion', sourceMaps: { token: 'your-splunk-org-access-token', realm: 'your-splunk-observability-realm', // Optional: conditionally set 'disabledUpload' so that file uploads // are only performed during your production builds on your CI pipeline disableUpload: <boolean> } }), ] } -
アプリケーションをビルドするたびに、縮小されたファイルに
sourceMapIdプロパティが自動的に挿入され、ソースマップが Splunk RUM に自動的にアップロードされることを確認します。
(オプション)ソースマップに sourcesContent プロパティを追加する
sourcesContent プロパティをソースマップファイルに追加すると、各 JavaScriptエラーの原因となったコードスニペットを Splunk RUM がプルして表示できるようになります。このプロパティを追加するには、このプロパティを含むソースマップを生成するようバンドラツールを設定します。または、Splunk RUM にソースコードを含めたくない場合は、このプロパティを省略したソースマップを生成するようにバンドルツールを設定します。
挿入された JavaScript ファイルを実稼働環境に展開する
アプリケーションのソースマップをアップロードし、挿入された縮小ファイルを実稼働環境に展開すると、Splunk RUM は、このアプリケーションのスタックトレースを人間が判読可能な形式に自動的に変換します。
splunk-rum コマンドをビルドパイプラインに統合し、アプリケーションをビルドするたびにソースマップも再アップロードするようにすることです。