RUM 設定¶
RUM を取得する¶
標準 uni-app:
uni ミニプログラム:
uni ミニプログラムはホスト App が RUM の初期化を完了するため、rum.setConfig() を呼び出す必要はありません。本ページの自動コレクターと手動収集 API は、ホストの初期化完了後に使用できます。
RUM 初期化設定¶
rum.setConfig({
androidAppId: 'YOUR_ANDROID_APP_ID',
iOSAppId: 'YOUR_IOS_APP_ID',
harmonyAppId: 'YOUR_HARMONY_APP_ID',
errorMonitorType: 'all',
deviceMonitorType: ['cpu', 'memory']
});
| パラメーター名 | パラメーター型 | 必須 | 説明 |
|---|---|---|---|
| androidAppId | string | Android リリース時は必須 | Android プラットフォームの appId |
| iOSAppId | string | iOS リリース時は必須 | iOS プラットフォームの appId |
| harmonyAppId | string | HarmonyOS リリース時は必須 | HarmonyOS プラットフォームの appId |
| sampleRate | number | いいえ | サンプリングレート、範囲 [0,1]、デフォルト 1 |
| sessionOnErrorSampleRate | number | いいえ | エラー収集率、範囲 [0,1]、デフォルト 0、SDK 0.2.2 以降でサポート |
| enableNativeUserAction | boolean | いいえ | Native Action 追跡を有効にするかどうか。純粋な uni-app アプリケーションでは無効にすることを推奨。Android クラウドパッケージではサポート対象外 |
| enableNativeUserResource | boolean | いいえ | Native Resource の自動追跡を有効にするかどうか。Android クラウドパッケージではサポート対象外。uni-app は iOS 側でシステム API を介してネットワークリクエストを発行するため、有効にすると iOS リクエストが自動収集されます。この場合、iOS 側の手動 Resource 収集を無効にして、重複収集を避けてください。 |
| enableNativeUserView | boolean | いいえ | Native View の自動追跡を有効にするかどうか。純粋な uni-app アプリケーションでは無効にすることを推奨 |
| errorMonitorType | string/array | いいえ | エラー補足モニタリングタイプ:all、battery、memory、cpu |
| deviceMonitorType | string/array | いいえ | ページモニタリングタイプ:all、battery(Android のみ)、memory、cpu、fps |
| detectFrequency | string | いいえ | ページモニタリング頻度:normal、frequent、rare |
| globalContext | object | いいえ | カスタムグローバルパラメーター、特別なキー:track_id |
| enableResourceHostIP | boolean | いいえ | ターゲットドメイン IP を収集するかどうか。enableNativeUserResource = true のデフォルト収集にのみ影響します |
| enableTrackNativeCrash | boolean | いいえ | Android Java Crash および OC/C/C++ クラッシュ監視を有効にするかどうか |
| enableTrackNativeAppANR | boolean | いいえ | Native ANR 監視を有効にするかどうか |
| enableTrackNativeFreeze | boolean | いいえ | Native Freeze を収集するかどうか |
| nativeFreezeDurationMs | number | いいえ | Native Freeze しきい値、範囲 [100,)、単位はミリ秒 |
| rumDiscardStrategy | string | いいえ | 破棄ポリシー:discard、discardOldest |
| rumCacheLimitCount | number | いいえ | ローカルキャッシュの最大 RUM エントリ数制限、デフォルト 100000 |
| enableTraceWebView | boolean | いいえ | ネイティブ SDK を介した WebView データ収集を有効にするかどうか、デフォルト true、SDK 0.2.6 以降でサポート |
| allowWebViewHost | array | いいえ | データ追跡を許可する WebView host のリスト、null の場合はすべて収集 |
RUM ユーザーデータ追跡¶
Action¶
HarmonyOS でクリック、タップ、長押し、タブ切り替えの Action を自動収集する場合は、JS Action コレクターを明示的に起動する必要があります:
Android、iOS の Native Action 自動収集は enableNativeUserAction で制御します。
API - startAction¶
RUM Action を起動します。
RUM は、この Action の間に発生する可能性のある Resource、Error、LongTask イベントをバインドします。0.1s 以内に複数回呼び出さないでください。同じ View には同時に 1 つの Action のみが関連付けられ、前の Action が終了していない場合、新しい Action は破棄されます。addAction とは相互に影響しません。
| パラメーター名 | パラメーター型 | 必須 | パラメーター説明 |
|---|---|---|---|
| actionName | string | はい | イベント名 |
| actionType | string | はい | イベントタイプ |
| property | object | いいえ | イベントコンテキスト |
API - addAction¶
Action イベントを追加します。このデータは Error、Resource、LongTask に関連付けることができず、破棄ロジックはありません。
| パラメーター名 | パラメーター型 | 必須 | パラメーター説明 |
|---|---|---|---|
| actionName | string | はい | イベント名 |
| actionType | string | はい | イベントタイプ |
| property | object | いいえ | イベントコンテキスト |
View¶
自動収集¶
gcViewTracking の使用を推奨します。これは、ページの onLoad、onReady、onShow、onHide、onUnload および App のフォアグラウンド/バックグラウンドイベントを統一的にリッスンし、ネイティブ RUM View API を自動的に呼び出します。
プロジェクトの main.js でできるだけ早く 1 回呼び出してください。Vue 2 ではルート Vue インスタンスを作成する前に呼び出します。Vue 3 では createSSRApp が返す app を渡す必要があります:
Vue 2¶
import App from './App';
import { gcViewTracking } from '@/uni_modules/GC-JSPlugin';
import Vue from 'vue';
gcViewTracking.startTracking();
const app = new Vue({
...App
});
app.$mount();
Vue 3¶
import App from './App';
import { gcViewTracking } from '@/uni_modules/GC-JSPlugin';
import { createSSRApp } from 'vue';
export function createApp() {
const app = createSSRApp(App);
gcViewTracking.startTracking(app);
return { app };
}
収集ルール:
- ページが初めて表示されるとき、
loading_timeはonLoadからonReadyまでで計算され、単位はナノ秒です。 - コレクターの起動が遅すぎる、または完全なページライフサイクルを受信できなかった場合、信頼性をもって計算できないロード時間は
-1になります。ページが再表示されたとき、または App がフォアグラウンドに戻ったときは0になります。 - ページが非表示、アンロード、または App がバックグラウンドに入ると、現在の View は停止します。同じライフサイクル内での重複した
onShow、resumeは自動的に重複排除されます。 - ルーティングに失敗した場合、View は生成されません。同じルートの複数のページインスタンスは、それぞれ個別に状態を管理します。
互換収集方式¶
旧バージョンの mixin 方式は互換性のために残されています。新規プロジェクトでは gcViewTracking を優先的に使用し、2 つの自動収集方式を同時に有効にしないでください。重複した View が生成される可能性があります。
App.vue + 最初のページの組み合わせ設定は、SDK パッケージのサンプルプロジェクト Hbuilder_Example/App.vue および Hbuilder_Example/pages/index/index.vue を参照してください:
// step 1. GC-JSPlugin をプロジェクトの uni_modules に追加します
// step 2. App.vue に Router 監視を追加します
<script>
import { gcWatchRouter } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcWatchRouter],
}
</script>
// step 3. 最初の page ページに pageMixin を追加します
<script>
import { gcPageMixin } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcPageMixin],
}
</script>
指定したページのみを収集する場合は、SDK パッケージのサンプルプロジェクト Hbuilder_Example/pages/rum/index.vue を参照してください:
<script>
import { gcPageViewMixinOnly } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcPageViewMixinOnly],
}
</script>
手動収集¶
rum.onCreateView({
viewName: 'Current Page Name',
loadTime: 100000000
});
rum.startView({
viewName: 'Current Page Name'
});
rum.stopView();
API - onCreateView¶
ページロード時間のレコードを作成します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| viewName | string | はい | ページ名 |
| loadTime | number | はい | ページロード時間、単位はナノ秒 |
API - startView¶
ページに入ります。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| viewName | string | はい | ページ名 |
| property | object | いいえ | イベントコンテキスト |
API - stopView¶
ページを離れます。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| property | object | いいえ | イベントコンテキスト |
Error¶
自動収集¶
手動収集¶
API - addError¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| message | string | はい | エラーメッセージ |
| stack | string | はい | スタック情報 |
| state | string | いいえ | App の実行状態:unknown、startup、run |
| type | string | いいえ | エラータイプ、デフォルト uniapp_crash |
| property | object | いいえ | イベントコンテキスト |
Resource¶
自動収集¶
0.3.0 以降は gcResourceTracking の使用を推奨します。これは、Android、iOS、HarmonyOS の標準の uni.request をインターセプトし、リクエストの成功または失敗によって生成された RUM Resource を自動的に収集します。Trace がすでに初期化されている場合は、設定されたリンクタイプに基づいて Trace Header を生成し、リクエストヘッダーに追加します。enableLinkRUMData を有効にすると、RUM Resource と Trace を関連付けることができます。ビジネスコードで既に設定されている同名のリクエストヘッダーは上書きされません。
リクエストを発行する前に startTracking を 1 回呼び出し、その後は引き続き uni.request を直接使用してください:
uni.request({
url: requestUrl,
method: method,
header: header,
timeout: 30000,
success(res) {
console.log('success:' + JSON.stringify(res));
},
fail(err) {
console.log('fail:' + JSON.stringify(err));
},
complete() {
console.log('complete');
}
});
startTracking 設定:
| フィールド | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| enableIOS | boolean | いいえ | true |
iOS 側で JS インターセプターを介して uni.request を収集するかどうか。Android、HarmonyOS はこのパラメーターの影響を受けません。iOS で enableNativeUserResource がすでに有効になっている場合は false に設定し、ネイティブ URLSession の自動収集との重複を避けてください。 |
// iOS で rum.setConfig({ enableNativeUserResource: true }) によりネイティブ収集がすでに有効になっている場合:
gcResourceTracking.startTracking({
enableIOS: false
});
使用上の注意:
- App Android、App iOS、App HarmonyOS をサポートします。アプリケーションの起動段階で、最初の
uni.request呼び出しの前に実行する必要があります。 startTrackingは 1 回だけ呼び出す必要があります。繰り返し呼び出してもインターセプターが重複してインストールされることはありません。- Trace がすでに初期化されている場合、リクエストには自動的に Trace Header が追加されます。ビジネスコードで明示的に設定された同名のリクエストヘッダーが優先されます。
- 既存の
success、fail、completeコールバックは変更されません。 gcRequest.requestは 0.2.7 以降、非推奨の互換 API としてのみ保持されます。グローバルコレクターを有効にした後はuni.requestを置き換える必要はなく、2 つの収集方式を並行して使用しないでください。
gcRequest.request の旧設定は、まだ移行していないプロジェクトの参考としてのみ提供されます:
| 互換フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| filterPlatform | array | いいえ | enableNativeUserResource を有効にした場合、filterPlatform: ["ios"] を設定して iOS 側の旧版手動収集を無効にできます。 |
手動収集¶
startResource、stopResource、addResource を手動で呼び出して実装します。GCResourceTracking.js を参照してください。
API - startResource¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| key | string | はい | リクエストの一意識別子 |
| property | object | いいえ | イベントコンテキスト |
API - stopResource¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| key | string | はい | リクエストの一意識別子 |
| property | object | いいえ | イベントコンテキスト |
API - addResource¶
| パラメーター名 | パラメーター型 | 必須 | パラメーター説明 |
|---|---|---|---|
| key | string | はい | リクエストの一意識別子 |
| content | content object | はい | リクエスト関連データ |
| property | object | いいえ | イベントコンテキスト |
content object¶
| プロトタイプ | パラメーター型 | パラメーター説明 |
|---|---|---|
| url | string | リクエスト URL |
| httpMethod | string | HTTP メソッド |
| requestHeader | object | リクエストヘッダー |
| responseHeader | object | レスポンスヘッダー |
| responseBody | string | レスポンス結果 |
| resourceStatus | number | リクエスト結果ステータスコード |
| errorMessage | string | リクエスト失敗メッセージ |
| errorStack | string | リクエスト失敗スタック |
| fetchStartTime | number | リクエスト開始時間、単位はナノ秒 |
| requestStartTime | number | リクエスト送信開始時間、単位はナノ秒 |
| responseStartTime | number | レスポンス受信開始時間、単位はナノ秒 |
| responseEndTime | number | レスポンス受信完了時間、単位はナノ秒 |
| tcpStartTime | number | TCP 接続開始時間、単位はナノ秒 |
| tcpEndTime | number | TCP 接続終了時間、単位はナノ秒 |
| dnsStartTime | number | DNS 解決開始時間、単位はナノ秒 |
| dnsEndTime | number | DNS 解決終了時間、単位はナノ秒 |
| sslStartTime | number | SSL 接続開始時間、単位はナノ秒 |
| sslEndTime | number | SSL 接続終了時間、単位はナノ秒 |