微软开源的Python库Lumos用于自动监控Web应用指标,用于自动检测和诊断“Web规模”应用中的度量回归。在一份技术论文中,公司研究人员声称Lumos已部署在Skype和Microsoft开发团队的数百万个会话中,使工程师能够检测数百个指标变化并拒绝数千个指标变化。异常检测器检测到的错误警报。Lumos优化了检测流程,将误报减少了90%以上在线服务的健康状况通常通过跟踪关键绩效指标(KPI)来监控。这些地区的退货需要跟进,因为它们可能表明存在重大问题,导致成本增加和潜在的用户流失。然而,追踪每个KPI回归的根本原因非常耗时,因为调查单个异常可能需要数天或数周时间。Lumos是一种新颖的方法,它包含现有的特定领域的异常检测器,但将误报率降低了90%以上。它通过提供最重要变量的优先列表来解释措施的变化,消除了确定变化是由于人口变化还是产品更新引起的过程。该库还有一个更广泛的目的,即通过比较控制和处理数据集,同时保持对时间序列组件的不可知性,来理解任何两个语料库之间的度量差异(包括偏差)。该论文的合著者表示,“(Lumos)为产品所有者提供了对其应用程序中人口变化的关键洞察,并且……它为服务所有者确定了改进其工程系统的机会。”工程师花更少的时间来诊断度量回归,而将更多的时间用于构建令人兴奋的功能。”比较数据集,为诊断度量回归提供假设Lumos利用A/B测试原理来比较成对数据集。每个数据集都是一个表格数据集,其中行对应于样本和列值包括感兴趣的指标,例如代表KPI的变量,描述人群(例如平台、设备类型、网络类型和国家/地区),以及为回归假设提供诊断指标。随附的配置文件指定了超参数(变量)运行工作流以及数据集中哪些列对应于指标、不变量和假设列的详细信息。Lumos首先验证数据集之间的指标回归是否具有统计显着性。然后执行总体偏差检查和总体偏差归一化以说明两个数据集之间的人口变化。如果在数据归一化后指标没有统计上显着的回归,则指标的回归可以用人口的变化来解释。但是,如果度量的增加在统计上是显着的,则根据它们对目标度量增加的贡献对特征进行排名。微软研究人员表示,Lumos是用于监控与微软电话、会议和公共交换电话网络服务(PSTN)的可靠性相关的数百个指标的主要工具。它运行在公司基于ApacheSpark的大数据分析服务AzureDatabricks上,根据优先级、复杂性和指标类型配置多个作业。而且这项工作是异步完成的,以至于每当检测到异常时,它都会触发Lumos工作流,如果图书馆确定异常是一个合理的问题,就会发出事件警报。开发时间减少65%到95%,Lumos不能保证抓住所有服务回归参与研究的成员表示:“Lumos已经减少了65%到95%的开发时间。我们有15个主要指标,每个指标都是基于关键维度监控,如平台、租户、会议类型(连接、拨号和创建呼叫),结果是我们为一个指标跟踪数千个时间序列。我们每天有数百万个呼叫腿,每个腿生成数百个遥测场,作为Lumos的输入。”微软研究人员还提醒说,Lumos不能保证捕捉到所有服务回归,并且在没有足够数据量的情况下无法提供意见。为了解决这个问题,他们计划专注于扩展对连续测量的支持,使用多变量特征进行特征排序,并引入特征聚类来解决特征排序中的多重共线性问题。
