Cloud Monitor リアルユーザーモニタリング (RUM) Electron SDK のすべての設定オプションと API の一覧です。設定オブジェクトを armsRum.init() に渡して SDK を初期化します。
SDK 設定 (基本)
パラメーター | 型 | 説明 | 必須 | デフォルト |
endpoint | string | データ報告のエンドポイント URL。 | はい | - |
enable | boolean | SDK の有効化/無効化。 | いいえ | true |
env | ‘prod’ | ‘gray’ | ‘pre’ | ‘daily’ | ‘local’ | string | アプリケーションの環境。 | いいえ | - |
version | string | アプリケーションのバージョン。 | いいえ | - |
endpoint パラメーターは必須で、完全なエンドポイント URL を指定する必要があります。この URL は、アプリケーションを作成した後に Cloud Monitor 2.0 コンソールの [Real User Monitoring] > [application list] から取得できます。
import armsRum from '@arms/rum-electron';
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
enable: true,
env: 'prod',
version: '1.0.0',
});アプリケーション設定
app オブジェクトは、Cloud Monitor 2.0 コンソールで異なるディメンションに基づいてデータをフィルタリングおよび集計するための拡張アプリケーションメタデータを提供します。
パラメーター | 型 | 説明 | 必須 | デフォルト |
app | object | 拡張アプリケーション情報。 | いいえ | - |
app.name | string | アプリケーション名。 | いいえ | - |
app.version | string | アプリケーションのバージョン。 | いいえ | - |
app.channel | string | リリースチャネル。 | いいえ | - |
app.env | string | アプリケーションの環境。 | いいえ | - |
app.type | string | アプリケーションタイプ。 | いいえ | - |
app.package | string | パッケージ名。 | いいえ | - |
app.framework | string | 技術フレームワーク。 | いいえ | - |
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
app: {
name: 'MyElectronApp',
version: '2.1.0',
channel: 'stable',
env: 'prod',
type: 'electron',
package: 'com.example.my-app',
framework: 'react',
},
});ユーザー設定
user オブジェクトは現在のユーザーを識別し、Cloud Monitor 2.0 コンソールでユーザーレベルのトラブルシューティングを可能にします。
パラメーター | 型 | 説明 | 必須 | デフォルト |
user | object | ユーザー情報。 | いいえ | - |
user.name | string | ユーザー名。 | いいえ | - |
user.tags | string | ユーザーに関連付けられたタグ。 | いいえ | - |
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
user: {
name: 'test-user',
tags: 'vip,enterprise',
},
});sessionConfig 設定
sessionConfig オプションは、セッションのサンプリングとライフサイクルポリシーを制御します。
パラメーター | 型 | 説明 | 必須 | デフォルト |
sampleRate | number | セッションのサンプリングレート (0~1)。 | いいえ | 1 |
maxDuration | number | セッションの最大継続時間 (ミリ秒)。 | いいえ | - |
overtime | number | セッションの非アクティブタイムアウト (ミリ秒)。 | いいえ | - |
sampleRate は 0~1 の数値である必要があります。値が 1 の場合はセッションの 100% をキャプチャし、0.1 の場合は 10% をキャプチャします。サンプリングレートを下げると、データ量とコストを削減できます。
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
sessionConfig: {
sampleRate: 1,
maxDuration: 4 * 60 * 60 * 1000, // セッションは最大 4 時間継続します
overtime: 30 * 60 * 1000, // 非アクティブ状態が 30 分続くとセッションがタイムアウトします
},
});collectors 設定 (メインプロセス)
collectors オプションは、各メインプロセスのコレクターを有効または無効にします。各コレクターは、きめ細かな制御のために boolean または ICollectorConfig オブジェクトを受け取ります。
パラメーター | 型 | 説明 | 必須 | デフォルト |
jsError | boolean | ICollectorConfig | 未補足の例外と Promise 拒否のキャプチャ。 | いいえ | true |
consoleError | boolean | ICollectorConfig |
| いいえ | true |
crash | boolean | ICollectorConfig | ネイティブクラッシュのキャプチャ。 | いいえ | true |
api | boolean | ICollectorConfig | API リクエストの監視。 | いいえ | true |
application | boolean | ICollectorConfig | アプリケーションの起動メトリクス。 | いいえ | true |
crash コレクターは Electron の crashReporter モジュールを使用して、メインプロセスとレンダラープロセスの両方でネイティブクラッシュをキャプチャし、WASM を使用したミニダンプファイルの解析に対応しています。
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
collectors: {
jsError: true,
consoleError: false,
crash: true,
api: {
enable: true,
// ICollectorConfig では、フィルターやその他のオプションをさらに設定できます
},
application: true,
},
});browserCollectors 設定 (レンダラープロセス)
この設定は autoInject: true の場合にのみ有効です。autoInject が false の場合は、ブラウザ SDK 内でレンダラープロセスのコレクターを個別に設定する必要があります。
browserCollectors オプションは、レンダラープロセスのブラウザ SDK に自動注入されるコレクターを設定します。各コレクターは boolean または ICollectorConfig オブジェクトを受け取ります。
パラメーター | 型 | 説明 | 必須 | デフォルト |
perf | boolean | ICollectorConfig | ページロードパフォーマンスメトリクスの収集。 | いいえ | true |
webvitals | boolean | ICollectorConfig | コアウェブバイタル (LCP、FID、CLS)。 | いいえ | true |
exception | boolean | ICollectorConfig | 未補足の例外と Promise 拒否。 | いいえ | true |
whiteScreen | boolean | ICollectorConfig | ホワイトスクリーン検出。 | いいえ | true |
api | boolean | ICollectorConfig | HTTP リクエスト (XHR と Fetch) の監視。 | いいえ | true |
staticResource | boolean | ICollectorConfig | 静的リソースの読み込み監視。 | いいえ | true |
click | boolean | ICollectorConfig | ユーザーのクリックイベント。 | いいえ | true |
longTask | boolean | ICollectorConfig | ロングタスク検出 (>50 ms)。 | いいえ | true |
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
autoInject: true,
browserCollectors: {
perf: true,
webvitals: true,
exception: true,
whiteScreen: true,
api: true,
staticResource: true,
click: false, // クリックイベントの収集を無効化
longTask: true,
},
});tracing 設定
tracing オプションは分散トレーシングを設定します。boolean を渡して有効または無効にするか、詳細設定のために ITracingOption オブジェクトを渡します。
パラメーター | 型 | 説明 | 必須 | デフォルト |
enable | boolean | 分散トレーシングの有効化/無効化。 | いいえ | false |
sample | number | サンプリングレート (0~1)。 | いいえ | - |
propagatorTypes | Array<string> | 伝播プロトコルのタイプ。対応する値: | いいえ | - |
allowedUrls | Array<MatchOption | TraceOption> | トレースヘッダーを注入する URL パターン。 | いいえ | - |
tracestate | boolean | tracestate を含めるかどうかの指定。 | いいえ | false |
baggage | boolean | バゲージを含めるかどうかの指定。 | いいえ | false |
propagatorTypes は複数の伝播プロトコルに対応しています。バックエンドで使用しているトレーシングシステムに基づいてプロトコルを選択してください。allowedUrls は文字列または正規表現の一致をサポートします。トレースヘッダーは一致するリクエストにのみ注入されます。
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
tracing: {
enable: true,
sample: 0.5,
propagatorTypes: ['tracecontext', 'b3'],
allowedUrls: [
'https://api.example.com',
/\/api\/v\d+\//,
],
tracestate: true,
baggage: false,
},
});その他の設定
パラメーター | 型 | 説明 | 必須 | デフォルト |
autoInject | boolean | すべての | いいえ | true |
partition | string | カスタムの Electron セッションパーティション。 | いいえ | - |
spaMode | boolean | ‘auto’ | ‘hash’ | ‘history’ | SPA (シングルページアプリケーション) トラッキングのルーティングモード。 | いいえ | false |
evaluateApi | Function | API リクエストを解析するためのカスタムコールバック。 | いいえ | - |
parseViewName | Function | ページビュー名を解析するためのカスタム関数。 | いいえ | - |
beforeReport | Function | 報告前にデータを変更または破棄するためのコールバック。 | いいえ | - |
properties | Record<string, number | string> | グローバルなカスタムプロパティ。 | いいえ | - |
デフォルトでは、autoInject は true です。つまり、SDK は各 BrowserWindow のレンダラープロセスにブラウザ SDK を自動注入します。これを false に設定した場合は、各レンダラープロセスでブラウザ SDK を手動でインポートして初期化する必要があります。
// レンダラープロセスで手動で初期化します
import armsRum from '@arms/rum-electron/browser';
armsRum.init({ endpoint: '<YOUR-ENDPOINT>' });armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
autoInject: true,
partition: 'persist:main',
spaMode: 'hash',
parseViewName: (url: string) => {
// ページビュー名を解析するためのカスタムロジック
const match = url.match(/\/app\/([^/?#]+)/);
return match ? match[1] : url;
},
beforeReport: (bundle: any) => {
// 変更したデータを返すと報告を継続します
// null または undefined を返すとデータを破棄します
console.log('beforeReport', bundle);
return bundle;
},
properties: {
department: 'engineering',
region: 'cn-hangzhou',
},
});partitionオプションを使用して、カスタムの Electron セッションパーティションを指定します。BrowserWindowがpartition設定を使用している場合は、対応するセッションに対してプリロードスクリプトが正しく登録されるように、ここでも同じ値を指定する必要があります。spaModeの値は次のとおりです。false:SPA のルートトラッキングを無効にします。これはデフォルトの動作で、フルページロードのみをトラッキングします。trueまたは'auto':ルーティングモードを自動検出します。pathname の変更よりも hash の変更を優先します。'hash':hash ルーティングモード (例:React HashRouter)。'history':History API ルーティングモード (例:React BrowserRouter)。
SDK API
armsRum.init(config)
SDK を初期化します。このメソッドは app.ready イベントが発行される前に呼び出す必要があります。
init(config: IElectronConfig): Promise<ArmsRum>init() は Electron の app.ready イベントより前に呼び出す必要があります。SDK はフォールバック報告チャネルに対応するために、ready イベントより前にカスタムプロトコル (rum-event://) を登録する必要があるためです。
import { app } from 'electron';
import armsRum from '@arms/rum-electron';
// app.ready の前に init を呼び出します
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
env: 'prod',
version: '1.0.0',
});
app.whenReady().then(() => {
// BrowserWindow インスタンスの作成などを行います
});
armsRum.getConfig()
現在の SDK 設定を取得します。
getConfig(): IElectronConfigconst config = armsRum.getConfig();
console.log('Current config:', config.endpoint, config.env);armsRum.setConfig()
SDK 設定を動的に更新します。2 つのシグネチャに対応しています。
// 単一のオプションを更新します
setConfig<T extends keyof IElectronConfig>(key: T, value: IElectronConfig[T]): void
// 複数のオプションを更新します
setConfig(config: Partial<IElectronConfig>): void// 単一のオプションを更新します
armsRum.setConfig('enable', false);
armsRum.setConfig('env', 'daily');
// 複数のオプションを更新します
const config = armsRum.getConfig();
armsRum.setConfig({
...config,
enable: true,
env: 'prod',
version: '2.0.0',
});armsRum.registerSession(partition)
カスタムの partition を使用する BrowserWindow に対して、RUM プリロードスクリプトを登録します。init() の後、対応する BrowserWindow を作成する前に呼び出して、初回のページロードで有効になるようにしてください。
registerSession(partition: string): Promise<ArmsRum>BrowserWindow がカスタムの partition (例: persist:main) を使用する場合は、このメソッドを呼び出して、そのセッションに対するプリロードスクリプトを登録します。init() で partition 設定でデフォルトのパーティションをすでに指定している場合は、このメソッドを再度呼び出す必要はありません。
import { app, BrowserWindow } from 'electron';
import armsRum from '@arms/rum-electron';
// app.ready の前に init を呼び出します
armsRum.init({
endpoint: '<YOUR-ENDPOINT>',
});
// 対応する BrowserWindow を作成する前に、カスタムパーティションのプリロードスクリプトを登録します
armsRum.registerSession('persist:main');
app.whenReady().then(() => {
// このパーティションを使用するウィンドウを作成します
const win = new BrowserWindow({
webPreferences: {
partition: 'persist:main',
// ...
},
});
});