Добавьте собственный мониторинг для конкретного кода приложения.


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

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

Метрикой по умолчанию для пользовательской трассировки кода является ее «продолжительность» (время между начальной и конечной точками трассировки), но вы также можете добавлять пользовательские метрики .

В своем коде вы определяете начало и конец пользовательской трассировки кода, используя API, предоставляемые Performance Monitoring SDK.Для приложений Android вы также можете отслеживать определенные методы с помощью аннотации @AddTrace .Пользовательские трассировки кода можно запускать в любое время после их создания, и они потокобезопасны.

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

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

Атрибуты по умолчанию, настраиваемые атрибуты и настраиваемые метрики

Для трассировок пользовательского кода Performance Monitoring автоматически регистрирует атрибуты по умолчанию (общие метаданные, такие как версия приложения, страна, устройство и т. д.), что позволяет фильтровать данные трассировки в консоли Firebase . Вы также можете добавлять и отслеживать пользовательские атрибуты (например, уровень игры или свойства пользователя).

Вы можете дополнительно настроить собственную трассировку кода для записи пользовательских метрик для событий, связанных с производительностью, которые происходят в области трассировки. Например, вы можете создать пользовательскую метрику для количества попаданий и промахов кэша или количества случаев, когда пользовательский интерфейс перестаёт отвечать на запросы в течение заметного периода времени.

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

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

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

Обратите внимание на следующее:

  • Приложение может иметь несколько пользовательских трассировок кода.
  • Одновременно может выполняться более одной трассировки пользовательского кода.
  • Имена для пользовательских трассировок кода должны соответствовать следующим требованиям: не должно быть начальных или конечных пробелов, не должно быть начальных символов подчеркивания ( _ ), а максимальная длина составляет 100 символов.
  • Пользовательские трассировки кода поддерживают добавление пользовательских метрик и пользовательских атрибутов .

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

Kotlin

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace

myTrace.stop()

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace

myTrace.stop();

(Необязательно) Мониторинг определенных методов с помощью @AddTrace

Приложения Android также поддерживают аннотацию @AddTrace для инструментирования трассировки пользовательского кода. С помощью этой функции трассировка начинается с начала указанного метода и останавливается по его завершении, включая всё, что вызывается этим методом.

Например, вы можете создать пользовательский код трассировки под названием onCreateTrace , который запускается при вызове метода onCreate() .

Kotlin

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
// the `enabled` argument is optional and defaults to true
@AddTrace(name = "onCreateTrace", enabled = true)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Добавляйте пользовательские метрики к пользовательским трассировкам кода

Используйте API трассировки Performance Monitoring для добавления пользовательских метрик к пользовательским трассировкам кода.

Обратите внимание на следующее:

  • Имена пользовательских метрик должны соответствовать следующим требованиям: не должны содержать начальных и конечных пробелов, не должны содержать начальных символов подчеркивания ( _ ) и должны иметь максимальную длину 100 символов.
  • Каждая трассировка пользовательского кода может записывать до 32 метрик (включая метрику длительности по умолчанию).

Чтобы добавить пользовательскую метрику, добавляйте строку кода, аналогичную следующей, каждый раз при возникновении события. Например, эта пользовательская метрика подсчитывает события, связанные с производительностью, которые происходят в вашем приложении, такие как попадания и промахи кэша (с использованием примеров имён событий item_cache_hit и item_cache_miss с шагом 1 ).

Kotlin

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace (and log custom metrics)
val item = cache.fetch("item")
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1)
} else {
    myTrace.incrementMetric("item_cache_miss", 1)
}

myTrace.stop()

Java

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace (and log custom metrics)
Item item = cache.fetch("item");
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1);
} else {
    myTrace.incrementMetric("item_cache_miss", 1);
}

myTrace.stop();

Создайте пользовательские атрибуты для пользовательских трассировок кода

Используйте API трассировки Performance Monitoring для добавления пользовательских атрибутов к пользовательским трассировкам кода.

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

