传统意义上,监控服务基于的是度量值(被称为KPI或关键绩效指标)与一组阈值的比对。理论上,由运维团队来决定预警和警报的阈值。但实际上,运维团队通常对这些值也没有什么概念。
举个例子,“正常响应时间”的定义通常会基于不同的时刻。午夜时服务器的负载是最小的,响应时间也应该最短。但白天的时候服务器的压力上来了,那么阈值也就应该做相应地增加了。
所以,Splunk ITSI的第一项改进就是可以基于时间来设定阈值。这样就更贴近于按照每小时的负载来进行警报了。然而,这假定了一个前提,那就是运维知道应该把阈值设置成什么值。这需要大量的研究,并需要定期更新以反映随时变化的用户负载。
自适应阈值
称为“自适应阈值”的机器学习技术能帮助我们解决这个问题。自适应阈值通过分析历史数据来决定正常情况下应该是什么值。在Splunk中,此类训练数据可以划分为最近7天、14天、30天或者60天。由于数据曲线有很大的偏差,所以Splunk支持标准差、分位数和阈值范围。自适应阈值每晚会自动重新计算,以避免表现缓慢改变而产生误报。
自动检测
自动检测寻找数据中特别显著的峰值。特别是那种转瞬即逝的峰值,正常阈值监控不应该去管它们。
峰值检测本身很简单,挑战是认定峰值是异常还是正确的运维表现。机器学习在这里扮演了非常重要的角色,它针对过去的峰值实例来看待训练数据。如果过去没有或者只有很少的峰值,那么那会把这次峰值标记为严重的或者次要的。反过来说,如果经常出现类似的峰值,那么自动检测就会忽略掉它。
查看英文原文: Splunk ITSI: Adaptive Thresholds and Anomaly Detection