- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Real User Monitoring (RUM) を使用すると、アプリケーションの個々のユーザーのリアルタイムパフォーマンスとユーザージャーニーを視覚化して分析できます。
Datadog Android SDK は、Android 4.4 (API レベル 19)+ と Android TV をサポートします。
アプリケーションモジュールの build.gradle
ファイルで dd-sdk-android と Gradle プラグインを依存関係として宣言します。
buildscript {
dependencies {
classpath("com.datadoghq:dd-sdk-android-gradle-plugin:x.x.x")
}
}
plugins {
id("com.datadoghq.dd-sdk-android-gradle-plugin")
//(...)
}
android {
//(...)
}
dependencies {
implementation "com.datadoghq:dd-sdk-android:x.x.x"
//(...)
}
アプリケーションタイプとして android
を選択し、新しいアプリケーション名を入力して一意の Datadog アプリケーション ID とクライアントトークンを生成します。
Web ビューをインスツルメントするには、Instrument your webviews トグルをクリックします。詳しくは、Web ビュー追跡を参照してください。
クライアント IP またはジオロケーションデータの自動ユーザーデータ収集を無効にするには、これらの設定のチェックボックスをオフにします。詳しくは、RUM Android データ収集をご覧ください。
データの安全性を確保するため、クライアントトークンを使用する必要があります。dd-sdk-android
ライブラリの構成に Datadog API キーのみを使用した場合、クライアント側で Android アプリケーションの APK バイトコード内で公開されます。
クライアントトークンのセットアップについて、詳しくはクライアントトークンに関するドキュメントを参照してください。
初期化スニペットでは、環境名、サービス名、バージョン番号を設定します。以下の例では、APP_VARIANT_NAME
がデータを生成するアプリケーションのバリアントを指定します。詳しくは、タグの使用を参照してください。
すべてのビュー(アクティビティ、フラグメントなど)の自動追跡を有効化する ViewTrackingStrategy
や、EU ユーザー用に GDPR 準拠を追加する trackingConsent
、そしてライブラリを初期化するためのその他のコンフィギュレーションオプションについて、ご確認ください。
class SampleApplication : Application() {
override fun onCreate() {
super.onCreate()
val configuration = Configuration.Builder(
logsEnabled = true,
tracesEnabled = true,
crashReportsEnabled = true,
rumEnabled = true
)
.useSite(DatadogSite.US1)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.build()
val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
Datadog.initialize(this, credentials, configuration, trackingConsent)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
final Configuration configuration =
new Configuration.Builder(true, true, true, true)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.useSite(DatadogSite.US1)
.build();
final Credentials credentials = new 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(
logsEnabled = true,
tracesEnabled = true,
crashReportsEnabled = true,
rumEnabled = true
)
.useSite(DatadogSite.EU1)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.build()
val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
Datadog.initialize(this, credentials, configuration, trackingConsent)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
final Configuration configuration =
new Configuration.Builder(true, true, true, true)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.useSite(DatadogSite.EU1)
.build();
Credentials credentials = new 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(
logsEnabled = true,
tracesEnabled = true,
crashReportsEnabled = true,
rumEnabled = true
)
.useSite(DatadogSite.US3)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.build()
val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
Datadog.initialize(this, credentials, configuration, trackingConsent)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
final Configuration configuration =
new Configuration.Builder(true, true, true, true)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.useSite(DatadogSite.US3)
.build();
Credentials credentials = new 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(
logsEnabled = true,
tracesEnabled = true,
crashReportsEnabled = true,
rumEnabled = true
)
.useSite(DatadogSite.US5)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.build()
val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
Datadog.initialize(this, credentials, configuration, trackingConsent)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
final Configuration configuration =
new Configuration.Builder(true, true, true, true)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.useSite(DatadogSite.US5)
.build();
Credentials credentials = new 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(
logsEnabled = true,
tracesEnabled = true,
crashReportsEnabled = true,
rumEnabled = true
)
.useSite(DatadogSite.US1_FED)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.build()
val credentials = Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>)
Datadog.initialize(this, credentials, configuration, trackingConsent)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
final Configuration configuration =
new Configuration.Builder(true, true, true, true)
.trackInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(strategy)
.useSite(DatadogSite.US1_FED)
.build();
Credentials credentials = new Credentials(<CLIENT_TOKEN>, <ENV_NAME>, <APP_VARIANT_NAME>, <APPLICATION_ID>);
Datadog.initialize(this, credentials, configuration, trackingConsent);
}
}
初期化認証情報はアプリケーションのバリアント名を必要とし、BuildConfig.FLAVOR
の値を使用します。バリアントがあれば、RUM はアプリケーションから報告されたエラーと Gradle プラグインによってアップロードされたマッピングファイルを照合することができます。バリアントがない場合、認証情報には空の文字列が使われます。
Gradle プラグインは、ビルド時に適切な ProGuard mapping.txt
ファイルを自動的にアップロードするので、難読化された RUM エラースタックトレースを見ることができます。詳しくは、Android エラーの追跡を参照してください。
RUM Monitor を構成して登録します。アプリケーションの onCreate()
メソッドで、一度だけ実行する必要があります。
val monitor = RumMonitor.Builder().build()
GlobalRum.registerIfAbsent(monitor)
final RumMonitor monitor = new RumMonitor.Builder().build();
GlobalRum.registerIfAbsent(monitor);
OkHttp リクエストをリソースとして追跡するには、提供されたインターセプターを追加します。
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(DatadogInterceptor())
.build()
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new DatadogInterceptor())
.build();
これにより、OkHttpClient
によって処理された各リクエストが RUM でリソースとして記録され、関連するすべての情報 (URL、メソッド、ステータスコード、エラー) が自動的に入力されます。ビューがアクティブな時に開始したネットワークリクエストのみが追跡されます。アプリケーションがバックグラウンドの時にリクエストを追跡するには、手動でビューを作成します。
注: 複数のインターセプターも使用する場合、DatadogInterceptor
を最初に呼び出します。
また、OkHttpClient
に EventListener
を追加して、サードパーティプロバイダー、ネットワークリクエストでリソースのタイミングを自動的に追跡することも可能です。
アプリケーションがバックグラウンドにあるとき (例えば、アクティブなビューがないとき)、クラッシュやネットワークリクエストなどのイベントを追跡することができます。
Datadog の構成で、初期化時に以下のスニペットを追加します。
.trackBackgroundRumEvents(true)
.trackBackgroundRumEvents(true)
バックグラウンドイベントを追跡すると、セッションが追加され、課金に影響を与える可能性があります。ご質問は、Datadog サポートまでお問い合わせください。
お役に立つドキュメント、リンクや記事: