Paragon Insights 机器学习 (ML)
Paragon Insights 机器学习概述
Paragon Insights(前身为 HealthBot)使用机器学习来检测异常和异常值,并预测未来的设备或网络级行为。支持机器学习的 Paragon Insights 功能包括:
Anomaly Detection | 使用 Paragon Insights 异常检测算法进行的异常检测涉及将新数据点与在特定学习期间从同一设备收集的数据点进行比较。Paragon Insights 支持以下用于异常检测的机器学习算法:
可以在 Paragon Insights 规则中激活异常检测,方法是将规则字段的摄取类型设置为公式,然后选择异常检测。(“配置”>“规则”>“字段”选项卡>“引入类型”>公式“)。 |
Outlier Detection | 使用 Paragon Insights 离群值检测算法的离群值检测涉及在特定学习期间分析网络中一组设备的数据。Paragon Insights 支持以下用于异常值检测的机器学习算法:
|
Prediction | 对未来设备或网络级行为的预测涉及使用 Paragon Insights 中值预测机器学习算法或 Holt-Winters 预测算法。 从 HealthBot 3.1.0 版开始,您可以从配置 >规则>字段>引入类型>公式中选择 Holt-Winters 预测算法。 |
了解 Paragon 见解异常检测
本节介绍与配置为使用异常检测算法检测异常的 Paragon Insights 规则关联的输入参数。构建机器学习模型后,可以在生产中使用它们将新数据点分类为正常或异常。结果的准确性随着数据的增加而提高。
领域
若要应用机器学习算法,必须首先定义要应用算法的数值数据字段。有关如何为 Paragon Insights 规则创建用户定义的数据字段的信息,请参阅 Paragon Insights 用户指南中的字段部分。
算法
Paragon Insights 异常检测算法包括 Holt-Winters、3 西格玛和 k 均值:
Holt-Winters | Holt-Winters 算法使用流量熵测量和流量的季节性变化来检测流经接口的异常流量。季节性方面提供了一种方法来淡化在时间间隔内定期发生的流量的正常增加和减少。例如,企业网络中的网络流量可能具有每周的季节性,因为工作周期间网络上的流量明显多于周末。 由于Holt-Winters可以预测从周五晚上开始的交通下降,如果周五晚上交通量实际增加,可能会触发异常。 |
3-Sigma | 如果新数据点与平均值(数据集中所有数据点的平均值)在 3 个标准差以内,则 3-sigma 算法会将新数据点分类为正常数据点。如果新数据点超出此范围,则将其归类为异常。 |
K-means | Paragon Insights k 均值算法使用 k 均值聚类分析和其他构建块来创建机器学习模型,用于将新数据点分类为正常或异常:
|
学习期
学习周期指定收集数据的时间范围,算法从中用于构建机器学习模型。学习期支持的时间单位包括:秒、分钟、小时、天、周和年。您必须输入时间单位的复数形式,数字和单位之间没有空格。例如,必须将学习时间 1 小时输入为 1 小时。
Paragon Insights 每天从午夜开始构建机器学习模型。例如,如果学习周期为 5 天,并在 2019 年 2 月 11 日 00:00 触发,则 Paragon Insights 将使用从 2019 年 2 月 6 日 00:00 到 2019 年 2 月 11 日 00:00 收集的数据来构建机器学习模型。对于Holt-Winters预测算法,学习周期必须至少是模式周期的两倍,以确保有足够的模式进行学习。
模式周期性
模式周期性指定应为其收集数据并用于构建机器学习模型的存储桶。每个数据桶代表一个用户定义的时间段和特定的数据模式。机器学习算法构建模型所需的数据点数最少:
三西格玛要求每个数据桶至少 10 个数据点。
K 均值要求每个数据桶至少 32 个数据点。
模式周期性支持的时间单位包括:分钟、小时、天、周和月。您必须输入时间单位的复数形式,数字和单位之间没有空格。
例如:
如果模式周期为 1 天(输入为 1 天),则一周中的每一天的数据都具有特定的模式。Paragon Insights 创建 7 个数据桶和 7 个不同的模型,一周中的每一天对应一个。
如果模式周期为 1 小时(输入为 1 小时),则无论日、周或月,每小时的数据都具有特定的模式。Paragon Insights 创建 24 个数据桶和 24 个不同的模型,每小时一个(00:00-00:59、1:00-1:59、2:00-2:59 ...当天的23:00-23:59)。
如果模式周期为 1 天 1 小时(输入为 1 天 1 小时),则一周中每天每小时的数据具有特定模式。Paragon Insights 创建 7 * 24 = 168 个数据桶和 168 个不同的模型。星期一 24 个存储桶(每小时 1 个),星期二 24 个存储桶(每小时 1 个),依此类推。在这种情况下,从哪个月收集数据并不重要。
了解 Paragon Insights 异常值检测
本节介绍与用于异常值检测算法的 Paragon Insights 规则关联的输入参数。构建机器学习模型后,可以在生产中使用它们来将时间序列数据集识别为异常值。结果的准确性随着数据的增加而提高。
Paragon Insights 异常值检测算法的结果存储在时间序列数据库的表中。表中的每一行都包含与特定时间序列关联的异常值检测输出和元数据。您可以使用表中的信息来配置 Paragon Insights 规则触发器。表中的每一列都由一个唯一名称标识,该名称以用户定义的异常值检测字段名称开头。例如,您可以使用 -is-outlier 和 -device 列名称来field-name配置一个触发器,用于检测异常值并生成一条消息,指示哪个特定设备被确定为异常值。field-name有关更多信息,请参阅 Paragon Insights 异常值检测示例的“触发器”部分。
数据
对于异常值检测公式,输入数据被指定为变量中的 XPATH 列表。有关如何为 Paragon Insights 规则创建用户定义变量的信息,请参阅 Paragon Insights 用户指南中的 变量 部分。
以下是 XPATH 列表的示例:
/device-group[device-group-name=DG0]/device[device-name=D0]/topic[topic-name=T0]/ rule[rule-name=R0]/field[re=RE[01] AND hostname=10.1.1.*]/re-memory,/ device-group[device-group-name=DG0]/device[device-name=D1]/topic[topic-name=T0]/ rule[rule-name=R0]/field[re=RE[01] AND hostname=10.1.1.*]/re-memory
此路径列表指定在设备组 DG0 中的设备 D0 和 D1 上,从主题 T0 规则 R0 获取重新内存,其中 RE 为 RE0 或 RE1,主机名位于 10.1.1.* 块中。此路径允许在字段键级别选择数据,这是必需的,因为不同的字段键可能具有不同的用途。
例如:
在 D0 和 D1 上,字段名为“路由引擎上的内存使用情况”,键 RE0 和 RE1 表示每个设备两个路由引擎。
无法保证 RE0 是所有设备上的主设备,因此在检查异常值时,它们可能无法进行比较。
此机制仅允许选择原色:D0-RE0 和 D1-RE1。
算法
异常值检测算法包括 k 折、3 西格玛和 dbscan:
K-Fold Cross-Validation Using 3-Sigma | 使用 3 西格玛(k 折 3 西格玛)算法的 K 折交叉验证用于创建用于识别异常值的机器学习模型。K 折交叉验证将整个数据集拆分为 k 组,并使用以下常规过程来创建机器学习模型:
例如,如果 k 是设备组中的设备数,并且该组中有 4 台设备,则 k=4。对于交叉验证,构建了四个机器学习模型,并按如下方式评估测试数据集:
如果已知异常值会偏向一个方向或另一个方向,则使用 k 折 3 西格玛算法更适用。如果正常数据点的两边都有异常值,或者有足够的异常值数据点使算法认为没有任何异常,那么 k 折 3-sigma 算法将不会提供显著的结果。 |
DBSCAN | 基于密度的噪声应用程序空间聚类 (DBSCAN) 是一种无监督机器学习算法,用于创建机器学习模型,用于将时间序列数据集识别为异常值:
如果异常值出现在其他数据点的 3 西格玛阈值内,则使用 DBSCAN 算法更适用。DBSCAN可以发现在任何给定时间步长下没有明显偏离正常行为的离群行为。 |
西格玛系数(仅限 k 倍-3 西格玛)
西格玛系数是一个阈值参数(默认值为 3)。阈值参数确定在序列的每个时间点,值必须与要标记为异常值的其他值相距多远。
灵敏度
灵敏度用于计算算法试图在数据中找到的异常值 m。灵敏度确定要作为异常值返回的时间序列测试数据集的数量(返回前 m 个):
灵敏度“低”:传感器数量的0.03%
灵敏度“中等”:传感器数量的5%
灵敏度“高”:传感器数量的36%
绝对百分比 x:x*传感器数量(浮点数,0.0-1.0)
学习期
请参阅“了解 Paragon Insights 异常检测”部分的 学习期 说明。
了解 Paragon Insights 预测
本节介绍与 Paragon Insights 规则关联的输入参数,这些规则用于使用 Paragon Insights 中值预测机器学习算法或 Holt-Winters 预测机器学习算法预测未来值。构建机器学习模型后,可以在生产中使用这些模型来预测趋势和预测未来值。结果的准确性随着数据的增加而提高。
领域
请参阅“了解 Paragon Insights 异常检测”部分的 字段 说明。
算法
Paragon Insights 预测功能使用中值预测算法或 Holt-Winters 预测算法。
中值表示数据采样中一系列值的中点。对于每个模式周期性存储桶,将根据存储桶中可用的数据样本计算出中位数。
学习期
请参阅“了解 Paragon Insights 异常检测”部分的 学习期 说明。
模式周期性
请参阅“了解 Paragon Insights 异常检测”部分的 模式周期性 说明。对于中位数预测算法,我们建议至少使用 10 个数据点来构建机器学习模型。对于Holt-Winters算法,模式周期性应该是学习周期的一半或更少。
预测偏移
预测偏移值是将来要预测字段值的时间。例如,如果当前时间为 2019 年 2 月 6 日 10:00,并且预测偏移设置为 5 小时,则 Paragon Insights 将预测 2019 年 2 月 6 日 15:00 的字段值。
预测偏移支持的时间单位包括:秒、分钟、小时、天、周和年。您必须输入时间单位的复数形式,数字和单位之间没有空格。例如,必须将 1 小时的预测偏移量输入为 1 小时。
Paragon Insights 规则示例
本节中介绍的机器学习 Paragon Insights 规则可从 Paragon Insights 规则和 Playbook GitHub 存储库上传。
Paragon Insights 异常检测示例
此示例介绍如何 check-icmp-statistics
配置 Paragon Insights 设备规则,以便在往返平均响应时间高于静态或动态阈值时将 ICMP 探测发送到用户定义的目标主机,以检测异常。
以下部分介绍如何使用 Paragon Insights GUI 为每个 Paragon Insights 规则定义块(例如字段、变量和触发器)配置适用的输入参数。有关如何配置 Paragon Insights 规则的更多信息,请参阅 使用 Paragon Insights GUI 创建新规则。
- 传感器(检查 icmp 统计)
- 字段(检查 icmp-statistics)
- 变量(检查 icmp-statistics)
- 函数(检查 icmp-statistics)
- 触发器(检查 icmp 统计信息)
- 规则属性(检查 icmp 统计信息)
传感器(检查 icmp 统计)
图 1 显示了为规则check-icmp-statistics
配置的常规属性和 iAgent 传感器。有关count-var
和host-var
变量的信息,请参阅变量(检查 icmp-statistics)。
字段(检查 icmp-statistics)
为 check-icmp-statistics
规则配置了以下字段:
dt-response-time | (见 图2)使用 k 均值算法进行异常检测的配置。检测到异常时,Paragon Insights 返回值 1。 |
rtt-average-ms | (见 图3)往返平均响应时间。 |
rtt-threshold | (见 图4)往返平均响应时间的静态阈值。变量 |
变量(检查 icmp-statistics)
为 check-icmp-statistics
规则配置了以下三个变量:
count-var | (见 图5)ICMP ping 计数。默认情况下,计数设置为 1。 |
host-var | (见 图6)定期发送 ICMP 探测的目标 IP 地址或主机名。 |
rtt-threshold-var | (见 图7)往返平均响应时间的静态阈值。默认情况下,阈值为 1 毫秒。此变量将 |
函数(检查 icmp-statistics)
图 8 显示了为规则 check-icmp-statistics
配置的函数。此函数将往返平均响应时间的度量单位从微秒转换为毫秒。
触发器(检查 icmp 统计信息)
为 check-icmp-statistics
规则配置了以下触发器和术语:
数据包丢失 --(参见 图 9)
为数据包丢失触发器配置了以下术语:
is-device-not-reachable (见 图10)当 ICMP 数据包丢失为 100% 时,Paragon Insights 运行状况严重性级别将设置为主要(红色)。
is-device-up (见 图 11)当丢包大于 0 时,严重性级别设置为次要(黄色)。
no-packet-loss (见 图12)否则,严重性级别将设置为正常(绿色)。
往返时间 -(参见 图 13)
为往返时间触发器配置了以下术语:
is-rtt-fine (见 图14)当无法访问主机或往返平均响应时间高于静态阈值时,Paragon Insights 运行状况严重性级别将设置为主要(红色)。
is-rtt-medium (见 图 15)使用异常检测公式检测到异常时,Paragon Insights 为 dt-响应时间字段返回值 1,严重性级别设置为次要(黄色)。在这种情况下,响应时间高于异常情况检测。
rtt-normal (见 图 16)否则,严重性级别将设置为正常(绿色)。
Paragon Insights 异常值检测示例
此示例介绍如何 check-outlier
配置 Paragon Insights 网络规则,以使用往返时间平均响应时间检测设备组中各个设备的异常值。
以下部分介绍如何使用 Paragon Insights GUI 为每个 Paragon Insights 规则定义块(例如字段、变量和触发器)配置适用的输入参数。有关如何配置 Paragon Insights 规则的更多信息,请参阅 使用 Paragon Insights GUI 创建新规则。
字段(检出值)
图 19 显示了为规则check-outlier
配置的字段。此字段定义用于异常值检测的 DBSCAN 算法和rtt-xpath
变量。有关变量的信息rtt-xpath
,请参阅变量(检出值)。
Paragon Insights 异常值检测算法的结果存储在时间序列数据库的表中。表中的每一行都包含与特定时间序列关联的异常值检测输出和元数据。您可以使用表中的信息来配置 Paragon Insights 规则触发器。表中的每一列都由一个唯一名称标识,该名称以用户定义的异常值检测字段名称开头。例如,您可以使用字段名称是异常值 (rtt-ol-is-outlier
) 和字段名称设备 (rtt-ol-device
) 列名称来配置一个触发器,用于检测异常值并生成一条消息,指示哪个特定设备被确定为异常值(检查异常值)。
变量(检出值)
图 20 显示了为规则 check-outlier
配置的变量。此变量定义网络中的设备,Paragon Insights 从中收集异常值检测机器学习模型的往返平均响应时间数据。
触发器(检出值)
图 21 显示了为规则 check-outlier
配置的触发器。为 icmp-outlier-detection
触发器配置了以下术语:
is-outlier-detected | (见 图 22)检测到异常值时,Paragon Insights 会为 |
no-outlier | (见 图 23)否则,Paragon Insights 将返回值 0,并且严重性级别将设置为正常(绿色)。 |