Мониторинг производительности развертывания функций

1. Обзор

В этой лаборатории кода вы узнаете, как отслеживать производительность вашего приложения во время развертывания функции. Наш пример приложения будет иметь базовые функции и настроен на отображение другого фонового изображения на основе флага Firebase Remote Config. Мы рассмотрим инструментирование трассировок для мониторинга производительности приложения, внедрим изменения конфигурации в приложение, отслеживаем эффект и посмотрим, как мы можем улучшить производительность.

Что вы узнаете

  • Как добавить мониторинг производительности Firebase в свое мобильное приложение, чтобы получать готовые показатели (например, время запуска приложения, медленные или зависшие кадры)
  • Как добавить пользовательские трассировки, чтобы понять критические пути кода в пути пользователя
  • Как использовать панель мониторинга производительности, чтобы понимать ваши показатели и отслеживать важные изменения, такие как внедрение функции.
  • Как настроить оповещения о производительности для мониторинга ключевых показателей
  • Как внедрить изменение удаленной конфигурации Firebase

Предварительные условия

  • Android Studio 4.0 или выше
  • Эмулятор Android с уровнем API 16 или выше.
  • Java версии 8 или выше
  • Базовое понимание Firebase Remote Config.

2. Настройте образец проекта

Загрузите код

Выполните следующую команду, чтобы клонировать пример кода для этой лаборатории кода. На вашем компьютере будет создана папка с именем codelab-perf-rc-android :

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

Если на вашем компьютере нет Git, вы также можете загрузить код прямо с GitHub.

Импортируйте проект в папку firebase-perf-rc-android-start в Android Studio. Вероятно, вы увидите некоторые исключения во время выполнения или, возможно, предупреждение об отсутствующем файле google-services.json . Мы исправим это в следующем разделе.

В этой лаборатории кода вы будете использовать плагин Firebase Assistant , чтобы зарегистрировать свое приложение Android в проекте Firebase и добавить необходимые файлы конфигурации Firebase, плагины и зависимости в свой проект Android — и все это из Android Studio !

Подключите свое приложение к Firebase

  1. Перейдите в Android Studio / Справка > Проверить наличие обновлений, чтобы убедиться, что вы используете последние версии Android Studio и Firebase Assistant.
  2. Выберите «Инструменты» > «Firebase» , чтобы открыть панель «Ассистент» .

c0e42ef063d21eab.png

  1. Выберите «Мониторинг производительности» , чтобы добавить его в свое приложение, затем нажмите «Начать работу с мониторингом производительности» .
  2. Нажмите «Подключиться к Firebase» , чтобы подключить проект Android к Firebase (при этом в вашем браузере откроется консоль Firebase) .
  3. В консоли Firebase нажмите «Добавить проект» и введите имя проекта Firebase (если у вас уже есть проект Firebase, вместо этого вы можете выбрать существующий проект) . Нажмите « Продолжить» и примите условия, чтобы создать проект Firebase и новое приложение Firebase.

Затем вы должны увидеть диалоговое окно для подключения нового приложения Firebase к проекту Android Studio.

51a549ebde2fe57a.png

  1. Нажмите Подключиться .
  2. Откройте Android-студию. На панели «Ассистент» вы увидите подтверждение того, что ваше приложение подключено к Firebase.

40c24c4a56a45990.png

Добавьте мониторинг производительности в свое приложение

На панели «Ассистент» в Android Studio нажмите «Добавить мониторинг производительности в ваше приложение» .

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

3046f3e1f5fea06f.png

Наконец, вы должны увидеть сообщение об успехе на панели «Ассистент» в Android Studio о том, что все зависимости настроены правильно.

62e79fd18780e320.png

В качестве дополнительного шага включите ведение журнала отладки, следуя инструкциям в шаге «(Необязательно) Включить ведение журнала отладки». Эти же инструкции также доступны в общедоступной документации .

3. Запустите приложение

Теперь вы должны увидеть файл google-services.json в каталоге модуля (на уровне приложения) вашего приложения, и теперь ваше приложение должно скомпилироваться. В Android Studio нажмите «Выполнить» > «Запустить приложение», чтобы создать и запустить приложение на эмуляторе Android.

Когда приложение запущено, вы сначала должны увидеть такую ​​заставку:

ffbd413a6983b205.png

Затем через несколько секунд отобразится главная страница с изображением по умолчанию:

d946cab0df319e50.png

Что происходит под капотом?

Экран-заставка реализован в SplashScreenActivity и выполняет следующие действия:

  1. В onCreate() мы инициализируем настройки Firebase Remote Config и извлекаем значения конфигурации, которые вы установите на панели управления Remote Config позже в этой лаборатории кода.
  2. В executeTasksBasedOnRC() мы читаем значение конфигурации флага seasonal_image_url . Если URL-адрес указан в значении конфигурации, мы загружаем изображение синхронно.
  3. После завершения загрузки приложение переходит к MainActivity и вызывает finish() чтобы завершить SplashScreenActivity .

