はじめに
AppDynamics では Android / iOS アプリにおけるユーザ操作等を監視する MRUM(Mobile Real User Monitoring) SDK(Software Development Kit) が提供されています。 本投稿では,Android アプリケーションを監視する手順に関して説明いたします。
開発環境
- Android Studio 4.1.2
- Gradle 6.5
- AppDynamics MRUM Android SDK 20.12.1 (2020年12月版)
インスツルメント対象 Android サンプル・アプリケーションは Android Studio において,File – New – New Project から,Template をベースに,ターゲット OS を Android 11.0 としてサンプル・アプリケーションを作成します。
Android SDK インスツルメント手順
Android SDK インスツルメント手順の公式ドキュメントはこちらになります。
大まかな手順の流れは以下のとおりです。
- AppDynamics コントローラ上で Application Key を取得
- Android SDK インストール
- ADEUM(AppDynamics End User Monitoring) プラグイン有効化
- Manifest への権限追加
- ソースコード変更
- アプリケーションのリビルド
EUM App Key を取得
AppDynamics コントローラ上で,User Experience – Mobile Apps – Add App – Android から,EUM App Key を取得します。 App Key は SY-XXX-XXX のような形式の文字列になります( APAC SaaS コントローラの場合)。
Android SDK インストール
トップレベルの build.gradle に以下の設定を行います。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.appdynamics:appdynamics-gradle-plugin:20.12.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
ADEUM プラグイン有効化
Module レベルの build.gradle の先頭に,以下の設定を追加し,adeum(AppDynamics End User Monitoring) プラグインを追加します。
apply plugin: 'com.android.application'
apply plugin: 'adeum' // this line added for AppDynamics
Manifest への権限追加
AndroidManifest.xml に以下の user-permission を追加します。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
ソースコード変更
メイン・アクティビティのソースコード MainActivity.java に以下の import 文を追加します。
import com.appdynamics.eumagent.runtime.Instrumentation;
import com.appdynamics.eumagent.runtime.AgentConfiguration;
また,onCreate メソッドに以下の Instrumentation.start で始まる行以下のコードを追加します(APAC SaaS コントローラの場合)。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Start the AppDynamics Instrumentation
Instrumentation.start(AgentConfiguration.builder()
.withContext(getApplicationContext())
.withAppKey("SY-XXX-XXX")
.withCollectorURL("https://syd-col.eum-appdynamics.com")
.withScreenshotURL("https://syd-image.eum-appdynamics.com")
.build());
アプリケーションのリビルド
Android Studio 上でアプリケーションをリビルドします。
動作確認
エミュレータもしくは Android 端末実機上でアプリケーションを実行し,AppDynamics コントローラ上で User Experience – Mobile Apps – にアクセスします。
以下の図は Geo Dashboard の例です。このように,Android アプリケーションからの指標データを受信できていれば正常にインスツルメントが行えていることが確認できます。
ハードウェア情報(Mobile Device Metric)の取得
20.11 以降の AppDynamics コントローラでは,Android, iOS 端末の以下の情報を取得することが可能になっています。
- メモリ容量と使用率
- ストレージ容量と使用率
- バッテリ容量と使用率
この新機能により,デバイスのリソースの過剰な使用率に起因する性能問題(上記のリソース使用率が非常に高い等)の切り分けがより迅速に行える場合もあるかと考えます。
設定方法
監視対象のモバイルアプリケーションの Configuration > Mobile App Group Configuration > Settings において,Configure Mobile Device Metrics の各項目を設定します。
各リソースの使用率が “Mark usage as critical when over” で指定した値を上回っている場合は,Session 詳細表示において,以下のように Critical な使用率であると表示されます。
まとめ
AppDynamics Android SDK のインスツルメント手順について解説させて頂きました。
AppDynamics MRUM(Mobile Real User Monitoring) は,実際の各ユーザのアプリケーション体験詳細を定量的に評価するためのデータを取得,分析することが可能になり,モバイル・アプリケーションのユーザ体験を最大化,プロアクティブな不具合/障害対応をすることが可能になります。