Performance Monitoring собирает трассировки , чтобы помочь вам отслеживать производительность вашего приложения. Трассировка — это отчет о данных производительности, собранных между двумя моментами времени в вашем приложении.
Трассировки сетевых запросов, автоматически собираемые с помощью Performance Monitoring включают большинство сетевых запросов для вашего приложения. Однако о некоторых запросах может не сообщаться, или вы можете использовать другую библиотеку для выполнения сетевых запросов. В этих случаях вы можете использовать API Performance Monitoring для ручного инструментирования трассировки пользовательских сетевых запросов . Пользовательские трассировки сетевых запросов поддерживаются только для приложений Apple и Android.
Метрики по умолчанию для пользовательской трассировки сетевых запросов такие же, как и для трассировок сетевых запросов, автоматически собираемых с помощью Performance Monitoring , а именно: время ответа, размер полезной нагрузки ответа и запроса, а также уровень успеха. Пользовательские трассировки сетевых запросов не поддерживают добавление пользовательских метрик.
В своем коде вы определяете начало и конец пользовательской трассировки сетевых запросов с помощью API, предоставляемых пакетом SDK Performance Monitoring .
Пользовательские трассировки сетевых запросов отображаются в консоли Firebase вместе с сетевыми запросами, которые Performance Monitoring фиксирует автоматически (на подвкладке «Сетевые запросы» таблицы трассировок).
Добавить пользовательские трассировки сетевых запросов
Используйте API Performance Monitoring HttpMetric, чтобы добавить пользовательские трассировки сетевых запросов для мониторинга определенных сетевых запросов.
Чтобы вручную инструментировать пользовательские сетевые запросы в Performance Monitoring , добавьте код, аналогичный следующему:
Kotlin
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-адреса превышает установленный вами порог.