В MainActivity , если seasonal_image_url определен через Remote Config, эта функция будет включена, и загруженное изображение будет отображаться в качестве фона главной страницы. В противном случае будет отображено изображение по умолчанию (показанное выше).

4. Настройте удаленную конфигурацию

Теперь, когда ваше приложение запущено, вы можете настроить новый флаг функции.

  1. На левой панели консоли Firebase найдите раздел Engage и нажмите Remote Config .
  2. Нажмите кнопку «Создать конфигурацию» , чтобы открыть форму конфигурации и добавить seasonal_image_url в качестве ключа параметра.
  3. Нажмите «Добавить описание» и введите следующее описание: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. Нажмите Добавить новое -> Условное значение -> Создать новое условие .
  5. В качестве имени условия введите Seasonal image rollout .
  6. В разделе Applies if... выберите User in random percentile <= 0% . (Вы хотите оставить эту функцию отключенной до тех пор, пока не будете готовы к развертыванию на более позднем этапе.)
  7. Нажмите Создать условие . Вы будете использовать это условие позже, чтобы представить новую функцию своим пользователям.

7a07526eb9e81623.png

  1. Откройте форму «Создайте свой первый параметр» и найдите поле «Значение для сезонного изображения» . Введите URL-адрес, по которому будет загружено сезонное изображение: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Оставьте значение по умолчанию в виде пустой строки. Это означает, что будет показано изображение по умолчанию в базе кода, а не изображение, загруженное по URL-адресу.
  3. Нажмите Сохранить .

99e6cd2ebcdced.png

Вы можете видеть, что новая конфигурация создана как черновик.

  1. Нажмите «Опубликовать изменения» и подтвердите изменения вверху, чтобы обновить приложение.

39cd3e96d370c7ce.png

5. Добавьте мониторинг времени загрузки данных.

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

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

Чтобы отслеживать, как долго отображается экран-заставка, вы добавите трассировку пользовательского кода в SplashScreenActivity , который является Activity , реализующим экран-заставку.

  1. Инициализируйте, создайте и запустите трассировку пользовательского кода с именем splash_screen_trace :

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. Завершите трассировку в методе onDestroy() SplashScreenActivity :

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

Поскольку ваша новая функция загружает и обрабатывает изображение, вы добавите вторую трассировку пользовательского кода, которая будет отслеживать дополнительное время, которое ваша функция добавила в SplashScreenActivity .

  1. Инициализируйте, создайте и запустите трассировку пользовательского кода с именем splash_seasonal_image_processing :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. Завершите трассировку в методах onLoadFailed() и onResourceReady() RequestListener :

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

Теперь, когда вы добавили трассировки пользовательского кода для отслеживания продолжительности экрана-заставки ( splash_screen_trace) и времени обработки новой функции ( splash_seasonal_image_processing ), снова запустите приложение в Android Studio. Вы должны увидеть сообщение журнала, содержащее Logging trace metric: splash_screen_trace , за которой следует продолжительность трассировки. Вы не увидите сообщение журнала для splash_seasonal_image_processing поскольку вы еще не включили новую функцию.

6. Добавьте в трассировку пользовательский атрибут.

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

В своем приложении вы только что добавили две трассировки пользовательского кода для отслеживания продолжительности экрана-заставки и времени обработки новой функции. Фактором, который может повлиять на эту продолжительность, является то, является ли отображаемое изображение изображением по умолчанию или изображение необходимо загрузить по URL-адресу. И кто знает – возможно, в конечном итоге у вас могут быть разные URL-адреса, с которых вы загружаете изображение.

Итак, давайте добавим пользовательский атрибут, представляющий URL-адрес сезонного изображения, к этим трассировкам пользовательского кода. Таким образом, вы сможете позже фильтровать данные о продолжительности по этим значениям.

  1. Добавьте пользовательский атрибут ( seasonal_image_url_attribute ) для splash_screen_trace в начале метода executeTasksBasedOnRC :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. Добавьте тот же пользовательский атрибут для splash_seasonal_image_processing сразу после вызова startTrace("splash_seasonal_image_processing") :

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

Теперь, когда вы добавили пользовательский атрибут ( seasonal_image_url_attribute ) для обеих ваших пользовательских трассировок ( splash_screen_trace и splash_seasonal_image_processing ), снова запустите приложение в Android Studio. Вы должны увидеть сообщение журнала, содержащее Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. Вы еще не включили параметр SeasonImageUrl удаленной конфигурации, поэтому значение атрибута не unset .

