AndroidアプリをNewRelicで監視する方法
久々にAndroid Studioを起動してみたついでに、作成したアプリを New Relicで監視してみました。
New Relicのガイダンスに沿って構築しましたが、所々でエラーになってしまいビルドできなくなったので、注意点も併せて紹介します。
導入手順
今回はKotlinを選択した例を紹介します。
build.gradleへの追記
プロジェクトレベルのbuild.gradleファイルを開き、classpath("com.newrelic.agent.android:agent-gradle-plugin:{バージョン番号}")
を追記します。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
// The following section is needed only if pluginMangement is not used in settings.gradle
repositories {
mavenCentral()
}
dependencies {
classpath("com.newrelic.agent.android:agent-gradle-plugin:7.2.0")
}
}
plugins {
........
}
次にモジュールレベルのbuild.gradleファイルを開き、New Relic関連の情報を追記します。
plugins {
id("newrelic")
}
dependencies {
implementation("com.newrelic.agent.android:android-agent:7.2.0")
}
AndroidManifest.xmlへの追記
AndroidManifest.xmlを開き、manifestタグの直下に以下の設定を追加し、インターネットへの接続を許可します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
もし、アプリケーションの起動時間も監視したい場合には、applicationタグ直下に以下の設定を追記します。
<provider
android:name="com.newrelic.agent.android.rum.contentprovider.NewRelicAppContentProvider" android:authorities="com.newrelic.android.agent.nrprovider.${applicationId}"
android:initOrder="200"
android:exported="false"/>
newrelic.propertieファイルの作成
appフォルダ直下にnewrelic.propertie
ファイルを作成します。
com.newrelic.application_token={ApplicationToken}
アプリケーショントークンについては、New ReliicのMobile画面から確認できます。
proguard-rules.proへの追記
リリースビルド時の難読化設定についても対応しておきます。
proguard-rules.proはappフォルダ直下にありますが、環境によってはファイル名が異なる場合があります。
-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions, Signature, InnerClasses, LineNumberTable
Default ActivityへのAgent起動コードの追加
import com.newrelic.agent.android.NewRelic
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
...
NewRelic.withApplicationToken(
"{ApplicationToken}"
).start(this.applicationContext)
}
ビルドの実行
アプリケーションのビルドを行い、成功したらアプリケーションを実行します。
エミュレータ利用でも問題ありません。
AndroidアプリとNew Relicの連携状況の確認
New Relic側で連携設定確認を行い、成功を確認できればセットアップ完了です!
New Relicでの監視について
アプリの起動者数やHTTPエラー、アプリのクラッシュなどを監視することができます。
また、OSのバージョンやアプリのバージョンごとに集計が可能なため、
サポートでの活用に期待できます。
アプリケーションの起動時間の監視を有効にした場合については、以下のNRQLでデータを見ることができます。
監視時間についてコールドタイム、ホットタイムの2つを確認することができます。
コールドタイム
コールドタイムとは、アプリケーションをゼロから起動した時にかかる時間です。
ゼロからの起動については、ダウンロード後の初回起動や、デバイス再起動・アプリを強制終了した後の起動が該当します。
SELECT average(newrelic.timeslice.value ) AS 'AppLaunch/Cold' FROM Metric WHERE metricTimesliceName = 'AppLaunch/Cold' AND appName = '{New Relic側でのアプリ名}'
ホットタイム
アプリケーションのプロセスがバックグラウンドで実行されている状態で、フォアグランドに切り替わるまでの時間です。
SELECT average(newrelic.timeslice.value ) AS 'AppLaunch/Hot' FROM Metric WHERE metricTimesliceName = 'AppLaunch/Hot' AND appName = 'New Relic側でのアプリ名'
Andoridアプリについては、コールドタイムは5秒以下、ホットタイムは1.5秒以下であることが望ましらしいです。
まとめ
まだまだ設定可能な項目がありますが、今回の設定だけでも様々な情報を監視することができました。
Android端末の種類は、iOS端末と比べて豊富にあるので、より注意して監視しなければならなそうなので大変ですね・・・😅
Discussion