カスタムイベントを作成する 🔗
カスタムイベントを作成することで、サイト上のカスタマージャーニーやユーザー行動に関する有意義なメトリクスを取得できます。カスタムイベントは、タグによるフィルタリングとカスタム属性を追加する機能をサポートしています。
カスタムイベントが組織に付加価値をもたらす方法 🔗
Splunk RUM は、ページロード、エラー、コアなウェブバイタルに関するメトリクスを自動的に収集します。時には、組織にとって重要な特定のワークフローを把握するためのカスタムロジックが必要になることもあります。
ユースケース 🔗
あなたはオンライン小売業者だとします。ビジネスにとって有意義なカスタムイベントは、コンバージョン率に関する行動を理解すること、そして、なぜユーザーがチェックアウトのワークフローを終了せずに離脱してしまうのかを理解することかもしれません。また、ユーザーがアプリケーションのどこで停滞しているかを理解したいかもしれません。カスタマージャーニーに失敗するきっかけとなるイベントを発見するために、カスタムイベントを作成することができます。もしかしたら、ユーザーはチェックアウトワークフローのエラーで止まっているかもしれませんし、プロモーションコードを入力できないかもしれません。カスタムイベントは、あなたにとって最も重要な質問によって駆動されるデータのユニークな視点を見る機会を提供します。
カスタムイベントを作成する 🔗
以下の例は、ブラウザ、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)
注釈
If you want a custom event to appear in the UI, you must set the attribute workflow.name
for it. Without the workflow.name
attribute, the span is still recorded but will only appear in the request waterfall view.
カスタムイベントの次のステップ 🔗
カスタムイベントに関連する例、ダッシュボード、メトリクスについては、以下を参照してください:
高度なインストルメンテーション 🔗
高度なインストルメンテーションの詳細については、次を参照してください: