SDK 初期化¶
このドキュメントは、HarmonyOS SDK の初期化とランタイム機能に関する内容を説明します。
基本設定¶
EntryAbility.ets で SDK を初期化します:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { FTSDK, FTSDKConfig, EnvType, SDKLogLevel, SyncPageSize} from '@guancecloud/ft_sdk/Index';
const DOMAIN = 0x0000;
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
this.initFTSDK();
}
private initFTSDK(): void {
try {
// ローカル環境デプロイ(DataKit)
// const sdkConfig = FTSDKConfig.builder(datakitUrl);
// パブリック DataWay
const sdkConfig = FTSDKConfig.builder(datawayUrl, clientToken)
.setDebug(true)
.setSdkLogLevel(SDKLogLevel.D)
.setServiceName('Your-App-Name')
.setEnv(EnvType.PROD) // または文字列を使用:.setEnv('prod')
.setAutoSync(true)
.setSyncPageSize(SyncPageSize.MEDIUM)
.setDataSyncRetryCount(5)
.setSyncSleepTime(0)
.setCompressIntakeRequests(true);
// DB キャッシュサイズ制限を有効にするには、.enableLimitWithDbSize() を呼び出します。dbSize を指定しない場合のデフォルトは 100MB
FTSDK.install(sdkConfig, this.context);
hilog.info(DOMAIN, 'FTSDK', 'FT SDK initialized successfully');
} catch (error) {
const errorObj: object = error as object;
hilog.error(DOMAIN, 'FTSDK', `Failed to initialize FT SDK: ${JSON.stringify(errorObj)}`);
}
}
}
| メソッド名 | 型 | 必須 | 意味 |
|---|---|---|---|
datakitUrl |
string |
はい | ローカル環境デプロイ(DataKit)のレポート URL アドレス。例:http://10.0.0.1:9529、ポートはデフォルト 9529、SDK をインストールしたデバイスからアクセス可能である必要があります。注意:datakitUrl と datawayUrl の設定はどちらか一方を選択してください |
datawayUrl |
string |
はい | パブリック DataWay のレポート URL アドレス。[RUM] アプリから取得します。例:https://open.dataway.url、SDK をインストールしたデバイスからアクセス可能である必要があります。注意:datakitUrl と datawayUrl の設定はどちらか一方を選択してください |
clientToken |
string |
はい | 認証トークン。datawayUrl と同時に設定する必要があります |
setDebug |
boolean |
いいえ | SDK 内部診断ログを有効にするかどうか。デフォルトは false |
setSdkLogLevel |
SDKLogLevel |
いいえ | SDK 内部ログの出力レベルを設定します。詳細はトラブルシューティングを参照 |
setEnableInnerLogFile |
enable: boolean, config?: FTInnerLogFileConfig |
いいえ | SDK 内部ログをローカルファイルに書き込むかどうか。デフォルトは false。詳細はトラブルシューティングを参照 |
setEnv |
string \| EnvType |
いいえ | 環境。デフォルトは prod。EnvType 列挙型または文字列を渡せます |
setServiceName |
string |
いいえ | 所属するビジネスまたはサービス名。デフォルトは df_rum_harmonyos |
setAutoSync |
boolean |
いいえ | データ収集後に自動的にサーバーへ同期するかどうか。デフォルトは true。false に設定した場合、FTSDK.flushSyncData() を使用してデータ同期を管理できます |
setSyncPageSize |
SyncPageSize |
いいえ | 同期リクエストのプリセットエントリ数を設定します:MINI は5件、MEDIUM は10件、LARGE は50件。デフォルトは SyncPageSize.MEDIUM |
setCustomSyncPageSize |
number |
いいえ | カスタム同期リクエストエントリ数。範囲は [5, 500]、小数は切り捨て、デフォルトは 10。setSyncPageSize とはどちらか一方を設定 |
setDataSyncRetryCount |
number |
いいえ | 単一データ同期の最大リトライ回数を設定します。範囲は [0, 5]、小数は切り捨て、デフォルトは 5 |
setSyncSleepTime |
number |
いいえ | 連続同期リクエスト間の待機時間を設定します。範囲は [0, 5000]、単位はミリ秒、デフォルトは 0 |
setCompressIntakeRequests |
boolean |
いいえ | アップロードデータに zlib ラップの deflate 圧縮を使用するかどうか。デフォルトは true。圧縮が利用できない場合は平文でアップロードされます |
setProxy |
FTProxyConfig \| null |
いいえ | SDK データアップロードリクエストに使用する HTTP プロキシを設定します。null を渡すとプロキシ設定をクリアします |
setProxyAuthenticator |
FTProxyAuthenticator \| null |
いいえ | アップロードプロキシの認証情報を設定します。null を渡すと個別認証設定をクリアします |
setDns |
FTDnsConfig \| null |
いいえ | SDK データアップロードリクエストに使用する DNS サーバーまたは DNS over HTTPS アドレスを設定します。null を渡すと DNS 設定をクリアします |
setDataModifier |
DataModifier \| null |
いいえ | 単一フィールドを変更またはマスキングします。null を返すと元の値を保持します。詳細はデータ収集マスキングを参照 |
setLineDataModifier |
LineDataModifier \| null |
いいえ | 単一データの既存フィールドを一括で変更またはマスキングします。詳細はデータ収集マスキングを参照 |
setEnableDataFilter |
boolean |
いいえ | DataKit 互換のローカルおよびリモートブラックリストフィルタリング機能を有効にするかどうか。デフォルトは true。Logging および RUM データのフィルタリングをサポートします。詳細はブラックリストフィルタリングを参照 |
setDataFilters |
FTDataFilters \| null |
いいえ | ローカルブラックリストフィルタリングルールを設定します。logging、rum の2種類のルールをサポートします。null を渡すとローカルルールをクリアします。詳細はブラックリストフィルタリングを参照 |
setEnableAccessDeviceID |
boolean |
いいえ | システムデバイス識別子を device_uuid として使用するかどうか。デフォルトは false。無効時は SDK が永続化するプライベート UUID を使用します |
setRemoteConfiguration |
boolean |
いいえ | データ収集のリモート設定機能を有効にするかどうか。デフォルトは false。有効にすると、RUM 設定のインストール完了後、有効なレポートアドレスがある場合に設定を取得します |
setRemoteConfigMiniUpdateInterval |
number |
いいえ | データ更新の最小間隔を設定します。単位は秒、デフォルトは 12 時間 |
setRemoteConfigurationCallBack |
FTRemoteConfigFetchResult \| null |
いいえ | リモート設定結果のコールバック。コード例を参照 |
enableLimitWithDbSize |
number |
いいえ | DB キャッシュサイズ制限を有効化。デフォルト 100MB、単位はバイト。dbSize を指定する場合の範囲は [30MB,)。有効化後、FTLoggerConfig.setLogCacheLimitCount および FTRUMConfig.setRumCacheLimitCount は無効になります。 |
setDbCacheDiscard |
DBCacheDiscard |
いいえ | DB キャッシュがサイズ上限に達した後の破棄ポリシーを設定。デフォルトは DBCacheDiscard.DISCARD。DISCARD は追加データを破棄、DISCARD_OLDEST は最も古いキャッシュデータを削除します。 |
動的設定とランタイム時のレポートアドレス更新の使用方法については、 動的設定と動的アドレス更新を参照してください。
アップロードネットワーク設定¶
setProxy(...)、setProxyAuthenticator(...)、setDns(...) は、SDK が DataKit または DataWay にデータをアップロードするリクエストのみに作用し、アプリケーションのビジネスリクエストのネットワーク設定は変更しません。
import {
FTSDK,
FTSDKConfig,
FTProxyConfig,
FTProxyAuthenticator,
FTDnsConfig
} from '@guancecloud/ft_sdk/Index';
const proxyConfig: FTProxyConfig = {
host: 'proxy.example.com',
port: 8080,
exclusionList: ['localhost', '127.0.0.1']
};
const proxyAuthenticator: FTProxyAuthenticator = {
username: 'proxy-user',
password: 'proxy-password'
};
const dnsConfig: FTDnsConfig = {
servers: ['1.1.1.1', '8.8.8.8'],
overHttpsUrl: 'https://dns.example.com/dns-query'
};
const sdkConfig = FTSDKConfig.builder(datawayUrl, clientToken)
.setProxy(proxyConfig)
.setProxyAuthenticator(proxyAuthenticator)
.setDns(dnsConfig);
FTSDK.install(sdkConfig, this.context);
FTProxyConfig¶
| フィールド | 型 | 必須 | 意味 |
|---|---|---|---|
host |
string |
はい | プロキシサーバーのアドレス |
port |
number |
はい | プロキシサーバーのポート |
exclusionList |
Array<string> |
いいえ | プロキシを使用しないホストのリスト。NetworkKit のプロキシ除外ルールに従います |
username |
string |
いいえ | プロキシユーザー名。setProxyAuthenticator(...) で個別に設定することもできます |
password |
string |
いいえ | プロキシパスワード。setProxyAuthenticator(...) で個別に設定することもできます |
FTProxyAuthenticator¶
| フィールド | 型 | 必須 | 意味 |
|---|---|---|---|
username |
string |
はい | プロキシ認証ユーザー名 |
password |
string |
はい | プロキシ認証パスワード |
FTProxyConfig と FTProxyAuthenticator の両方で認証情報を設定した場合、FTProxyAuthenticator の設定が優先されます。
FTDnsConfig¶
| フィールド | 型 | 必須 | 意味 |
|---|---|---|---|
servers |
Array<string> |
いいえ | カスタム DNS サーバーアドレス。空文字列は無視され、最大で最初の3つの有効なアドレスが使用されます |
overHttpsUrl |
string |
いいえ | DNS over HTTPS サービスアドレス |
ブラックリストフィルタリング¶
ft-sdk 0.1.15 以降では、DataKit 互換のブラックリストフィルタリングをサポートしており、データをローカルキャッシュに書き込む前に Logging、RUM データをフィルタリングできます。この機能はデフォルトで有効になっており、setEnableDataFilter(false) で無効にできます。
ブラックリストルールは、ローカルルールとリモートルールの2種類があります:
- ローカルルールは
setDataFiltersで設定し、logging、rumの2種類のルールをサポートします。 - データフィルタリングが有効で、有効なレポートアドレスが存在する場合、SDK は
/v1/datakit/pull?filters=trueを介して DataKit または DataWay からリモートのlogging、rumルールを取得します。 - ローカルルールとリモートルールは同時に有効になり、どちらかのルールに一致したデータは破棄され、ローカルキャッシュに書き込まれたりアップロードされたりしません。
- ブラックリストフィルタリングは、
LineDataModifierの後、ローカルキャッシュ書き込みの前に実行されます。setLineDataModifierとブラックリストフィルタリングの両方が設定されている場合、フィルタリングルールは変更後のデータに基づいて判断されます。
ルール式は {} で記述し、in、not in、match、not match 演算子をサポートします。複数の条件は and / or で組み合わせることができます。フィールドのソースにはデータタグとフィールドが含まれ、source、measurement、class などのデータ型識別フィールドもサポートします。match は正規表現を使用します。
import {
FTSDK,
FTSDKConfig,
FTDataFilters
} from '@guancecloud/ft_sdk/Index';
const dataFilters: FTDataFilters = new Map<string, Array<string>>();
dataFilters.set('logging', [
"{ source in ['df_rum_harmonyos_log'] and message match ['.*password.*'] }"
]);
dataFilters.set('rum', [
"{ source in [resource] and resource_status in ['404', '503'] }"
]);
const sdkConfig = FTSDKConfig.builder(datawayUrl, clientToken)
.setEnableDataFilter(true)
.setDataFilters(dataFilters);
FTSDK.install(sdkConfig, this.context);
FTDataFilters には Map<string, Array<string>> または同じ構造のオブジェクトを渡せます。カテゴリ名は大文字小文字を区別しません。logging、rum 以外のカテゴリは無視されます。
// ローカルおよびリモートのブラックリストフィルタリングを無効化しますが、設定済みのローカルルールは保持します。
sdkConfig.setEnableDataFilter(false);
// 設定済みのローカルルールをクリアします。サーバー側のリモートルールには影響しません。
sdkConfig.setDataFilters(null);
リモートルールの取得間隔は、サーバーから返される pull_interval に従います。サーバーが有効な値を返さない場合、SDK は10秒をフォールバック間隔として使用します。pull_interval は秒数または単位付きの文字列(例:10、30s、2m、1h)をサポートします。ランタイム時に有効なレポートアドレスに切り替わると、SDK は古いアドレスのリモートルールをクリアし、新しいアドレスから即座に再取得します。ローカルルールは引き続き保持されます。
ユーザーバインドとアンバインド¶
使用方法¶
/**
* ユーザー情報をバインド(ユーザー ID のみ)
* @param id ユーザー ID
*/
static bindRumUserDataById(id: string): void
/**
* ユーザー情報をバインド(完全なユーザーデータ)
* @param userData ユーザーデータオブジェクト
*/
static bindRumUserData(userData: UserData): void
/**
* ユーザー情報をアンバインド
*/
static unbindRumUserData(): void
UserData¶
| メソッド名 | 意味 | 必須 | 注意 |
|---|---|---|---|
setId |
ユーザー ID を設定 | いいえ | |
setName |
ユーザー名を設定 | いいえ | |
setEmail |
メールアドレスを設定 | いいえ | |
setExts |
ユーザー拡張を設定 | いいえ | 追加ルールはカスタムタグとグローバルコンテキストを参照 |
コード例¶
import { FTSDK, UserData } from '@guancecloud/ft_sdk/Index';
// 方法1:ユーザー ID のみをバインド(クイックバインドに推奨)
FTSDK.bindRumUserDataById('user_001');
const userData = new UserData();
userData.setId('user_001');
userData.setName('test.user');
userData.setEmail('test@mail.com');
userData.setExts({
'user_type': 'vip'
});
FTSDK.bindRumUserData(userData);
FTSDK.unbindRumUserData();
ランタイム機能¶
自動同期データの設定¶
SDK 初期化後、FTSDK.setAutoSync(...) を使用して、キャッシュデータの自動同期を動的に有効または無効にできます。無効にすると、SDK は収集データをローカルキャッシュに書き込みますが、収集後に自動的にアップロードをトリガーしなくなります。FTSDK.flushSyncData() と組み合わせてデータ同期を管理できます。
import { FTSDK } from '@guancecloud/ft_sdk/Index';
// 自動同期を無効化
FTSDK.setAutoSync(false);
// 自動同期を有効化
FTSDK.setAutoSync(true);
FTSDKConfig.setAutoSync(...)は SDK 初期化時の同期状態を設定するために使用します。FTSDK.setAutoSync(...)は SDK 初期化後に同期状態を動的に変更するために使用します。
データの手動同期¶
自動同期が無効な場合、手動でデータ同期をトリガーできます:
自動同期が有効な場合、SDK は10秒の集約ウィンドウを使用し、短時間に連続して生成されたデータをまとめてアップロードします。flushSyncData() はこの集約ウィンドウを待ちません。まず現在処理中の RUM および Log ワーカーキューをローカル同期キャッシュにフラッシュし、その後すぐにアップロードタスクをスケジュールします。キューへのフラッシュが失敗した場合でも、アップロードのトリガーを試行し続けます。
SDK キャッシュデータのクリア¶
clearAllData() は、未送信のすべてのキャッシュデータを削除します。これには以下が含まれます:
- 同期データテーブル(
sync_data_flat)のすべてのデータ - RUM ビューデータテーブル(
rum_view)のすべてのデータ - RUM アクションデータテーブル(
rum_action)のすべてのデータ