Обратите внимание на следующее:

  • Имена пользовательских атрибутов должны соответствовать следующим требованиям:

    • Никаких начальных и конечных пробелов, никаких начальных символов подчеркивания ( _ )
    • Без пробелов
    • Максимальная длина — 32 символа.
    • Допустимые символы для имени: AZ , az и _ .
  • Каждая трассировка пользовательского кода может записывать до 5 пользовательских атрибутов.

  • Убедитесь, что пользовательские атрибуты не содержат никакой информации, позволяющей Google идентифицировать человека.

    Узнайте больше об этом руководстве

Kotlin

Firebase.performance.newTrace("test_trace").trace {
    // Update scenario.
    putAttribute("experiment", "A")

    // Reading scenario.
    val experimentValue = getAttribute("experiment")

    // Delete scenario.
    removeAttribute("experiment")

    // Read attributes.
    val traceAttributes = this.attributes
}

Java

Trace trace = FirebasePerformance.getInstance().newTrace("test_trace");

// Update scenario.
trace.putAttribute("experiment", "A");

// Reading scenario.
String experimentValue = trace.getAttribute("experiment");

// Delete scenario.
trace.removeAttribute("experiment");

// Read attributes.
Map<String, String> traceAttributes = trace.getAttributes();

Отслеживайте, просматривайте и фильтруйте данные о производительности

Отслеживайте конкретные показатели на панели управления

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

изображение доски показателей в <span class= Панель мониторинга производительности Firebase

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

  1. Перейдите на панель управления производительностью в консоли Firebase .
  2. Щелкните пустую карточку метрики, затем выберите существующую метрику для добавления на доску.
  3. Нажмите на заполненной карточке метрики, чтобы увидеть дополнительные параметры, например, чтобы заменить или удалить метрику.

На доске показателей отображаются собранные метрические данные с течением времени, как в графической форме, так и в виде числового процентного изменения.

Подробнее об использовании панели инструментов .

Просмотр следов и их данных

Чтобы просмотреть свои трассировки, перейдите на панель управления «Производительность» в консоли Firebase , прокрутите вниз до таблицы трассировок и выберите соответствующую вкладку. В таблице отображаются некоторые основные метрики для каждой трассировки, и вы даже можете отсортировать список по процентному изменению конкретной метрики.

Performance Monitoring предоставляет страницу устранения неполадок в консоли Firebase , где отображаются изменения метрик, что позволяет быстро устранять и минимизировать влияние проблем с производительностью на ваши приложения и пользователей. Вы можете использовать страницу устранения неполадок, когда узнаете о потенциальных проблемах с производительностью, например, в следующих ситуациях:

  • Вы выбираете соответствующие показатели на панели управления и замечаете большую разницу.
  • В таблице следов вы сортируете так, чтобы самые большие дельты отображались вверху, и видите значительное процентное изменение.
  • Вы получите уведомление по электронной почте о проблеме с производительностью.

Доступ к странице устранения неполадок можно получить следующими способами:

  • На панели показателей нажмите кнопку Просмотреть сведения о показателях .
  • На любой метрической карте выберите => Просмотреть подробности . На странице устранения неполадок отображается информация о выбранной вами метрике.
  • В таблице трасс щелкните имя трассы или любое значение метрики в строке, связанной с этой трассой.
  • В оповещении по электронной почте нажмите кнопку Расследовать сейчас .

Щелкнув по имени трассы в таблице трасс, вы сможете перейти к интересующим вас метрикам. Кнопка « фильтр» позволяет фильтровать данные по атрибуту, например:

изображение <span class= Данные мониторинга производительности Firebase фильтруются по атрибуту
  • Фильтруйте по версии приложения , чтобы просмотреть данные о предыдущей версии или вашей последней версии.
  • Фильтр по устройству , чтобы узнать, как старые устройства работают с вашим приложением
  • Фильтр по стране , чтобы убедиться, что местоположение вашей базы данных не влияет на определенный регион.

Узнайте больше о просмотре данных по вашим следам .

Следующие шаги

  • Узнайте больше об использовании атрибутов для изучения данных о производительности.

  • Узнайте больше о том, как отслеживать проблемы производительности в консоли Firebase .

  • Настройте оповещения об изменениях кода, которые снижают производительность вашего приложения. Например, вы можете настроить оповещение по электронной почте для своей команды, если продолжительность трассировки определённого пользовательского кода превысит заданное вами пороговое значение.

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