Splunk RUM 用 Android RUM エージェントをインストールする 🔗
Splunk OpenTelemetry Instrumentation for Android の Android RUM エージェントを使用すると、Android アプリケーションを Splunk RUM 用にインストルメンテーションできます。
Android アプリケーションをインストルメンテーションして Splunk RUM にデータを取り込むには、このページの手順に従ってください。
注釈
Splunk RUM for Android のインストルメンテーションに Splunk APM は必要ありません。
使用環境で実行するバージョンを決める 🔗
最新版は、Splunk RUM が新しいバージョンをリリースするたびに自動的に更新されます。プリプロダクション環境では、latest を使用して Splunk RUM の最新バージョンを試用します。本番環境では、事前に本番環境でテストした固定バージョンを使用し、毎月のサイクルで本番バージョンを更新します。
互換性と必要条件をチェック 🔗
Splunk RUM for Mobile は、Android API レベル21以上の Java および Kotlin アプリケーションをサポートしています。API レベル21~25では、コアライブラリの desugaring を有効にする必要があります。アプリケーションで desugaring を有効にする を参照してください。
アプリケーションで desugaring を有効にする 🔗
Android APIレベル21から25で動作するアプリケーションをインストルメンテーションするには、desugaring を有効にする必要があります。
アプリケーションでdesugaringを有効にするには、アプリ・モジュールのbuild.gradleファイルを開き、以下の例のように compileOptions
と dependencies
セクションを更新します:
android {
compileOptions {
//...
coreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8 // Java 8 and higher
targetCompatibility = JavaVersion.VERSION_1_8 // Java 8 and higher
//...
}
}
dependencies {
//...
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
//...
}
android {
compileOptions {
//...
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8 // Java 8 and higher
targetCompatibility JavaVersion.VERSION_1_8 // Java 8 and higher
//...
}
}
dependencies {
//...
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
//...
}
プロジェクトを保存して同期し、アプリケーションに desugaring を実装します。
注釈
Android Gradleプラグインのバージョンが4.0.0以上であることを確認してください。
依存関係としてAndroidエージェントをインストールする 🔗
エージェントをアクティブにするには、Androidアプリケーションにコードレベルの依存関係としてAndroid RUMエージェントをインストールする必要があります。
以下の手順に従って、Maven Central を使用して Android RUM エージェントをインストールしてください:
メインのbuild.gradleファイルのrepositoriesセクションにMaven Centralがあることを確認してください:
allprojects { repositories { google() //... mavenCentral() } }
アプリケーションのbuild.gradleファイルに、最新のAndroid RUMエージェントのリリースを依存関係として追加します:
dependencies { //... // Set the desired version of the RUM agent. // See available releases: https://github.com/signalfx/splunk-otel-android/releases implementation("com.splunk:splunk-otel-android:+") implementation("io.opentelemetry.android:instrumentation:+") //... }
dependencies { //... // Set the desired version of the RUM agent. // See available releases: https://github.com/signalfx/splunk-otel-android/releases implementation 'com.splunk:splunk-otel-android:+' implementation 'io.opentelemetry.android:instrumentation:+' //... }
Application.onCreate()
の初期化呼び出しに設定オブジェクトを渡して、Android RUM エージェントを設定・初期化します:import com.splunk.rum.SplunkRum import com.splunk.rum.StandardAttributes import io.opentelemetry.api.common.Attributes class MyApplication extends Application { private final String realm = "<realm>"; private final String rumAccessToken = "<your_RUM_access_token>"; @Override public void onCreate() { super.onCreate(); SplunkRum.builder() .setApplicationName("<name_of_app>") .setDeploymentEnvironment("<name_of_env>") // Environment .setRealm(realm) .setRumAccessToken(rumAccessToken) .setGlobalAttributes( Attributes.builder() // Add the application version. Alternatively, you // can pass BuildConfig.VERSION_NAME as the value. .put(StandardAttributes.APP_VERSION, "<version_of_app>") .build() ) // Turn off instrumentation of background processes .disableBackgroundTaskReporting(BuildConfig.<id_of_application>) // Activates debug logging if needed //.enableDebug() .build(this); } }
.realm()
に渡される値は Splunk Observability Cloud のレルムで、たとえばus0
です。アカウントのレルム名を調べるには、以下の手順に従ってください:Splunk Observability Cloud のナビゲーションメニューを開きます。
を選択します。
ユーザー名を選択します。
レルム名は Organizations セクションに表示されます。
RUM アクセストークンを生成するには、Generate your RUM access token in Splunk Observability Cloud を参照してください。
HTTPクライアントをインストルメント化します。例えば、以下のスニペットはOkHttpをインストルメンテーションします:
private fun buildOkHttpClient(splunkRum: SplunkRum): Call.Factory { return splunkRum.createRumOkHttpCallFactory(OkHttpClient()) }
詳しくは HTTPインストルメンテーション設定 を参照してください。
Androidアプリケーションへの変更をリリースします。
アプリケーションでユーザーのアクティビティを生成します。アプリケーションを操作した後、データが RUM ダッシュボードに表示されていることを確認します。
注釈
Android RUMエージェントが初期化されたかどうかは、コードの任意の場所で
SplunkRum.isInitialized()
メソッドを呼び出すことで確認できます。
Android RUMを使用したサンプルアプリケーションについては、GitHub のサンプルアプリケーション を参照してください。
Android RUMライブラリをローカルでビルドする 🔗
Android RUMライブラリをローカルにダウンロードしてビルドするには、以下の手順に従ってください:
リポジトリをマシンにクローンします:
git clone https://github.com/signalfx/splunk-otel-android.git
ローカルでビルドし、ローカルの Maven リポジトリに公開します:
./gradlew publishToMavenLocal
build.gradleファイルのリポジトリに
mavenLocal()
を設定します:allprojects { repositories { google() //... mavenLocal() } }
ビルドしたライブラリをbuild.gradleファイルに依存関係として追加します:
dependencies { //... implementation ("com.splunk:splunk-otel-android:<version>") //... }
ブラウザ RUM エージェントを使用してAndroid WebViewをインストルメンテーションする 🔗
モバイルRUMインストルメンテーションとブラウザRUMインストルメンテーションを同時に使用するには、両方のインストルメンテーション間で splunk.rumSessionId
を共有し、RUMデータを1つのストリームにまとめて表示します。
以下のスニペットは、Android RUM を Splunk ブラウザ RUM と統合する方法を示しています:
import android.webkit.WebView
import com.splunk.rum.SplunkRum
//...
/*
Make sure that the WebView instance only loads pages under
your control and instrumented with Splunk Browser RUM. The
integrateWithBrowserRum() method can expose the splunk.rumSessionId
of your user to every site/page loaded in the WebView instance.
*/
override fun onViewCreated(view: View, @Nullable savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.webView.setWebViewClient(LocalContentWebViewClient(assetLoader))
binding.webView.loadUrl("https://subdomain.example.com/instrumented-page.html")
binding.webView.getSettings().setJavaScriptEnabled(true)
binding.webView.addJavascriptInterface(WebAppInterface(getContext()), "Android")
SplunkRum.getInstance().integrateWithBrowserRum(binding.webView)
}
RUM と Splunk APM をリンクする 🔗
Splunk RUM は、サーバータイミングを使用してアプリケーションのフロントエンドとバックエンド間の応答時間を計算し、フロントエンドとバックエンドのトレースを結合してエンドツーエンドを可視化します。
デフォルトでは、OpenTelemetry の Splunk ディストリビューションはすでに Server-Timing
ヘッダーを送信しています。このヘッダーはブラウザからのスパンとバックエンドのスパンおよびトレースをリンクします。
Server-Timing
ヘッダーを制御するための APM 環境変数は SPLUNK_TRACE_RESPONSE_HEADER_ENABLED=true
です。Splunk APM にリンクするには SPLUNK_TRACE_RESPONSE_HEADER_ENABLED=true
を設定します。
収集前に属性を変更する 🔗
個人を特定できる情報(PII)など、スパンの属性を削除または変更するには、スパンをフィルターする を参照してください。
貢献する方法 🔗
Splunk OpenTelemetry Instrumentation for Android はオープンソースソフトウェアです。GitHub でプルリクエストを作成することで、その改善に貢献することができます。詳細については、GitHub の 貢献ガイドライン を参照してください。
次のステップ 🔗
カスタム属性の追加、環境やアプリケーションに合わせたインストルメンテーション、サンプリングのカスタマイズなどについては、Splunk Android RUM インストルメンテーションを設定する を参照してください。
データが Splunk RUM for Mobile インスタンスにあることを確認するには、データが入力されていることを確認する を参照してください。
トラブルシューティングするには、Splunk Observability Cloud 用 Android インストルメンテーションのトラブルシューティング を参照してください。