SDK для мониторинга производительности соберет данные трассировки и отправит их в Firebase. Вы можете просмотреть данные на панели мониторинга «Производительность» консоли Firebase, которую мы подробно объясним на следующем этапе лаборатории кода.

7. Настройте панель мониторинга производительности.

Настройте свою панель мониторинга для мониторинга вашей функции

В консоли Firebase выберите проект, в котором есть ваше приложение Friendly Eats.

На левой панели найдите раздел «Выпуск и мониторинг» , затем нажмите «Производительность» .

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

f57e5450b70034c9.png

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

  1. Нажмите на одно из пустых полей «Выберите метрику» .
  2. В диалоговом окне выберите тип трассировки «Пользовательские трассировки» и имя трассировки splash_screen_trace .

1fb81f4dba3220e0.png

  1. Нажмите «Выбрать метрику» , и вы увидите продолжительность splash_screen_trace , добавленную на вашу панель мониторинга!

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

1d465c021e58da3b.png

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

8. Распространите свою функцию

Теперь, когда вы настроили мониторинг, вы готовы развернуть изменение удаленной конфигурации Firebase ( seasonal_image_url) , которое вы настроили ранее.

Чтобы внедрить изменение, вы вернетесь на страницу удаленной настройки в консоли Firebase, чтобы увеличить процентиль пользователя для вашего условия таргетинга. Обычно вы внедряете новые функции для небольшой части пользователей и расширяете их только тогда, когда уверены, что с ними нет проблем. Однако в этой кодовой лаборатории вы — единственные пользователи приложения, поэтому вы можете изменить процентиль на 100%.

  1. Нажмите на вкладку «Условия» вверху страницы.
  2. Щелкните условие Seasonal image rollout , которое вы добавили ранее.
  3. Измените процентиль на 100%.
  4. Нажмите Сохранить условие .
  5. Нажмите «Опубликовать изменения» и подтвердите изменения.

70f993502b27e7a0.png

Вернувшись в Android Studio, перезапустите приложение в эмуляторе, чтобы увидеть новую функцию. После заставки вы должны увидеть новый главный экран в пустом состоянии!

b0cc91b6e48fb842.png

9. Проверьте изменения производительности

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

  1. На главной вкладке «Панель мониторинга» прокрутите вниз до таблицы трассировок, затем щелкните вкладку «Пользовательские трассировки» . В этой таблице вы увидите добавленные ранее трассировки пользовательского кода, а также некоторые готовые трассировки .
  2. Теперь, когда вы включили новую функцию, найдите трассировку пользовательского кода splash_seasonal_image_processing , которая измеряла время, необходимое для загрузки и обработки изображения. Из значения Duration трассировки видно, что загрузка и обработка занимают значительное время.

439adc3ec71805b7.png

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

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

7fb64d2340410576.png

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

b1c275c30679062a.png

  1. На странице сведений в левом нижнем углу вы увидите список атрибутов, включая созданный вами ранее настраиваемый атрибут. Нажмите настраиваемый атрибут seasonal_image_url_attribute , чтобы просмотреть продолжительность заставки для каждого URL-адреса сезонного изображения справа:

8fa1a69019bb045e.png

  1. Значения длительности заставки, вероятно, будут немного отличаться от показанных на снимке экрана выше, но у вас должна быть более высокая продолжительность, когда изображение загружается по URL-адресу, а не при использовании изображения по умолчанию (обозначенного «не установлено»).

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

  1. Нажмите «Производительность» вверху страницы, чтобы вернуться на главную вкладку панели мониторинга : 640b696b79d90103.png
  2. В таблице трассировок внизу страницы перейдите на вкладку Сетевые запросы . В этой таблице вы увидите все сетевые запросы вашего приложения , объединенные в шаблоны URL-адресов , включая шаблон URL-адресов images.unsplash.com/** . Если вы сравните значение этого времени ответа с общим временем, необходимым для загрузки и обработки изображения (т. е. с длительностью трассировки splash_seasonal_image_processing ), вы увидите, что большая часть времени тратится на загрузку изображения.

6f92ce0f23494507.png

Результаты производительности

Используя мониторинг производительности Firebase, вы заметили следующее влияние на конечных пользователей с включенной новой функцией:

  1. Время, затрачиваемое на SplashScreenActivity увеличилось.
  2. Продолжительность обработки splash_seasonal_image_processing была очень большой.
  3. Задержка была вызвана временем ответа на загрузку изображения и соответствующим временем обработки, необходимым для изображения.

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

10. Откатить функцию

Увеличение времени ожидания ваших пользователей во время заставки нежелательно. Одним из ключевых преимуществ Remote Config является возможность приостановить и отменить развертывание без необходимости выпуска для пользователей еще одной версии. Это позволяет вам быстро реагировать на проблемы (например, проблемы с производительностью, обнаруженные на последнем этапе) и минимизировать количество недовольных пользователей.

В качестве быстрого решения вы сбросите процентиль развертывания обратно на 0 , чтобы все ваши пользователи снова увидели изображение по умолчанию:

  1. Вернитесь на страницу Remote Config в консоли Firebase.
  2. Нажмите «Условия» вверху страницы.
  3. Нажмите на условие Seasonal image rollout которое вы добавили ранее.
  4. Измените процентиль на 0%.
  5. Нажмите Сохранить условие .
  6. Нажмите «Опубликовать изменения» и подтвердите изменения.

18c4f1cbac955a04.png

Перезапустите приложение в Android Studio, и вы должны увидеть исходный пустой главный экран:

d946cab0df319e50.png

11. Исправьте проблемы с производительностью.

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

Снова разверните значение Remote Config.

  1. Вернитесь на страницу Remote Config в консоли Firebase.
  2. Нажмите значок «Изменить» для параметра seasonal_image_url .
  3. Обновите свиток «Значение для сезонного изображения» до https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 , затем нажмите «Сохранить» .

828dd1951a2ec4a4.png

  1. Нажмите на вкладку «Условия» вверху страницы.
  2. Нажмите «Сезонное изображение» , затем установите процентиль обратно на 100 %.
  3. Нажмите Сохранить условие .

1974fa3bb789f36c.png

  1. Нажмите кнопку «Опубликовать изменения» .

12. Проверьте исправление и настройте оповещения.

Запустите приложение локально

Установив новое значение конфигурации для использования другого URL-адреса изображения загрузки, снова запустите приложение. На этот раз вы должны заметить, что время, проведенное на заставке, стало короче, чем раньше.

b0cc91b6e48fb842.png

Просмотр эффективности изменений

Вернитесь на панель «Производительность» в консоли Firebase, чтобы увидеть, как выглядят показатели.

  1. На этот раз вы будете использовать таблицу трассировок для перехода на страницу сведений. Внизу в таблице трассировок на вкладке «Пользовательские трассировки» щелкните пользовательскую трассировку splash_seasonal_image_processing , чтобы снова увидеть более подробное представление ее показателя продолжительности.

2d7aaca03112c062.png

  1. Нажмите на пользовательский атрибут seasonal_image_url_attribute чтобы снова увидеть разбивку пользовательских атрибутов. Если вы наведете курсор на URL-адреса, вы увидите значение, соответствующее новому URL-адресу изображения уменьшенного размера: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640?w=640 в конце). Значение продолжительности, связанное с этим изображением, значительно короче, чем значение для предыдущего изображения, и более приемлемо для ваших пользователей!

10e30c037a4237a2.png

  1. Теперь, когда вы улучшили производительность экрана-заставки, вы можете настроить оповещения, которые будут уведомлять вас, когда трассировка превышает установленный вами порог. Откройте панель мониторинга «Производительность» , щелкните значок меню переполнения (три точки) для Splash_screen_trace и выберите «Настройки оповещений» .

4bd0a2a1faa14479.png

  1. Нажмите на переключатель, чтобы включить оповещение о продолжительности . Установите пороговое значение немного выше значения, которое вы видели, чтобы, если ваш Splash_screen_trace превысит пороговое значение, вы получите электронное письмо.
  1. Нажмите «Сохранить» , чтобы создать оповещение. Прокрутите вниз до таблицы трассировок , затем перейдите на вкладку Пользовательские трассировки , чтобы убедиться, что ваше оповещение включено!

2bb93639e2218d1.png

13. Поздравляем!

Поздравляем! Вы включили Firebase Performance Monitoring SDK и собрали трассировки для измерения производительности новой функции! Вы отслеживали ключевые показатели производительности при развертывании новой функции и быстро реагировали при обнаружении проблем с производительностью. Все это стало возможным благодаря возможности вносить изменения в конфигурацию с помощью Remote Config и отслеживать проблемы с производительностью в режиме реального времени.

Что мы рассмотрели

  • Добавление SDK Firebase Performance Monitoring в ваше приложение
  • Добавление пользовательской трассировки кода в ваш код для измерения определенной функции.
  • Настройка параметра Remote Config и условного значения для управления/развертывания новой функции.
  • Понимание того, как использовать панель мониторинга производительности для выявления проблем во время развертывания.
  • Настройка оповещений о производительности, которые будут уведомлять вас, когда производительность вашего приложения превышает установленный вами порог.

Узнать больше

,

1. Обзор

В этой лаборатории кода вы узнаете, как отслеживать производительность вашего приложения во время развертывания функции. Наш пример приложения будет иметь базовые функции и настроен на отображение другого фонового изображения на основе флага Firebase Remote Config. Мы рассмотрим инструментирование трассировок для мониторинга производительности приложения, внедрим изменения конфигурации в приложение, отслеживаем эффект и посмотрим, как мы можем улучшить производительность.

Что вы узнаете

  • Как добавить мониторинг производительности Firebase в свое мобильное приложение, чтобы получать готовые показатели (например, время запуска приложения, медленные или зависшие кадры)
  • Как добавить пользовательские трассировки, чтобы понять критические пути кода в пути пользователя
  • Как использовать панель мониторинга производительности, чтобы понимать ваши показатели и отслеживать важные изменения, такие как внедрение функции.
  • Как настроить оповещения о производительности для мониторинга ключевых показателей
  • Как внедрить изменение удаленной конфигурации Firebase

Предварительные условия

  • Android Studio 4.0 или выше
  • Эмулятор Android с уровнем API 16 или выше.
  • Java версии 8 или выше
  • Базовое понимание Firebase Remote Config.

2. Настройте образец проекта

Загрузите код

Выполните следующую команду, чтобы клонировать пример кода для этой лаборатории кода. На вашем компьютере будет создана папка с именем codelab-perf-rc-android :

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

Если на вашем компьютере нет Git, вы также можете загрузить код прямо с GitHub.

Импортируйте проект в папку firebase-perf-rc-android-start в Android Studio. Вероятно, вы увидите некоторые исключения во время выполнения или, возможно, предупреждение об отсутствующем файле google-services.json . Мы исправим это в следующем разделе.

В этой лаборатории кода вы будете использовать плагин Firebase Assistant , чтобы зарегистрировать свое приложение Android в проекте Firebase и добавить необходимые файлы конфигурации Firebase, плагины и зависимости в свой проект Android — и все это из Android Studio !

Подключите свое приложение к Firebase

  1. Перейдите в Android Studio / Справка > Проверить наличие обновлений, чтобы убедиться, что вы используете последние версии Android Studio и Firebase Assistant.
  2. Выберите «Инструменты» > «Firebase» , чтобы открыть панель «Ассистент» .

c0e42ef063d21eab.png

  1. Выберите «Мониторинг производительности» , чтобы добавить его в свое приложение, затем нажмите «Начать работу с мониторингом производительности» .
  2. Нажмите «Подключиться к Firebase» , чтобы подключить проект Android к Firebase (при этом в вашем браузере откроется консоль Firebase) .
  3. В консоли Firebase нажмите «Добавить проект» и введите имя проекта Firebase (если у вас уже есть проект Firebase, вместо этого вы можете выбрать существующий проект) . Нажмите « Продолжить» и примите условия, чтобы создать проект Firebase и новое приложение Firebase.

Затем вы должны увидеть диалоговое окно для подключения нового приложения Firebase к проекту Android Studio.

51a549ebde2fe57a.png

  1. Нажмите Подключиться .
  2. Откройте Android-студию. На панели «Ассистент» вы увидите подтверждение того, что ваше приложение подключено к Firebase.

40c24c4a56a45990.png

Добавьте мониторинг производительности в свое приложение

На панели «Ассистент» в Android Studio нажмите «Добавить мониторинг производительности в ваше приложение» .

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

3046f3e1f5fea06f.png

Наконец, вы должны увидеть сообщение об успехе на панели «Ассистент» в Android Studio о том, что все зависимости настроены правильно.

62e79fd18780e320.png

В качестве дополнительного шага включите ведение журнала отладки, следуя инструкциям в шаге «(Необязательно) Включить ведение журнала отладки». Эти же инструкции также доступны в общедоступной документации .

3. Запустите приложение

Теперь вы должны увидеть файл google-services.json в каталоге модуля (на уровне приложения) вашего приложения, и теперь ваше приложение должно скомпилироваться. В Android Studio нажмите «Выполнить» > «Запустить приложение», чтобы создать и запустить приложение на эмуляторе Android.

Когда приложение запущено, вы сначала должны увидеть такую ​​заставку:

ffbd413a6983b205.png

Затем через несколько секунд отобразится главная страница с изображением по умолчанию:

d946cab0df319e50.png

Что происходит под капотом?

Экран-заставка реализован в SplashScreenActivity и выполняет следующие действия:

  1. В onCreate() мы инициализируем настройки Firebase Remote Config и извлекаем значения конфигурации, которые вы установите на панели управления Remote Config позже в этой лаборатории кода.
  2. В executeTasksBasedOnRC() мы читаем значение конфигурации флага seasonal_image_url . Если URL-адрес указан в значении конфигурации, мы загружаем изображение синхронно.
  3. После завершения загрузки приложение переходит к MainActivity и вызывает finish() чтобы завершить SplashScreenActivity .

В MainActivity , если seasonal_image_url определен через Remote Config, эта функция будет включена, и загруженное изображение будет отображаться в качестве фона главной страницы. В противном случае будет отображено изображение по умолчанию (показанное выше).

4. Настройте удаленную конфигурацию

Теперь, когда ваше приложение запущено, вы можете настроить новый флаг функции.

  1. На левой панели консоли Firebase найдите раздел Engage и нажмите Remote Config .
  2. Нажмите кнопку «Создать конфигурацию» , чтобы открыть форму конфигурации и добавить seasonal_image_url в качестве ключа параметра.
  3. Нажмите «Добавить описание» и введите следующее описание: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. Нажмите Добавить новое -> Условное значение -> Создать новое условие .
  5. В качестве имени условия введите Seasonal image rollout .
  6. В разделе Applies if... выберите User in random percentile <= 0% . (Вы хотите оставить эту функцию отключенной до тех пор, пока не будете готовы к развертыванию на более позднем этапе.)
  7. Нажмите Создать условие . Вы будете использовать это условие позже, чтобы представить новую функцию своим пользователям.

7a07526eb9e81623.png

  1. Откройте форму «Создайте свой первый параметр» и найдите поле «Значение для сезонного изображения» . Введите URL-адрес, по которому будет загружено сезонное изображение: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Оставьте значение по умолчанию в виде пустой строки. Это означает, что будет отображаться изображение по умолчанию в базе кода, а не изображение, загруженное по URL-адресу.
  3. Нажмите Сохранить .

99e6cd2ebcdced.png

Вы можете видеть, что новая конфигурация создана как черновик.

  1. Нажмите «Опубликовать изменения» и подтвердите изменения вверху, чтобы обновить приложение.

39cd3e96d370c7ce.png

5. Добавьте мониторинг времени загрузки данных.

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

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

Чтобы отслеживать, как долго отображается экран-заставка, вы добавите трассировку пользовательского кода в SplashScreenActivity , который является Activity , реализующим экран-заставку.

  1. Инициализируйте, создайте и запустите трассировку пользовательского кода с именем splash_screen_trace :

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. Завершите трассировку в методе onDestroy() SplashScreenActivity :

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

Поскольку ваша новая функция загружает и обрабатывает изображение, вы добавите вторую трассировку пользовательского кода, которая будет отслеживать дополнительное время, которое ваша функция добавила в SplashScreenActivity .

  1. Инициализируйте, создайте и запустите трассировку пользовательского кода с именем splash_seasonal_image_processing :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. Завершите трассировку в методах onLoadFailed() и onResourceReady() RequestListener :

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

Теперь, когда вы добавили трассировки пользовательского кода для отслеживания продолжительности экрана-заставки ( splash_screen_trace) и времени обработки новой функции ( splash_seasonal_image_processing ), снова запустите приложение в Android Studio. Вы должны увидеть сообщение журнала, содержащее Logging trace metric: splash_screen_trace , за которой следует продолжительность трассировки. Вы не увидите сообщение журнала для splash_seasonal_image_processing , потому что вы еще не включили новую функцию.

6. Добавьте пользовательский атрибут в трассировку

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

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

Итак, давайте добавим пользовательский атрибут, представляющий сезонный URL -адрес изображения в эти пользовательские следы кода. Таким образом, вы можете отфильтровать данные продолжительности с помощью этих значений позже.

  1. Добавьте пользовательский атрибут ( seasonal_image_url_attribute ) для splash_screen_trace В начале метода executeTasksBasedOnRC :

Splashscreenactivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. Добавьте тот же пользовательский атрибут для splash_seasonal_image_processing сразу после startTrace("splash_seasonal_image_processing") Вызов:

Splashscreenactivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

Теперь, когда вы добавили пользовательский атрибут ( seasonal_image_url_attribute ) для обоих ваших пользовательских трассов ( splash_screen_trace и splash_seasonal_image_processing ), снова запустите приложение в Android Studio. Вы должны увидеть сообщение о журнале, которое содержит Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. Вы еще не включили удаленный параметр конфигурации SecoryAlimageUrl, поэтому значение атрибута не unset .

SDK мониторинга производительности будет собирать данные трассировки и отправить их на Firebase. Вы можете просмотреть данные на панели инструментов производительности консоли Firebase, которые мы подробно объясним на следующем этапе CodeLab.

7. Настройка панели мониторинга производительности

Настройте панель инструментов для мониторинга вашей функции

В консоли Firebase выберите проект, в котором есть ваше дружественное приложение Eats.

На левой панели найдите раздел «Выпуск и монитор» , затем нажмите производительность .

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

F57E5450B70034C9.png

Эта доска метрик - это место, где вы можете отслеживать ключевые метрики для вашего приложения. Представление по умолчанию включает в себя продолжительность трассировки времени начала приложения, но вы можете добавить метрики, о которых вы больше всего заботитесь. Поскольку вы отслеживаете новую функцию, которую вы добавили, вы можете адаптировать свою панель панели, чтобы отобразить продолжительность пользовательского кода splash_screen_trace .

  1. Нажмите на одно из пустых , выберите метрические поле.
  2. В диалоговом окне выберите тип трассировки пользовательских трассов и имя трассировки splash_screen_trace .

1FB81F4DBA3220E0.PNG

  1. Нажмите SELECT METRIC , и вы должны увидеть продолжительность splash_screen_trace добавленную на приборную панель!

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

1D465C021E58DA3B.PNG

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

8. Разверните свою функцию

Теперь, когда вы установили свой мониторинг, вы готовы развернуть удаленную конфигурацию Firebase ( seasonal_image_url) , которое вы настраиваете ранее.

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

  1. Нажмите на вкладку «Условия» в верхней части страницы.
  2. Нажмите на Seasonal image rollout , которое вы добавили ранее.
  3. Измените процентиль на 100%.
  4. Нажмите Сохранить условие .
  5. Нажмите «Публикуйте изменения» и подтвердите изменения.

70f993502b27e7a0.png

Вернувшись в Android Studio, перезапустите приложение в эмуляторе, чтобы увидеть новую функцию. После экрана Splash вы должны увидеть новый главный экран пустого состояния!

B0CC91B6E48FB842.png

9. Проверьте изменения производительности

Теперь давайте посмотрим на производительность загрузки экрана Splash, используя панель мониторинга производительности в консоли Firebase. На этом этапе CodeLab вы используете разные части панели инструментов для просмотра данных производительности.

  1. На главной вкладке приборной панели прокрутите вниз до таблицы Traces, затем нажмите на вкладку «Пользовательские трассы» . В этой таблице вы увидите дополнительные трассировки кода, которые вы добавили ранее, плюс некоторые из ящиков .
  2. Теперь, когда вы включили новую функцию, ищите пользовательский кодовый трассировку splash_seasonal_image_processing , который измерил время, которое потребовалось для загрузки и обработки изображения. Из значения продолжительности трассировки вы можете видеть, что эта загрузка и обработка занимают значительное количество времени.

439ADC3EC71805B7.PNG

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

Аналогично ранее, нажмите на одно из пустых выберите метрические поле. В диалоговом окне выберите пользовательские трассировки типа трассировки и имя трассировки splash_seasonal_image_processing . Наконец, нажмите «Выбрать метрику» , чтобы добавить эту метрику в доску метрик.

7FB64D2340410576.PNG

  1. Чтобы дополнительно подтвердить различия, вы можете поближе взглянуть на данные для splash_screen_trace . Нажмите на карту splash_screen_trace в плате метрик, затем нажмите « Просмотреть показатели метрики» .

B1C275C30679062A.PNG

  1. На странице «Подробности» вы увидите список атрибутов слева внизу, включая пользовательский атрибут, который вы создали ранее. Нажмите на пользовательский атрибут seasonal_image_url_attribute , чтобы просмотреть продолжительность экрана брызг для каждого сезонного URL -адреса справа:

8FA1A69019BB045E.PNG

  1. Ваши значения продолжительности экрана, вероятно, немного отличаются от показа на снимке экрана выше, но вы должны иметь более длительную продолжительность, когда изображение загружается с URL -адреса в зависимости от использования изображения по умолчанию (представлено «unset»).

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

  1. Нажмите на производительность в верхней части страницы, чтобы вернуться на вкладку Main Dashboard : 640b696b79d90103.png
  2. В таблице трассы в нижней части страницы нажмите на вкладку «Сеть запросов» . В этой таблице вы увидите все сетевые запросы из вашего приложения , агрегированного в шаблоны URL , включая images.unsplash.com/** URL -шаблон. Если вы сравниваете значение этого времени ответа с общим временем, которое необходимо для загрузки и обработки изображений (то есть продолжительность трассировки splash_seasonal_image_processing ), вы можете увидеть, что большое количество времени потрачено на загрузку изображения.

6F92CE0F23494507.PNG

Выводы производительности

Используя мониторинг производительности Firebase, вы увидели следующее влияние на конечных пользователей с включенной новой функцией:

  1. Время, потраченное на SplashScreenActivity увеличилось.
  2. Продолжительность для splash_seasonal_image_processing была очень большой.
  3. Задержка была вызвана временем ответа для загрузки изображения и соответствующим временем обработки, необходимым для изображения.

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

10. Отведите эту функцию

Увеличение времени ожидания ваших пользователей во время экрана Splash нежелательно. Одним из ключевых преимуществ удаленной конфигурации является возможность приостановить и отменить ваше развертывание без необходимости выпустить другую версию вашим пользователям. Это позволяет быстро реагировать на проблемы (например, проблемы с производительностью, которые вы обнаружили на последнем шаге) и минимизировать количество несчастных пользователей.

В качестве быстрого смягчения вы сбросите процентиль развертывания до 0 , чтобы все ваши пользователи снова увидели изображение по умолчанию:

  1. Вернитесь на страницу удаленной конфигурации в консоли Firebase.
  2. Нажмите на условия в верхней части страницы.
  3. Нажмите на Seasonal image rollout которое вы добавили ранее.
  4. Измените процентиль на 0%.
  5. Нажмите Сохранить условие .
  6. Нажмите «Публикуйте изменения» и подтвердите изменения.

18c4f1cbac955a04.png

Перезагрузите приложение в Android Studio, и вы должны увидеть оригинальный основной экран пустого состояния:

D946CAB0DF319E50.PNG

11. Исправьте проблемы с производительностью

Ранее вы обнаружили в CodeLab, что загрузка изображения для вашего экрана Splash вызывает замедление для вашего приложения. Посмотрите на загруженное изображение, вы видите, что используете исходное разрешение изображения, которое было более 2 МБ! Одним из быстрых решений для вашей проблемы производительности является снижение качества до более подходящего разрешения, чтобы изображение занимало меньше времени для загрузки.

Еще раз развернуть удаленное значение конфигурации

  1. Вернитесь на страницу удаленной конфигурации в консоли Firebase.
  2. Нажмите на значок «Редактировать параметр seasonal_image_url .
  3. Обновите значение для сезонного развертывания изображений на https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 , затем нажмите «Сохранить» .

828dd1951a2ec4a4.png

  1. Нажмите на вкладку «Условия» в верхней части страницы.
  2. Нажмите на сезонный развертывание изображения , затем установите процентиль на 100%.
  3. Нажмите Сохранить условие .

1974FA3BB789F36C.PNG

  1. Нажмите кнопку «Публикация изменений» .

12. Проверьте исправление и настройку оповещений

Запустите приложение локально

С новым набором значений конфигурации для использования другого URL -адреса загрузки, запустите приложение снова. На этот раз вы должны заметить, что время, проведенное на экране Splash, короче, чем раньше.

B0CC91B6E48FB842.png

Просмотреть производительность изменений

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

  1. На этот раз вы используете таблицу трассов, чтобы перейти на страницу деталей. В таблице Traces, на вкладке «Пользовательские трассы» , нажмите на пользовательский трассировку splash_seasonal_image_processing чтобы снова увидеть более подробное представление о своем метрике продолжительности.

2D7AACA03112C062.png

  1. Нажмите на пользовательский атрибут seasonal_image_url_attribute чтобы снова увидеть разбивку пользовательских атрибутов. Если вы наведите на URL-адреса, вы увидите значение, соответствующее новому URL для изображения уменьшенного размера: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640?w=640 в конце). Значение продолжительности, связанное с этим изображением, значительно короче значения для предыдущего изображения и более приемлемо для ваших пользователей!

10E30C037A4237A2.png

  1. Теперь, когда вы улучшили производительность вашего экрана Splash, вы можете настроить оповещения, чтобы уведомить вас, когда трассировка превышает порог, который вы устанавливаете. Откройте инструментальную панель Performance и щелкните значок Menu Overlow (Three Dot) для SPLASH_SCREEN_TRACE и нажмите «Настройки оповещения» .

4bd0a2a1faa14479.png

  1. Нажмите на переключатель, чтобы включить предупреждение о продолжительности . Установите пороговое значение немного выше значения, которое вы видели, чтобы, если ваш splash_screen_trace превышает порог, вы получите электронное письмо.
  1. Нажмите Сохранить , чтобы создать свое предупреждение. Прокрутите вниз до таблицы Traces , затем нажмите на вкладку «Пользовательские трассы» , чтобы увидеть, что ваше предупреждение включено!

2BB93639E2218D1.png

13. Поздравляю!

Поздравляем! Вы включили SDK мониторинга производительности Firebase и собранные следы, чтобы измерить производительность новой функции! Вы контролировали ключевые показатели производительности для развертывания новой функции и быстро отреагировали, когда была обнаружена проблема с производительностью. Все это было возможно с возможностью внести изменения конфигурации с помощью удаленной конфигурации и мониторинга для проблем с производительностью в режиме реального времени.

Что мы рассмотрели

  • Добавление мониторинга производительности Firebase SDK в ваше приложение
  • Добавление пользовательского трассировки кода в ваш код для измерения конкретной функции
  • Настройка удаленного параметра конфигурации и условного значения для управления/развертывания новой функции
  • Понимание того, как использовать мониторинг мониторинга производительности для выявления проблем во время развертывания
  • Настройка предупреждений о производительности, чтобы уведомить вас, когда производительность вашего приложения пересекает порог, который вы установили

Узнать больше