🤖

AndroidアプリをNewRelicで監視する方法

2024/02/22に公開

久々にAndroid Studioを起動してみたついでに、作成したアプリを New Relicで監視してみました。

New Relicのガイダンスに沿って構築しましたが、所々でエラーになってしまいビルドできなくなったので、注意点も併せて紹介します。

導入手順

今回はKotlinを選択した例を紹介します。

build.gradleへの追記

プロジェクトレベルのbuild.gradleファイルを開き、classpath("com.newrelic.agent.android:agent-gradle-plugin:{バージョン番号}")を追記します。

(project-level) build.gradle.kts
// 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関連の情報を追記します。

(module-level) build.gradle.kts
plugins {
  id("newrelic")
}

dependencies {
  implementation("com.newrelic.agent.android:android-agent:7.2.0")
}

AndroidManifest.xmlへの追記

AndroidManifest.xmlを開き、manifestタグの直下に以下の設定を追加し、インターネットへの接続を許可します。

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

もし、アプリケーションの起動時間も監視したい場合には、applicationタグ直下に以下の設定を追記します。

AndroidManifest.xml
<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ファイルを作成します。

newrelic.propertie
com.newrelic.application_token={ApplicationToken}

アプリケーショントークンについては、New ReliicのMobile画面から確認できます。

proguard-rules.proへの追記

リリースビルド時の難読化設定についても対応しておきます。
proguard-rules.proはappフォルダ直下にありますが、環境によってはファイル名が異なる場合があります。

proguard-rules.pro
-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions, Signature, InnerClasses, LineNumberTable

Default ActivityへのAgent起動コードの追加

MainActivity.kt
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端末と比べて豊富にあるので、より注意して監視しなければならなそうなので大変ですね・・・😅

コラボスタイル Developers

Discussion