カスタムイベントを作成する 🔗
カスタムイベントを作成することで、サイト上のカスタマージャーニーやユーザー行動に関する有意義なメトリクスを取得できます。カスタムイベントは、タグによるフィルタリングとカスタム属性を追加する機能をサポートしています。
カスタムイベントが組織に付加価値をもたらす方法 🔗
Splunk RUM は、ページロード、エラー、コアなウェブバイタルに関するメトリクスを自動的に収集します。時には、組織にとって重要な特定のワークフローを把握するためのカスタムロジックが必要になることもあります。
ユースケース 🔗
Suppose you are an online retailer. A meaningful custom event for your business might be understanding behavior around conversion rates and why users drop off and don’t finish a checkout workflow. You might also want to understand where users are stagnating in your application. You can create a custom event to discover which events precipitate an unsuccessful customer journey. Perhaps users are stopped by an error in your checkout workflow, or are unable to enter a promo code. Custom events provide the opportunity for you to see a unique perspective on your data driven by the questions that matter most to you.
カスタムイベントを作成する 🔗
以下の例は、ブラウザ、Android、iOSアプリケーション用のカスタムイベントの作成方法を示しています。
カスタムイベントを作成するには、まずトレーサーを宣言し、次にカスタムイベントを定義します。
トレーサーの宣言はCDNでもNPMでも可能です。トレーサーを宣言する必要は一度だけです。CDN と NPM の違いについては、Web アプリケーションを Splunk RUM にインストルメンテーションする を参照してください。
次の例は、NPM パッケージを使用してトレーサーを初期化し、カスタムイベントを作成する方法を示しています:
import {trace} from '@opentelemetry/api'
const tracer = trace.getTracer('appModuleLoader');
const span = tracer.startSpan('test.module.load', {
attributes: {
'workflow.name': 'test.module.load'
}
});
// time passes
span.end();
addRumEvent
および startWorkflow
API を使用して、Android アプリケーションで発生しているカスタムイベントやワークフローを報告できます。
次の例は、ユーザーがヘルプダイアログを閉じたときに報告する方法を示しています:
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = LayoutInflater.from(activity);
View alertView = inflater.inflate(R.layout.sample_mail_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setView(alertView)
.setNegativeButton(R.string.cancel, (dialog, id) ->
// Record a simple "zero duration" span with the provided name and attributes
SplunkRum.getInstance().addRumEvent("User Rejected Help", HELPER_ATTRIBUTES));
return builder.create();
}
次の例は、Splunk RUM によってメトリクスが記録されるワークフローを開始する方法を示しています。ワークフローを記録するには、OpenTelemetry スパンインスタンスを終了する必要があります:
binding.buttonWork.setOnClickListener(v -> {
Span hardWorker =
SplunkRum.getInstance().startWorkflow("Main thread working hard");
try {
Random random = new Random();
long startTime = System.currentTimeMillis();
while (true) {
random.nextDouble();
if (System.currentTimeMillis() - startTime > 20_000) {
break;
}
}
} finally {
hardWorker.end();
}
});
次の例では、OTel Swift API を使用して、時間を設定したい関数をレポートする方法を示します:
func calculateTax() {
let tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: "MyApp")
let span = tracer.spanBuilder(spanName: "calculateTax").startSpan()
span.setAttribute(key: "numClaims", value: claims.count)
span.setAttribute(key: "workflow.name", value: "<your_workflow>") // This allows the event to appear in the UI
//...
//...
span.end() // You can also use defer for this
}
この例では、持続時間のないイベントを記録する方法を示します:
let dictionary: NSDictionary = [
"attribute1": "hello",
"attribute2": "world!",
"attribute3": 3
]
SplunkRum.reportEvent(name: "testEvent", attributes: dictionary)
注釈
カスタムイベントをUIに表示させたい場合は、カスタムイベントの workflow.name
属性を設定する必要があります。 workflow.name
属性がない場合、スパンは記録されますが、リクエストウォーターフォールビューにしか表示されません。
カスタムイベントの次のステップ 🔗
カスタムイベントに関連する例、ダッシュボード、メトリクスについては、以下を参照してください:
高度なインストルメンテーション 🔗
高度なインストルメンテーションの詳細については、次を参照してください: