为功能标志启用遥测

遥测是收集、传输和分析有关应用程序及其功能使用方式的数据的自动化过程。 为功能标志启用遥测可以深入了解功能推出的行为和影响,帮助团队更快地迭代、增强用户体验、提前检测问题以及验证新功能的有效性。 借助遥测,团队可以回答关键问题,例如:

  • 是否按预期启用或禁用功能?
  • 是否有特定用户或组正在访问新功能?
  • 某个功能是否导致性能降低或产生错误?
  • 功能对参与或转换等关键指标有何影响?

利用遥测数据,组织可以做出明智的数据驱动决策,快速识别和解决问题,并优化功能交付,从而获得更好的业务和用户结果。

遥测是收集、传输和分析有关应用程序使用情况和性能的数据的过程。 它有助于监视功能标志行为并做出数据驱动决策。 部署功能标志更改时,分析其对应用程序的影响通常很重要。 例如,可能会出现以下几个问题:

  • 我的标志是否按预期启用/禁用?
  • 目标用户是否按预期获得对特定功能的访问权限?
  • 变体如何影响客户参与?

可以通过功能标志评估事件的发出和分析来回答这些类型的问题。

先决条件

连接到 Application Insights

  1. 在 Azure 门户中打开应用程序配置存储区。

  2. 在“遥测”部分中,选择“Application Insights (预览版)”边栏选项卡

  3. 选择订阅、资源组。 然后选择要连接到应用配置存储的现有 Application Insights 资源,或选择“ 新建 ”以创建新的 Application Insights 资源。

  4. 选择“ 连接 ”按钮。

    Azure 门户的屏幕截图,连接到 Application Insights。

为功能标志启用遥测

  1. 在 Azure 门户中打开应用程序配置存储区,然后选择“操作”部分下的“功能管理器”边栏选项卡

  2. 选择名为 Greeting 的功能标志。 如果没有,请按照 说明创建它。 然后,右键单击功能标志,然后选择“ 编辑”。

    Azure 门户的屏幕截图,其中编辑了功能标志。

  3. 在新视图中,选择“ 遥测 ”选项卡。

  4. 选中“ 启用遥测 ”框,然后选择页面底部的 “查看 + 更新 ”按钮。

    Azure 门户的屏幕截图,启用遥测。

  5. 继续按照以下说明操作,以在您的应用程序中使用您所用语言或平台的遥测功能。

在 Azure 应用配置中查看遥测结果

  1. 导航到应用配置门户中的 Application Insights 边栏选项卡。 应会看到一个图形,其中显示了来自应用程序的所有事件。 此图提供活动模式的初始概述。

    Azure 门户的屏幕截图,在应用程序配置资源的 Application Insights 边栏选项卡中查看事件。

  2. 使用时间范围选择器专注于特定时间段,以确定趋势或调查感兴趣的特定时间范围。

  3. 按功能标志进行筛选

    1. 单击事件图上方的下拉菜单
    2. 带有事件的功能标志 下,选择你的功能标志
    3. 该图现在仅显示与功能标志评估相关的事件

    Azure 门户的屏幕截图,在应用配置资源的 Application Insights 边栏选项卡中选择特定功能标志。

  4. 若要访问更详细的遥测数据,请单击“ 查看详细信息 ”以打开“遥测”选项卡。

    Azure 门户的屏幕截图,从“应用配置”资源的“应用见解”边栏选项卡导航到“遥测”选项卡。

注释

还可以通过转到 功能管理器 并单击遥测列中的 “查看事件 ”来访问此选项卡,以获取感兴趣的功能标志。 Azure 门户的屏幕截图,查看功能管理器中的事件。

验证变体分配

在“遥测”选项卡中,可以查看:

  • 事件总数:应用程序发出的评估事件总数
  • 唯一用户:目标用户数以及为其发出事件的不同用户数。

为了显示用户分布以及 Simple、Long 和 None 变体的评估次数,请按变体对指标进行分组。 通过此分组,可以查看配置的分配是否按预期方式工作,并且所有预期的变体都提供给用户。

Azure 门户的屏幕截图,在遥测选项卡中按变体查看唯一用户。

在此示例中,我们看到,分配“None”变体的用户数几乎是“Simple”和“Long”变体的两倍,给定配置的 50-25-25 百分位拆分分别为“None”、“Simple”和“Long”。

根据标志状态确认替代和行为

用户可能会因不同原因收到变体。 你希望确保变体分配不仅处于正确的比例,而且出于正确的原因。 可以按分配原因对指标进行分组。 在此示例中,我们看到唯一的分配原因仅仅是由于百分位分配。

Azure 门户的屏幕截图,在遥测选项卡中按分配原因查看事件总数。

  1. 要禁用功能标志,请转到功能管理器并切换功能标志中的“启用”开关。

  2. 在遥测列中,单击“ 查看事件 ”以在只读模式下转到“遥测”选项卡。

  3. 按变体查看唯一用户计数。 应会看到 Long 和 Simple 的所有工作分配都变为零。 只有 None 变量(在本例中为默认值)分配给用户。

    Azure 门户的屏幕截图,在遥测选项卡中按变体查看唯一用户计数。

  4. 切换到根据分配原因查看唯一用户数量。 从图中确认 Percentile 分配下降到零,DefaultWhenDisabled 是用户被分配变体的唯一原因。

    其他可能的原因包括“DefaultWhenEnabled”、“Group”或“User”(如果已配置)。

    Azure 门户的屏幕截图,在遥测选项卡中按分配原因查看唯一用户计数。

在 Application Insights 中分析遥测数据

确认功能标志的分配情况按预期工作后,可以更深入地了解遥测事件,查看不同变体在用户点赞情况下的表现如何。

在 Azure 门户中打开 Application Insights 资源,然后选择“监视”下的“日志”。 在查询窗口中,运行以下查询以查看遥测事件:

// 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”事件,每次点击点赞按钮时,您会看到一个“Liked”事件。 “FeatureEvaluation”事件具有一个名为FeatureName的自定义属性,这个属性表示已评估的功能标志的名称。 这两个事件都有一个自定义 TargetingId 属性,其中包含喜欢引号的用户的名称。

在此示例中,我们可以看到,即使获取长变体和简单变体的用户数大致相同,简单变体似乎以 22%的差距表现得更好。