遥测是收集、传输和分析有关应用程序及其功能使用方式的数据的自动化过程。 为功能标志启用遥测可以深入了解功能推出的行为和影响,帮助团队更快地迭代、增强用户体验、提前检测问题以及验证新功能的有效性。 借助遥测,团队可以回答关键问题,例如:
- 是否按预期启用或禁用功能?
- 是否有特定用户或组正在访问新功能?
- 某个功能是否导致性能降低或产生错误?
- 功能对参与或转换等关键指标有何影响?
利用遥测数据,组织可以做出明智的数据驱动决策,快速识别和解决问题,并优化功能交付,从而获得更好的业务和用户结果。
遥测是收集、传输和分析有关应用程序使用情况和性能的数据的过程。 它有助于监视功能标志行为并做出数据驱动决策。 部署功能标志更改时,分析其对应用程序的影响通常很重要。 例如,可能会出现以下几个问题:
- 我的标志是否按预期启用/禁用?
- 目标用户是否按预期获得对特定功能的访问权限?
- 变体如何影响客户参与?
可以通过功能标志评估事件的发出和分析来回答这些类型的问题。
先决条件
- 在使用变体功能标志中创建的功能标志。
连接到 Application Insights
在 Azure 门户中打开应用程序配置存储区。
在“遥测”部分中,选择“Application Insights (预览版)”边栏选项卡。
选择订阅、资源组。 然后选择要连接到应用配置存储的现有 Application Insights 资源,或选择“ 新建 ”以创建新的 Application Insights 资源。
选择“ 连接 ”按钮。
为功能标志启用遥测
在 Azure 门户中打开应用程序配置存储区,然后选择“操作”部分下的“功能管理器”边栏选项卡。
选择名为 Greeting 的功能标志。 如果没有,请按照 说明创建它。 然后,右键单击功能标志,然后选择“ 编辑”。
在新视图中,选择“ 遥测 ”选项卡。
选中“ 启用遥测 ”框,然后选择页面底部的 “查看 + 更新 ”按钮。
继续按照以下说明操作,以在您的应用程序中使用您所用语言或平台的遥测功能。
在 Azure 应用配置中查看遥测结果
导航到应用配置门户中的 Application Insights 边栏选项卡。 应会看到一个图形,其中显示了来自应用程序的所有事件。 此图提供活动模式的初始概述。
使用时间范围选择器专注于特定时间段,以确定趋势或调查感兴趣的特定时间范围。
按功能标志进行筛选
- 单击事件图上方的下拉菜单
- 在 带有事件的功能标志 下,选择你的功能标志
- 该图现在仅显示与功能标志评估相关的事件
若要访问更详细的遥测数据,请单击“ 查看详细信息 ”以打开“遥测”选项卡。
注释
还可以通过转到 功能管理器 并单击遥测列中的 “查看事件 ”来访问此选项卡,以获取感兴趣的功能标志。
验证变体分配
在“遥测”选项卡中,可以查看:
- 事件总数:应用程序发出的评估事件总数
- 唯一用户:目标用户数以及为其发出事件的不同用户数。
为了显示用户分布以及 Simple、Long 和 None 变体的评估次数,请按变体对指标进行分组。 通过此分组,可以查看配置的分配是否按预期方式工作,并且所有预期的变体都提供给用户。
在此示例中,我们看到,分配“None”变体的用户数几乎是“Simple”和“Long”变体的两倍,给定配置的 50-25-25 百分位拆分分别为“None”、“Simple”和“Long”。
根据标志状态确认替代和行为
用户可能会因不同原因收到变体。 你希望确保变体分配不仅处于正确的比例,而且出于正确的原因。 可以按分配原因对指标进行分组。 在此示例中,我们看到唯一的分配原因仅仅是由于百分位分配。
要禁用功能标志,请转到功能管理器并切换功能标志中的“启用”开关。
在遥测列中,单击“ 查看事件 ”以在只读模式下转到“遥测”选项卡。
按变体查看唯一用户计数。 应会看到 Long 和 Simple 的所有工作分配都变为零。 只有 None 变量(在本例中为默认值)分配给用户。
切换到根据分配原因查看唯一用户数量。 从图中确认 Percentile 分配下降到零,DefaultWhenDisabled 是用户被分配变体的唯一原因。
其他可能的原因包括“DefaultWhenEnabled”、“Group”或“User”(如果已配置)。
在 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)
每次加载引述页面时,您会看到一个“FeatureEvaluation”事件,每次点击点赞按钮时,您会看到一个“Liked”事件。 “FeatureEvaluation”事件具有一个名为FeatureName的自定义属性,这个属性表示已评估的功能标志的名称。 这两个事件都有一个自定义 TargetingId 属性,其中包含喜欢引号的用户的名称。
在此示例中,我们可以看到,即使获取长变体和简单变体的用户数大致相同,简单变体似乎以 22%的差距表现得更好。