RUM Android モニタリング

RUM Android モニタリング

Datadog Real User Monitoring (RUM) を使用すると、アプリケーションの個々のユーザーのリアルタイムパフォーマンスとユーザージャーニーを視覚化して分析できます。

セットアップ

  1. SDK を依存関係として宣言します。
  2. UI でアプリケーションの詳細を指定します。
  3. アプリケーションのコンテキストでライブラリを初期化します。
  4. RUM モニター、インターセプターを初期化してデータ送信を開始します。

SDK を依存関係として宣言

build.gradle ファイルで dd-sdk-androidGradle プラグインを依存関係として宣言します。

plugins {
    id("dd-sdk-android-gradle-plugin")
}
dependencies {
    implementation "com.datadoghq:dd-sdk-android:x.x.x" 
}
buildscript {
    dependencies {
        classpath("com.datadoghq:dd-sdk-android-gradle-plugin:x.x.x")
    }
}

UI でアプリケーションの詳細を指定

  1. UX Monitoring > RUM Applications > New Application を選択
  2. Datadog UI でアプリケーションタイプとして android を選択し、新しいアプリケーション名を入力して一意の Datadog アプリケーション ID とクライアントトークンを生成します。

image

データの安全性を確保するため、クライアントトークンを使用する必要があります。API キーがAndroid アプリケーション APK バイトコードのクライアント側で公開されてしまうため、Datadog API キーを使用して dd-sdk-android ライブラリを構成することはできません。クライアントトークンの設定に関する詳細は、クライアントトークンに関するドキュメントを参照してください。

アプリケーションのコンテキストでライブラリを初期化

class SampleApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        val configuration = Configuration.Builder(
            rumEnabled = true,
            crashReportsEnabled = true
        )
                        .trackInteractions()
                        .trackLongTasks(durationThreshold)
                        .useViewTrackingStrategy(strategy)
                        .build()
          val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
          Datadog.initialize(this, credentials, configuration, trackingConsent)

       }
   }
class SampleApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        val configuration = Configuration.Builder(
            rumEnabled = true,
            crashReportsEnabled = true
        )
                        .trackInteractions()
                        .trackLongTasks(durationThreshold)
                        .useViewTrackingStrategy(strategy)
                        .useEUEndpoints()
                        .build()
        val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
        Datadog.initialize(this, credentials, configuration, trackingConsent)

    }
}

すべてのビュー(アクティビティ、フラグメントなど)の自動追跡を有効化する ViewTrackingStrategy や、EU ユーザー用に GDPR 準拠を追加する trackingConsent、そしてライブラリを初期化するためのその他のコンフィギュレーションオプションの詳細について、ご確認ください。

初期化に必要な認証情報では、アプリケーションのバリアント名も必要となることにご注意ください。これは適切な ProGuard mapping.txt ファイルを有効化し、ビルド時の自動アップロードを行うために重要です。この操作により、難読化を解除されたスタックトレースを表示できるようになります。詳しくは、Android ソースマッピングファイルのアップロードガイドをご参照ください。

RUM モニターとインターセプターの初期化

RUM Monitor を構成して登録します。通常はアプリケーションの onCreate() メソッドで、一度だけ実行する必要があります。

    val monitor = RumMonitor.Builder()
            .build()
    GlobalRum.registerIfAbsent(monitor)

OkHttp リクエストをリソースとして追跡するには、提供されたインターセプターを追加します。

    val okHttpClient =  OkHttpClient.Builder()
        .addInterceptor(DatadogInterceptor())
        .build()

これにより、OkHttpClient によって処理された各リクエストが RUM でリソースとして記録され、関連するすべての情報 (URL、メソッド、ステータスコード、エラー) が自動的に入力されます。ビューがアクティブな時に開始したネットワークリクエストのみが追跡されます。アプリケーションがバックグラウンドの時にリクエストを追跡するには、手動でビューを作成します。

: また、複数のインターセプターを使用する場合、DatadogInterceptor を最初に呼び出す必要があります。

さらに、OkHttpClientEventListener を追加してリソースのタイミングを自動的に追跡(サードパーティプロバイダー、ネットワークリクエスト)できます。

その他の参考資料