Включение телеметрии для флагов функций

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

  • Включена ли функция или отключена должным образом?
  • Получают ли доступ к новой функции конкретные пользователи или группы?
  • Является ли функция причиной регрессии производительности или ошибок?
  • Что такое влияние функции на ключевые метрики, такие как взаимодействие или преобразование?

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

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

  • Включены ли флаги и отключены ли они должным образом?
  • Получают ли целевые пользователи доступ к определенной функции должным образом?
  • Как вариант влияет на взаимодействие с клиентами?

Эти типы вопросов можно ответить с помощью выбросов и анализа событий оценки флага признаков.

Предпосылки

Подключение к Application Insights

  1. Откройте хранилище конфигурации приложений на портале Azure.

  2. В разделе телеметрии выберите панель Application Insights (предварительная версия).

  3. Выберите подписку, группу ресурсов. Затем выберите существующий ресурс Application Insights, к которому вы хотите подключиться к хранилищу конфигурации приложений, или выберите "Создать" , чтобы создать новый ресурс Application Insights.

  4. Нажмите кнопку "Подключить ".

    Снимок экрана портала Azure, подключение Application Insights.

Включение телеметрии для флага функции

  1. Откройте хранилище конфигурации приложений на портале Azure и выберите колонку диспетчера компонентов в разделе "Операции ".

  2. Выберите флаг компонента с именем Приветствие. Если у вас его нет, следуйте инструкциям по его созданию. Затем щелкните правой кнопкой мыши флаг компонента и нажмите кнопку "Изменить".

    Снимок экрана портала Azure, редактирование флага функции.

  3. В новом представлении выберите вкладку "Телеметрия ".

  4. Установите флажок "Включить телеметрию" , а затем нажмите кнопку "Просмотр и обновление " в нижней части страницы.

    Снимок экрана: портал Azure, включение телеметрии.

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

Просмотр результатов телеметрии в конфигурации приложений Azure

  1. Перейдите к колонке Application Insights на портале конфигурации приложений. Вы увидите граф, отображающий все события из приложения. Этот граф предоставляет начальный обзор шаблонов действий.

    Снимок экрана: портал Azure, просмотр событий в колонке Application Insights ресурса

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

  3. Фильтрация по флагу компонента

    1. Щелкните раскрывающееся меню над графом событий
    2. В разделе "Флаги компонентов" с событиями выберите флаг функции
    3. Теперь граф будет отображать только события, связанные с оценками флага функции.

    Снимок экрана: портал Azure, выбор флага конкретной функции в колонке Application Insights ресурса

  4. Чтобы получить доступ к более подробной телеметрии, нажмите кнопку "Просмотреть сведения" , чтобы открыть вкладку телеметрии.

    Снимок экрана: портал Azure, перейдите на вкладку телеметрии из колонки

Замечание

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

Проверка назначений вариантов

На вкладке телеметрии можно просмотреть следующее:

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

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

Снимок экрана портала Azure: на вкладке

В этом примере мы видим, что число пользователей, назначенных варианту "None", почти в два раза превышает число пользователей, назначенных вариантам "Simple" и "Long", учитывая настроенное 50-25-25 распределение между "None", "Simple" и "Long" соответственно.

Подтвердите переопределения и поведение в зависимости от состояния флага

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

Снимок экрана: портал Azure, просмотр итоговых событий по причине назначения на вкладке телеметрии.

  1. Отключите флаг функции, перейдя в диспетчер функций и отключив опцию "Включить".

  2. В столбце телеметрии щелкните "Просмотреть события ", чтобы перейти на вкладку телеметрии в режиме только для чтения.

  3. Просмотр количества уникальных пользователей по варианту. Вы должны увидеть, что все назначения для Long и Simple становятся нулевыми. Для пользователей назначается только вариант None, который используется по умолчанию в нашем случае.

    Снимок экрана: портал Azure, просмотр уникального количества пользователей по варианту на вкладке телеметрии.

  4. Переключитесь на просмотр уникального количества пользователей по причине назначения. Подтвердите на графике, что выделения процентиля упали до нуля, и DefaultWhenDisabled является единственной причиной назначения пользователей вариантов.

    Другие возможные причины включают "DefaultWhenEnabled", "Group" или "User", если настроено.

    Снимок экрана: портал Azure, просмотр уникального количества пользователей по причине назначения на вкладке телеметрии.

Анализ телеметрии в Application Insights

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

Откройте ресурс Application Insights на портале Azure и выберите журналы в разделе Мониторинг. В окне запроса выполните следующий запрос, чтобы просмотреть события телеметрии:

// Step 1: Get distinct users and their Variant from FeatureEvaluation (Replace <store-endpoint> with your store's endpoint)
let evaluated_users =
    customEvents
    | where name == "FeatureEvaluation"
    | where tostring(customDimensions.FeatureFlagReference) == "https://<store-endpoint>/kv/.appconfig.featureflag/Greeting"
    | extend TargetingId = tostring(customDimensions.TargetingId),
            Variant = tostring(customDimensions.Variant)
    | summarize Variant = any(Variant) by TargetingId;

// Step 2: Get distinct users who emitted a "Like"
let liked_users =
    customEvents
    | where name == "Liked"
    | extend TargetingId = tostring(customDimensions.TargetingId)
    | summarize by TargetingId;

// Step 3: Join them to get only the evaluated users who also liked
let hearted_users =
    evaluated_users
    | join kind=inner (liked_users) on TargetingId
    | summarize HeartedUsers = dcount(TargetingId) by Variant;

// Step 4: Total evaluated users per variant
let total_users =
    evaluated_users
    | summarize TotalUsers = dcount(TargetingId) by Variant;

// Step 5: Combine results
let combined_data =
    total_users
    | join kind=leftouter (hearted_users) on Variant
    | extend HeartedUsers = coalesce(HeartedUsers, 0)
    | extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
    | project Variant, TotalUsers, HeartedUsers, PercentageHearted;

// Step 6: Add total row
let total_sum =
    combined_data
    | summarize Variant="All", TotalUsers = sum(TotalUsers), HeartedUsers = sum(HeartedUsers);

// Step 7: Output
combined_data
| union (total_sum)

Снимок экрана: портал Azure, анализ результатов в Application Insights.

При каждой загрузке страницы с цитатой регистрируется одно событие FeatureEvaluation и одно событие "Нравится" при каждом нажатии кнопки "Нравится". События FeatureEvaluation имеют настраиваемое свойство FeatureName с именем вычисляемого флага компонента. Оба события имеют настраиваемое свойство, называемое TargetingId с именем пользователя, которому понравилась цитата.

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