Catch up on highlights from Firebase at Google I/O 2023. Learn more

Добавить настраиваемый мониторинг для определенных сетевых запросов (приложения Apple и Android)

Мониторинг производительности собирает трассировки , чтобы помочь вам контролировать производительность вашего приложения. Трассировка — это отчет о производительности, полученный между двумя моментами времени в вашем приложении.

Трассировки сетевых запросов, автоматически собираемые службой мониторинга производительности, включают большинство сетевых запросов для вашего приложения. Однако о некоторых запросах может не сообщаться, или вы можете использовать другую библиотеку для выполнения сетевых запросов. В этих случаях вы можете использовать API мониторинга производительности для ручной обработки пользовательских трассировок сетевых запросов . Пользовательские трассировки сетевых запросов поддерживаются только для приложений Apple и Android.

Метрики по умолчанию для пользовательской трассировки сетевых запросов такие же, как и для трассировок сетевых запросов, автоматически собираемых службой мониторинга производительности, в частности, время отклика, размер полезной нагрузки ответа и запроса, а также показатель успеха. Пользовательские трассировки сетевых запросов не поддерживают добавление пользовательских метрик.

В коде вы определяете начало и конец трассировки пользовательского сетевого запроса с помощью API-интерфейсов, предоставляемых пакетом SDK для мониторинга производительности.

Пользовательские трассировки сетевых запросов отображаются в консоли Firebase вместе с сетевыми запросами, которые автоматически фиксируются мониторингом производительности (на подвкладке «Сетевые запросы» в таблице трассировок).

Добавить пользовательские трассировки сетевых запросов

Используйте HttpMetric API мониторинга производительности, чтобы добавить настраиваемые трассировки сетевых запросов для мониторинга определенных сетевых запросов.

Чтобы вручную настроить настраиваемые сетевые запросы в мониторинге производительности, добавьте код, подобный следующему:

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 превышает установленное вами пороговое значение.