对于一个公司或者企业来说,当各种软件应用和硬件设备越来越多,系统日趋复杂,可是公司的业务系统还是会时不时地发生一些异常。

提出问题

这些异常包括流量、订单、Web服务器的平均响应时间、Windows日志中某类事件发生次数、防火墙判定的某类异常访问次数等等。运维工程师需要对系统运行的各项数据指标的采集、监控,查看系统的状态,并且需要及时发现可能存在的异常和对相关原因作出判断。

传统情况下,我们会利用规则、阈值或简单的统计方法来进行此类分析。但是这些简单的方法很少能够高效地处理实际数据,原因在于此类方法往往是基于无效的统计假设(例如:高斯分布),因此不支持趋势分析(长期性或周期性趋势),或者在信号发生变化时缺乏稳定性,因此会产生很多误报。当异常发生时,如何第一时间自动感知?如何对当前的异常做一个初步的定位?

应对方法

由于各种指标的监控数据例如网站服务器、安全设备、移动设备、IoT 传感器等设备产生的日志,都有一个共同特点,它们往往以时间序列的形式展现(时间序列数据)。这就涉及到时间序列的异常检测问题,而在大数据时代,运用相关的数据挖掘和机器学习相关工具做到异常发现和诊断越来越智能化,是运维平台开发者一项重要的工作。机器学习其实是一个很大的话题,本质上讲,它就是用来实现数据驱动型预测、决策和建模的一系列广泛算法和方法。机器学习包括有监督学习、无监督学习和半监督学习。

互联网上有很多开源的日志分析和可视化平台,我们可以使用它们进行搜索、查看存储日志数据,也可以轻松地执行高级数据分析,并通过各种图表、表格和地图将数据可视化。互联网上也有很多时间序列数据的分析工具,这些工具会内置很多无监督机器学习模型,通过机器学习,提供 “时间序列异常检测” 的功能。使用这些工具,定义规则、指定阈值,以及手动构建统计模型,这些步骤你统统都不用做,这些步骤工具在后台已经帮你做了。你要做的就是选择数据源、感兴趣的指标、创建监控检测任务。

Machine Learning功能介绍

我们选择的工具可以提供多种方式的时间序列数据异常检测功能,接下来我们具体介绍其常用功能:

单一指标异常检测

例如,对于Web服务器,我们想了解每天接收的请求数目变化情况,想知道在这些变化中哪些是相对异常的,我们便可以使用该功能。

机器学习在异常检测中的应用

工具会从时间序列数据的开始部分“学习”分析数据的变化规律,并在后面时间段的数据分析中应用之前“学到的”规律,并标识出来(图中黄色竖直线的部分)。

多指标异常检测

Machine Learning还可以同时分析多个指标,假设一个Web服务包含一组应用程序,那么我们可以使用该功能分析各个应用一段时间以来的响应时间,分别确认各个行为异常的服务,与此同时还可以展示服务器的整体异常情况。

机器学习在异常检测中的应用

服务器的整体响应时间异常情况,我们可以看图中的Overall;对于不同app的响应时间异常情况,在同一界面我们也能方便的查看,如图中的app_1、app_4等。图中颜色越深的地方,表示异常情况越明显,图片下方也能看到具体异常信息。

Machine Learning实际应用

1. 监控需求

通过防火墙日志,了解公司每天产生的网络流量总体变化情况和不同协议下的流量变化情况、以及异常情况。

2. 日志梳理

公司防火墙流量日志样本有如下几十个字段(本篇文章重点介绍如何对时间序列数据进行监控,所以对于日志的解析和收集我们不过多介绍):

机器学习在异常检测中的应用

经过梳理,我们选择其中三个字段作为我们监控作业需要的字段:

机器学习在异常检测中的应用

3、创建作业

在工具界面选择Machine Learning按钮,按照步骤设置日期范围、索引和字段,即可创建作业。

机器学习在异常检测中的应用

经过一段时间的学习分析后即可看到完成后的作业,点击Anormaly Exploer就能看到异常检测的详细情况。

机器学习在异常检测中的应用

 

4. 异常解读

我们可以通过两种方式查看异常检测结果,一种是Anormaly Exploer,一种是Single Metric Viewer。

4.1 Anormaly Exploer

4.1.1 Anomaly timeline

Anomaly timeline里的每一个方格代表一段时间的异常情况,颜色越深代表异常越”严重“。即实际值偏离估计值越多,有可能是偏大、有可能是偏小。其中Overrall是总体的异常情况。

将鼠标移动到方格上时,如果该方格对应的时间段有异常,则会显示异常信息。异常信息包括时间戳和异常分数。

机器学习在异常检测中的应用

 

4.1.2 View by

该下拉列表选择的是不同协议的异常情况,颜色的含义和上面的一样。不过需要注意的是,当Overrall显示异常分数不高的时候,我们不能想当然的认为Protocol分组下的不同协议的异常分数也不高。例如,倒数第二个色块,Overrall异常分数为6,但是同一时间段的icmp异常分数却高达79。按照我们的理解,Overrall的异常分数是不同协议异常分数的综合结果。

机器学习在异常检测中的应用

4.1.3 Top Influencers

该区域显示的是不同协议流量异常分数的最大值和该协议所有异常分数的总和。我们还可以通过点击 + – 来添加和移除过滤,只看我们想看到的协议的流量异常情况。

机器学习在异常检测中的应用

4.1.4 Anomalies

该区域显示的是所有异常的详细信息,包括异常点发生的时间、字段名称、真实值、估计值等,我们还可以点击Severity threshold过滤不同等级的异常信息。

机器学习在异常检测中的应用

 

4.2 Single Metric Viewer

机器学习在异常检测中的应用

在该视图中,我们可以看到总体流量的变化情况和异常情况。图中x轴下方是可以拖动和选择起止时间的时间窗口,通过该窗口我们可以缩放我们想了解的任意时间间隔。

图中不同颜色的点代表着异常信息,颜色的含义和上面介绍的一样。鼠标移动到异常点同样会显示相关异常信息。

5. More

至此,通过Machine Learning我们已经能够满足之前提到的监控需求,通过多种方式(曲线、色块和基本的文本信息)了解流量的变化情况和异常信息。

但Machine Learning能做的可不止这些!当我们点击上图中的Forecast按钮,输入一个天数,工具便可以根据之前学习到的规律去预测接下来一段时间的变化趋势。预测后的变化趋势以黄色线型表示。

机器学习在异常检测中的应用

结语

以上是我们通过Machine Learning 对公司的流量日志进行监控和异常检测。对于不同的日志或者不同的业务产生的时间序列数据,我们都可以尝试使用类似方法来方便的观测变化趋势、分析异常,甚至借助其”预测”功能,可以”预知”未来趋势、更充分地做好未来规划。

机器学习在异常检测中的应用

Share this content:

Categories:

Tags:

Comments are closed