背景
我在网络运营中心工作,我们监控计算机系统及其性能。要监控的关键指标之一是当前连接到我们服务器的访问者\客户的数量。为了使其可见,我们(运营团队)收集诸如时间序列数据之类的指标并绘制图表。Graphite允许我们这样做,它有一个非常丰富的 API,我用它来构建警报系统,以在突然下降(大部分)和其他变化发生时通知我们的团队。目前,我已经根据平均值设置了一个静态阈值,但由于白天和一周内的负载不同(季节性因素),它不能很好地工作(有很多误报)。
它看起来像这样:
实际数据(一个指标的示例,15 分钟时间范围;第一个数字是用户数,第二个 - 时间戳):
[{"target": "metric_name", "datapoints": [[175562.0, 1431803460], [176125.0, 1431803520], [176125.0, 1431803580], [175710.0, 1431803640], [175710.0, 1431803700], [175733.0, 1431803760], [175733.0, 1431803820], [175839.0, 1431803880], [175839.0, 1431803940], [175245.0, 1431804000], [175217.0, 1431804060], [175629.0, 1431804120], [175104.0, 1431804180], [175104.0, 1431804240], [175505.0, 1431804300]]}]
我想要完成的事情
我创建了一个 Python 脚本,它接收最近的数据点,将它们与历史平均值进行比较,并在发生突然变化或下降时发出警报。由于季节性,“静态”阈值无法正常工作,脚本会生成误报警报。我想改进警报算法以使其更精确,并使其在不不断调整警报阈值的情况下工作。
我需要什么建议和我发现的东西
通过谷歌搜索,我发现我正在寻找用于异常检测的机器学习算法(无监督算法)。进一步的调查表明,它们有很多,很难理解哪一个适用于我的案例。由于我有限的数学知识,我无法阅读复杂的学术论文,我正在寻找对该领域初学者来说简单的东西。
我喜欢 Python 并且对 R 有点熟悉,因此我很乐意看到这些语言的示例。请推荐一本好书或文章,这将帮助我解决我的问题。谢谢你的时间,请原谅我这么长的描述
有用的链接
类似的问题:
外部资源: