微软开源 Python 库 Lumos,用于自动监控 web 应用程序指标

image.png

技术编辑:芒果果丨发自 思否编辑部
SegmentFault 思否报道丨公众号:SegmentFault

微软最近开源了 Lumos,这是一个 Python 库,用于自动检测和诊断“ web 规模”应用程序中的度量回归。

在一篇技术论文中,公司研究人员声称,Lumos 已经在 Skype 和微软的开发团队的数百万次会话中进行了部署,从而使工程师能够检测到数百项指标变化,并拒绝数千个由异常检测器检测出的错误警报。

Lumos 优化检测过程,将误报率降低90%以上

在线服务的运行状况通常是通过随时间跟踪关键性能指标(KPI)来监测的。这些方面的回归需要跟进,因为它们可能表明存在重大问题,从而导致成本增加和潜在的用户流失。但是,跟踪每个 KPI 回归的根本原因非常耗时,因为单个异常可能需要数天或数周的时间进行调查。

Lumos 是一种新颖的方法,它包含了现有的特定领域的异常检测器,但将误报率降低了90%以上。它通过提供最重要变量的优先列表来解释度量值的变化,从而消除了确定变化是由于人口变化还是产品更新的过程。

该库还具有更广泛的目的,即通过比较对照和治疗数据集,同时又与时间序列成分保持不可知关系,从而了解任意两个语料之间的度量差异(包括偏见)。

该论文的合著者表示:“ (Lumos)为产品所有者提供了有关其应用程序的人口统计变化的关键见解,并且……它为服务所有者确定了改善其工程系统的机会。(Lumos)使工程师花费在诊断度量回归上的时间更少,而将更多的时间用于构建令人兴奋的功能。”

对比数据集,提供诊断度量回归的假设

Lumos 利用 A / B 测试的原理来比较成对的数据集。 每个数据集都是表格数据集,其中行对应于样本,列值包括感兴趣的度量,如表示 KPI 的变量,描述总体(如平台、设备类型、网络类型和国家) ,并提供诊断度量回归的假设。 附带的配置文件指定了运行工作流的超参数(变量)和数据集中哪些列对应于度量、不变量和假设列的详细信息。

Lumos 首先验证数据集之间度量中的回归是否具有统计意义。 然后进行总体偏差检查和总体偏差归一化,以考虑两个数据集之间的总体变化。 如果在数据被归一化之后,度量中没有统计上显著的回归,度量中的回归可以用总体的变化来解释。 但是如果度量中的增量具有统计学意义,那么这些特征就会根据它们对目标度量中增量的贡献进行排名。

微软的研究人员说,Lumos 作为主要的工具,用于监测与微软的电话、会议和公共交换电话网服务(PSTN)的可靠性相关的数百项指标。 它运行在 Azure Databricks 上,该公司的基于 Apache spark 的大数据分析服务,根据优先级、复杂性和度量类型配置了多个工作。 并且作业异步完成,以至于每当检测到异常时,它都会触发 Lumos 工作流,如果库确定异常是合法问题,就会引发事件警报。

开发时间节省 65% 至 95%,Lumos 不能保证捕捉所有服务回归

参与研究的成员称:“ Lumos 将开发时间节省了 65% 至 95%。我们有 15 个主要指标,每个指标都根据关键维度进行监控,比如平台、租户、会议类型(连接、拨号和创建呼叫) ,结果是我们为一个指标跟踪了数千个时间序列。 我们每天有数百万个呼叫分支,每个分支都会产生数百个遥测字段,作为 Lumos 的输入。”

微软的研究人员也提出了警告,Lumos 并不能保证捕捉所有服务回归,并且如果没有足够的数据量就无法提供意见。为了解决这个问题,他们计划专注于扩展对连续度量的支持,使用多变量特征进行特征排序,并引入特征聚类以解决特征排名中的多重共线性问题。

segmentfault 思否

阅读 823

推荐阅读

第一时间为开发者提供行业相关的实时热点资讯

19262 人关注
1783 篇文章
专栏主页
目录