スクリプトを使用した SourceMap のアップロード¶
RUM アプリケーションがパブリック DataWay 接続方式を使用している場合、アプリケーションの実行データは直接パブリック DataWay に報告されます。対応する SourceMap ファイルは、該当サイトの OpenAPI インターフェースを使用してスクリプトでアップロードできます。
つまり:
- RUM データの報告時には、アプリケーション接続ページの
datawayUrlとclientTokenを使用します; - SourceMap ファイルのアップロード時には、サイトの
OpenAPIアドレスとOPEN_API_KEYを使用します。
本書では、パブリック DataWay 環境でのスクリプトによる SourceMap のアップロード方法を説明します。
準備¶
- 現在のアプリケーションが該当する端末の接続ドキュメントに従って、パブリック DataWay の初期化を完了していることを確認してください;
- 現在のサイトに対応する OpenAPI アドレスを取得してください;
- 現在のサイトに対応する OPEN_API_KEY を取得してください;
- Guance ワークスペースに移動し、管理 > API Key 管理 > 新しいキーを作成 をクリックします;
- 作成が成功したら、API Key の詳細ページで
Keyを取得し、それをスクリプト内のDF_API_KEYとして使用します; - 環境やバージョンを区別しない場合は、
app_idのみを渡すこともできますが、ヒット範囲が広くなり、調査時にはenvとversionを同時に渡す方が正確です;
- 対象の RUM アプリケーションの
app_id、env、versionを取得してください;app_idは現在の RUM アプリケーションの一意の識別子です;envとversionは、SDK の初期化時または実際のエラーデータ内の対応するフィールドと一致している必要があります;
- SourceMap 設定 の要件に従って、事前に
sourcemap.zipをパッケージ化してください。 - Shell バージョンを使用する場合は、環境に
bash、curl、jq、split、mktemp、wcがインストールされていることを確認してください; - Python バージョンを使用する場合は、環境に
python3がインストールされていることを確認してください。
スクリプトによるアップロード¶
スクリプトによるアップロードは OpenAPI を介して実行され、パブリック DataWay 接続環境での自動アップロードに適しています。
スクリプトの説明¶
アップロードスクリプトのリポジトリ:sourcemap-upload-scripts。
現在、2 種類のアップロードスクリプトを提供しています:
- Shell バージョン:
upload-sourcemap.sh - Python バージョン:
upload_sourcemap.py
どちらのスクリプトも、既にパッケージ化された sourcemap.zip ファイルをアップロードするためのものであり、SourceMap の生成や圧縮は行いません。
サンプルコマンドを実行する前に、上記のリポジトリから該当するスクリプトを取得し、現在のコマンド実行ディレクトリに配置するか、コマンドにスクリプトの実際のパスを指定してください。
パラメータの説明¶
必須パラメータ¶
--endpoint:サイトに対応する OpenAPI アドレス;--api-key:サイトに対応するOPEN_API_KEY。リクエスト時にDF-API-KEYリクエストヘッダーに書き込まれます;--app-id:RUM アプリケーションのapp_id;--file:アップロードするsourcemap.zipファイルのパス。ファイルサイズは500 MBを超えてはいけません。
オプションパラメータ¶
--version:アプリケーションのバージョン番号;--env:アプリケーションの環境識別子(例:daily、gray、prod);--need-cover:同名ファイルを上書きするかどうか。指定可能な値はtrueまたはfalse、デフォルトはfalse;--chunk-size-mb:チャンクアップロードサイズ(単位:MB)。デフォルトは10、最大10;--merge-path:カスタムマージインターフェースパス。現在のサイトのマージインターフェースパスがスクリプトのデフォルト値と異なる場合のみ使用します;--cancel-path:カスタムアップロードキャンセルインターフェースパス。現在のサイトのキャンセルインターフェースパスがスクリプトのデフォルト値と異なる場合のみ使用します。
使用方法¶
期待される出力¶
実行が成功すると、次のようなログが表示されます:
Init succeeded, uploadId=...Uploading part x/yMerge succeeded via /api/v1/rum_sourcemap/part_mergeUpload complete
環境変数による方法¶
環境変数を使用して同じパラメータを渡すこともできます:
export DF_OPENAPI_ENDPOINT="https://openapi.guance.com"
export DF_API_KEY="your-api-key"
export DF_APP_ID="app_id_from_studio"
export DF_VERSION="1.0.2"
export DF_ENV="daily"
export DF_SOURCEMAP_FILE="./sourcemap.zip"
export DF_NEED_COVER="true"
環境変数とコマンドラインパラメータの対応関係は次のとおりです:
DF_OPENAPI_ENDPOINTは--endpointに対応DF_API_KEYは--api-keyに対応DF_APP_IDは--app-idに対応DF_VERSIONは--versionに対応DF_ENVは--envに対応DF_SOURCEMAP_FILEは--fileに対応DF_NEED_COVERは--need-coverに対応
その後、次のコマンドを実行します:
または:
注意事項¶
- スクリプトによるアップロードは、パブリック DataWay 接続環境に適しています;
- アップロードスクリプトは、OpenAPI + DF-API-KEY 認証方式を使用しており、
datawayUrl + clientTokenではありません; sourcemap.zipを解凍したディレクトリ構造は、エラースタック内のファイルパスと一致している必要があります;- アップロードファイルは
.zip形式である必要があり、ファイルサイズは500 MBを超えてはいけません; versionとenvのいずれか一方のみを指定した場合、アップロード先が不正確になる可能性があるため、両方を指定することを推奨します;- チャンクアップロードの各チャンクの最大サイズは
10 MBです; - アップロードプロセスが初期化後に失敗した場合、スクリプトは自動的にこのチャンクアップロードタスクをキャンセルしようとします。
- Python バージョンは Python 標準ライブラリのみを使用しており、追加の pip 依存関係のインストールは必要ありません。
よくある質問¶
uploadId is empty¶
これは通常、サーバー側に同じ名前の SourceMap が既に存在し、上書きが有効になっていないことを示します。
次のパラメータを追加して再試行してください:
Missing required command¶
Shell バージョンに必要なコマンドが不足していることを示します。該当するツールをインストールしてから再試行してください。
Merge endpoint ... returned HTTP 404¶
これは通常、現在のサイトが異なるマージインターフェースパスを使用していることを示します。
該当サイトの管理者に問い合わせてインターフェースパスを確認し、次のように指定し直してください:
アップロード成功したがエラースタックが解決されない¶
まず以下の内容を確認してください:
app_id、version、envが実際のエラーデータと一致しているか。sourcemap.zipを解凍したディレクトリ構造が、error_stack内のリソースパスと一致しているか。- 現在のアプリケーションが、SourceMap をアップロードする必要のある対象アプリケーションであるか。