コンテンツにスキップ

データ収集カスタムルール

View

自動 View 収集ルールには ft-sdk 0.1.17 以降が必要で、FTRUMConfig.setEnableTraceUserView(true) を有効にする必要があります。

setViewTrackingHandler(handler, type) を使用して、Router、Navigation、またはその両方の自動 View ハンドラーを設定します。type には FTViewTrackingType.ROUTER、NAVIGATION、ALL を指定でき、省略時はデフォルトで ALL になります。ハンドラーはソースタイプに対応する FTViewTrackingContext を受け取ります。Router の場合は routerPageInfo、Navigation の場合は navigationInfo を読み取れます。null を返すとこの自動 View はスキップされます。HandlerView を返すと、名前を変更したり属性を追加したりできます。

import {
  FTRUMConfig,
  FTViewTrackingContext,
  FTViewTrackingHandler,
  FTViewTrackingType,
  HandlerView
} from '@guancecloud/ft_sdk/Index';

const viewHandler: FTViewTrackingHandler = {
  resolveHandlerView: (context: FTViewTrackingContext): HandlerView | null => {
    // ログインページの自動 View を収集しない。
    if (context.viewName === 'LoginPage') {
      return null;
    }

    // Router の場合は ArkUI ルーティング情報を使用してフィルタリングや名前変更ができる。
    if (context.trackingType === FTViewTrackingType.ROUTER &&
      context.routerPageInfo.path.startsWith('pages/internal/')) {
      return new HandlerView('InternalPage', { page_scope: new String('internal') });
    }

    return new HandlerView(context.viewName);
  }
};

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserView(true)
  .setViewTrackingHandler(viewHandler, FTViewTrackingType.ALL);
注意

resolveHandlerView の引数は FTViewTrackingContext であり、単独の View 名の文字列ではありません。アップグレード後は trackingType に応じて routerPageInfo と navigationInfo を区別し、現在のソースに属さないフィールドにアクセスしないようにしてください。このハンドラーは自動 View にのみ影響し、FTRUMGlobalManager.startView(...) などの手動 View 収集には影響しません。

Action

自動 Action 収集ルールには ft-sdk 0.1.16 以降が必要で、FTRUMConfig.setEnableTraceUserAction(true) を有効にする必要があります。

setActionTrackingHandler(...) でハンドラーを設定します。null を返すと、SDK はこの Action を収集しません。undefined を返すと、SDK はデフォルトの自動収集フローに従って Action 名、属性、位置、View 関連情報を報告します。

import {
  ActionEventWrapper,
  FTActionTrackingHandler,
  FTRUMConfig
} from '@guancecloud/ft_sdk/Index';

const actionHandler: FTActionTrackingHandler = {
  resolveHandlerAction: (event: ActionEventWrapper): null | undefined => {
    const source = event.getSource();

    // 指定したコンポーネントがトリガーした Action を無視する。
    if (source?.getId() === 'ignore_action_view') {
      return null;
    }

    // その他の操作は SDK のデフォルトの自動収集ロジックを引き続き使用する。
    return undefined;
  }
};

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserAction(true)
  .setActionTrackingHandler(actionHandler);
注意

null を返した Action はスキップされます。undefined を返すと、SDK はデフォルトの自動収集を続行します。このハンドラーは自動 Click 収集にのみ影響し、FTRUMGlobalManager.addAction(...) や startAction(...) の手動呼び出しには影響しません。

ActionEventWrapper は以下の情報を提供します:

  • getSource():操作をトリガーした ArkUI FrameNode。コンポーネント ID、タイプ、カスタム属性でフィルタリングできます。
  • getSourceType():操作のソースタイプ。現在の HarmonyOS 自動収集では ActionSourceType.CLICK_VIEW が渡されます。
  • getExtra():追加情報。現在の自動 Click 収集では追加情報は渡されないため、null を返します。

Resource

自動 Resource フィルタリングには ft-sdk 0.1.17 以降が必要で、FTRUMConfig.setEnableTraceUserResource(true) を有効にする必要があります。setResourceUrlHandler(...) でハンドラーを設定すると、isInTakeUrl(url) が true を返した場合、その URL の自動 Resource 収集はスキップされ、false を返した場合は収集が続行されます。

import {
  FTInTakeUrlHandler,
  FTRUMConfig
} from '@guancecloud/ft_sdk/Index';

class ResourceUrlHandler extends FTInTakeUrlHandler {
  isInTakeUrl(url: string): boolean {
    return url.startsWith('https://telemetry.example.com/');
  }
}

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserResource(true)
  .setResourceUrlHandler(new ResourceUrlHandler());

このルールは、RCP、Axios、NetworkKit の自動 Resource 収集にのみ適用されます。Trace Header の注入はブロックされず、FTRUMGlobalManager を使用して手動で報告された Resource もフィルタリングされません。

フィードバック

このページは役に立ちましたか?