特定のネットワーク リクエスト用のカスタム モニタリングを追加する(Apple アプリと Android アプリ)


Performance Monitoring では、トレースを収集してアプリのパフォーマンスをモニタリングできます。トレースとは、アプリ内の 2 つの時点の間でキャプチャされたパフォーマンス データのレポートです。

Performance Monitoring によって自動的に収集されるネットワーク リクエスト トレースには、アプリのほとんどのネットワーク リクエストが含まれます。ただし、リクエストの一部が報告されない場合や、別のライブラリを使用してネットワーク リクエストを発行する場合もあります。このような場合には、Performance Monitoring API を使用してカスタム ネットワーク リクエスト トレースを手動で計測できます。カスタム ネットワーク リクエスト トレースは、Apple アプリと Android アプリでのみサポートされています。

カスタム ネットワーク リクエスト トレースのデフォルトの指標は、Performance Monitoring によって自動的に収集されるネットワーク リクエスト トレース(具体的には応答時間、レスポンスとリクエストのペイロード サイズ、成功率)の指標と同じです。カスタム ネットワーク リクエスト トレースでは、カスタム指標の追加がサポートされていません。

コードで、Performance Monitoring SDK に用意された API を使用して、カスタム ネットワーク リクエスト トレースの開始と終了を定義します。

カスタム ネットワーク リクエスト トレースは、Performance Monitoring によって自動的にキャプチャされるネットワーク リクエストとともに Firebase コンソール(のトレース テーブルの [ネットワーク リクエスト] サブタブ)に表示されます。

カスタム ネットワーク リクエスト トレースを追加する

Performance MonitoringHttpMetric API を使用して、カスタム ネットワーク リクエスト トレースを追加し、特定のネットワーク リクエストをモニタリングします。

Performance Monitoring でカスタム ネットワーク リクエストを手動で計測するには、次のようなコードを追加します。

Kotlin+KTX

val url = URL("https://www.google.com")
val metric = Firebase.performance.newHttpMetric(
    "https://www.google.com",
    FirebasePerformance.HttpMethod.GET,
)
metric.trace {
    val conn = url.openConnection() as HttpURLConnection
    conn.doOutput = true
    conn.setRequestProperty("Content-Type", "application/json")
    try {
        val outputStream = DataOutputStream(conn.outputStream)
        outputStream.write(data)
    } catch (ignored: IOException) {
    }

    // Set HttpMetric attributes
    setRequestPayloadSize(data.size.toLong())
    setHttpResponseCode(conn.responseCode)

    printStreamContent(conn.inputStream)

    conn.disconnect()
}

Java

HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

カスタム ネットワーク リクエスト トレースでは、カスタム属性の追加もサポートされていますが、カスタム指標はサポートされていません。

次のステップ

  • アプリのパフォーマンスを低下させるネットワーク リクエストに関するアラートを設定する。たとえば、特定の URL パターンの応答時間が設定したしきい値を超えた場合に、チームに送信するメール通知アラートを構成できます。