Appアナリティクスを利用開始
プレビュー
This feature is in Private Preview.To try it, reach out to your Databricks contact.
3 つのステップで既存のアプリにアナリティクスを追加します:イベントの記録、バックエンドを介した転送、および Analytics での検証。特定のアナリティクスライブラリは必要ありません。
前提条件
- App アナリティクスのプレビューに登録され、アプリテレメトリーが有効になっているアプリ。
- 要件に記載されているアクセス許可。
ステップ 1: イベントを記録する
既存のインタラクションハンドラーからこのコードを呼び出します。レポートのエクスポートが成功すると、この例では report_exported が記録されます:
const logRecord = {
timeUnixNano: (BigInt(Date.now()) * 1000000n).toString(),
eventName: 'report_exported',
attributes: [
{ key: 'databricks.app.analytics.schema.version', value: { intValue: '1' } },
{ key: 'databricks.app.analytics.event.id', value: { stringValue: crypto.randomUUID() } },
{ key: 'databricks.app.analytics.event.type', value: { stringValue: 'action' } },
{ key: 'databricks.app.analytics.event.name', value: { stringValue: 'report_exported' } },
],
};
const response = await fetch('/_analytics', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify(logRecord),
});
if (!response.ok) throw new Error('Analytics export failed.');
/_analytics は、組み込みの Databricks Endpoint ではなく、アプリに追加するルートです。ステップ 2 には、そのバックエンドハンドラーのエクスポートロジックが表示されます。
session_id 省略可能です。指定する場合は、イベントごとに新しいセッションIDを生成するのではなく、元のアナリティクスセッションを再利用してください。イベントを再試行する場合は、IDとTimestampを含め、同じレコードを再送信してください。
ページビュー、Web Vitals、アクションプロパティについては、ペイロードの例を参照してください。
ステップ 2: バックエンドからエクスポートする
既存のバックエンドに POST /_analytics ハンドラーを追加します。解析および検証されたリクエストの本文を次の関数に渡します。ルートをアプリのアクセス制御の内側に維持し、既存のリクエスト制限とエラー処理を適用します。関数が成功した後にのみ、成功ステータスをブラウザーに返します。
この関数はレコードを OpenTelemetry Protocol(OTLP)リクエストでラップし、アプリのコレクターに送信します。
async function exportAnalyticsRecord(logRecord) {
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
if (endpoint !== 'http://localhost:4314') {
throw new Error('This example requires the TCP OTLP/HTTP receiver at localhost:4314.');
}
const response = await fetch(`${endpoint}/v1/logs`, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
resourceLogs: [
{
resource: {
attributes: [{ key: 'service.name', value: { stringValue: process.env.DATABRICKS_APP_NAME } }],
},
scopeLogs: [{ logRecords: [logRecord] }],
},
],
}),
});
if (!response.ok) throw new Error('Collector rejected the request.');
const text = await response.text();
const result = text ? JSON.parse(text) : {};
if (Number(result.partialSuccess?.rejectedLogRecords ?? 0) > 0) {
throw new Error('Collector rejected the event.');
}
}
この HTTP の例では、localhost:4314 にある TCP レシーバーを使用します。これは HTTP と gRPC の両方をサポートしています。For a unix:// or gRPC-only Endpoint, use a compatible OpenTelemetry エクスポーター instead.コレクターは訪問者のデバイス上ではなく、デプロイ済みのアプリ内で実行されます。アプリのテレメトリー環境変数を参照してください。
ステップ 3: アナリティクスで検証する
- アプリの既存のデプロイワークフローを使用して変更をデプロイし、インストルメント化されたインタラクションをTriggerします。
- アプリの詳細ページで アナリティクス を開き、SQLウェアハウスを選択します。
- オンボーディングが表示されている場合は、 イベントを確認 を選択し、イベントが届いたら アナリティクスを開く を選択します。
- Top actions または Live Events で
report_exportedを見つけます。
コレクターの承認は、テーブルの取り込みに先行します。イベントが表示されない場合は、アナリティクスを更新して時間範囲を確認してください。UI に表示される権限ガイダンスに従ってください。基盤となるテレメトリーデータを確認するには、テレメトリーデータの検証を参照してください。