使用 Contrail 命令配置 Contrail 见解警报
借助 Contrail 见解警报,您可以配置在基础架构中满足条件时生成的警报。Contrail 见解在收集点对指标执行分布式分析,以便高效、灵敏地检测与警报匹配的事件。Contrail 见解提供两种类型的警报:
Static | 用户提供的静态阈值用于比较。 |
Dynamic | 使用动态学习的自适应阈值进行比较。 |
对于 3.2.6 之前的 Contrail 见解版本:要配置警报,您的 Contrail 见解许可证订阅必须处于活动状态。
Contrail 见解警报概述
对于静态和动态警报,Contrail 见解代理会持续收集不同实体(如主机、实例和网络设备)的指标度量值(请参阅 Contrail 见解收集的指标)。除了简单收集之外,代理还会在收集时分析指标流,以确定匹配的警报规则。对于特定警报,代理根据用户指定的函数(平均值、标准偏差、最小值、最大值、总和)聚合样本,并为每个用户指定的测量间隔生成单个测量值。对于给定的测量间隔,代理将每个测量值与阈值进行比较。对于具有静态阈值的警报,将使用用户指定的比较函数(高于、低于、等于)将测量值与固定值进行比较。对于动态阈值,会将度量值与 Contrail 见解随时间推移获知的值进行比较。
您可以进一步配置需要多个间隔匹配的报警参数。这允许您配置警报以匹配持续条件,同时还可以检测小时间段内的性能。宽时间范围内的最大值可能是过度夸大的条件。然而,平均值会稀释信息。通过在较小的间隔内测量并在多个间隔内观察重复匹配,可以更好地实现平衡。例如,要监控三分钟内的 CPU 使用率,可以将警报配置为比较 5 秒间隔内的平均 CPU 利用率,但仅在 36(或 36 个子集)间隔与警报条件匹配时才引发警报。这比三分钟内的简单平均值或最大值提供了对持续性能条件的更好可见性。
动态阈值支持根据历史趋势检测资源消耗中的异常值。资源消耗在一天中的不同时间和一周中的几天可能会有很大差异。这使得很难为指标设置静态阈值。例如,在周一上午 10:00 到中午 12:00 之间,70 % 的 CPU 使用率可能被视为正常,但在周六晚上 9:00 到 10:00 之间的 CPU 使用率可能被视为异常高。
借助动态阈值,Contrail 见解可以了解应用警报的范围内所有资源的指标趋势。例如,如果为主机聚合配置了警报,则 Contrail 见解会从为该聚合中的主机收集的指标值中学习基线。同样,为项目配置了动态阈值的警报会从为该项目中的实例收集的指标值中学习基线。然后,当测量值偏离特定时间段内获知的基线值时,代理会生成警报。
创建具有动态阈值的警报时,请选择指标、建立基线的时间段以及对偏离基线的测量的敏感度。灵敏度可以配置为 高、 中或 低。灵敏度越高,报告与基线的偏差越小,反之亦然。
Contrail 见解警报操作
Contrail 见解代理对时间序列数据流执行分布式实时统计分析。代理使用可配置的滑动窗口机制分析多个测量间隔的指标。当 Contrail 见解代理确定指标数据在可配置的测量间隔内与报警条件匹配时,将生成警报。样本聚合类型和警报阈值是可配置的。支持两种类型的警报:静态和动态。区别在于如何确定阈值并用于比较测量的指标数据。以下各节介绍整体滑动窗口分析,并解释分析使用的静态阈值和动态基线的详细信息。
滑动窗口分析
Contrail 见解代理使用滑动窗口分析来评估警报。滑动窗口分析将可配置测量间隔内的指标流与静态阈值或动态基线进行比较。每个测量间隔的长度可配置为一秒粒度。在每个测量间隔中,使用聚合函数(如 平均值、 最大值和 最小值)组合原始时间序列数据样本。使用可配置的比较函数(例如高于或低于)将聚合值与静态阈值或动态基线进行比较。多个测量间隔组成一个滑动窗口。滑动窗口中可配置的间隔数必须与规则条件匹配,代理才能为警报生成通知。
图 1 显示了一个示例,其中滑动窗口由六个相邻的测量间隔(i1 到 i6)组成,由间隔计数参数指定。在测量间隔 i1 中,样本 S1、S2、S3 的平均值计算为 S平均值。根据静态或动态报警类型,然后使用用户指定的比较函数(例如高于或低于)将 Savg 与配置的静态阈值或动态学习的基线进行比较。比较的输出确定是否将特定测量间隔标记为具有异常的间隔。对滑动窗口内的每个测量间隔(例如,i1 到 i6)重复此评估。
在 图 1 的示例中,代理通过将测量间隔的聚合值与静态阈值或动态基线进行比较(具体取决于警报类型),确定两个间隔 i2 和 i5 是 例外的间隔 。假设间隔 i1 是配置警报的第一个间隔,则当 Contrail 见解代理确定最近六个测量间隔中至少有两个被标记为异常时,警报将在间隔 i6 结束时变为活动状态。使用控制面板配置警报时,默认情况下,间隔计数和例外间隔设置为 1。因此,代理可以在处理一个测量间隔的数据后生成警报。
静态报警
在定义警报时提供静态警报阈值。 图 2 描述了静态警报定义的示例,后跟用于警报 API 配置的等效 JSON。示例中定义的条件是评估 60 秒测量间隔内的样本平均值 host.cpu.usage
。将测量值与 80% 的静态阈值进行比较,以确定给定的测量间隔是否与报警规则匹配。 图 2 标识了静态警报定义中的组件。
动态报警
Contrail 见解使用为其配置了警报的实体集的历史数据学习动态警报阈值。 图 3 显示了动态警报定义的示例,并标识了动态警报定义中的组件。
使用动态阈值时,无需配置静态阈值。相反,您可以指定三个参数来控制如何执行学习。学习算法跨实体生成基线。基线由平均值和标准差组成。随着其他指标数据的收集,基线会不断更新。
以下是三个学习参数的列表以及有关它们如何工作的信息:
BaselineAnalysisAlgorithm | 选择用于确定动态阈值的机器学习算法。可以使用以下算法:
|
||||
LearningPeriodDuration | 使用历史数据确定动态基线。此参数确定使用最新历史数据计算动态基线的时间段长度。例如,1 小时、1 天或 1 周。在配置规则时,Contrail 见解可能尚没有足够的给定实体的历史数据。在这种情况下,学习是在数据可用时执行的。警报评估在一个数据学习期可用并生成基线后开始。 |
||||
Sensitivity | 动态报警的灵敏度控制与学习均值的允许偏差幅度。灵敏度参数控制学习标准偏差的乘数。您可以选择 低、 中或 高 作为灵敏度。Contrail 见解代理将实时测量结果与定义范围进行比较:
|
报警定义
图 2 显示了静态警报定义的示例。每个警报定义都具有表 1 中所示的以下组件。
项目 |
选项 |
描述 |
---|---|---|
模块 |
报警、服务报警 |
选择警报后,您可以为主机、实例和网络设备等实体配置 警报 。选择 服务告警 后,您可以为 RabbitMQ、MySQL、ScaleIO 和 OpenStack 服务等服务配置告警。 |
报警规则类型 |
静态、动态 |
这决定了警报用于确定是否应生成警报的阈值类型。以下是支持的两种类型。
|
名字 |
报警名称 |
名称标识警报。名称显示在仪表板中,是外部通知系统面向用户的标识符。 |
范围 |
主机、实例、网络设备、虚拟网络 |
实体的类型,例如应用警报的主机、实例或网络设备。例如,如果选择“范围”作为 “实例”,则可以进一步选择将规则配置为基础结构中存在的所有实例,或特定项目或聚合中存在的实例。 |
服务 |
RabbitMQ、MySQL、Ceph、OpenStack、Cassandra、Contrail、ScaleIO |
选中后,您可以为 RabbitMQ、MySQL、Ceph、OpenStack、Cassandra、Contrail 和 ScaleIO 服务配置告警。 |
指标范围 |
群集、节点、队列 |
选择要监视的内容的指标范围(例如群集、节点或队列),然后选择要监视的指标。 |
对象 |
取决于指标范围选择的选项。 |
将监视的对象。 |
生成 |
事件、报警 |
当满足警报条件时,生成事件或警报。 |
对于公制 |
CPU.usage, memory.usage |
将监视的指标。例如,host.cpu.usage 或 instance.cpu.usage。 |
当 |
价值 |
— |
间隔(秒) |
以秒为单位的值 |
一个测量间隔的持续时间(以秒为单位)。根据所观察指标的采样频率,可能会在间隔持续时间内接收一个或多个原始样本。在间隔持续时间内收到的所有原始样本都使用聚合函数(如平均值、总和、最大值、最小值和 std-dev)进行处理。 |
是 |
价值 |
示例:当值高于阈值 -8 时。示例中的斜体表示变量。 |
阈 值 |
阈值 |
要与度量值进行比较的数值。Contrail 见解支持两种类型的阈值:静态或动态。
表 2 介绍了动态告警所需的参数和支持的选项。 |
基线分析算法 |
K-Means, EWMA |
|
学习期持续时间 |
1 周, 1 个月 |
表 2 介绍了这些选项。 |
灵敏度 |
低、中、高 |
表 2 介绍了这些选项。 |
严重性 |
无、信息、警告、错误、严重 |
指示警报的严重性。 严重 表示重大警报。 信息 指示次要警报。 |
先进 |
选中此选项后,包括“例外间隔”、“间隔计数”和“状态”。 |
— |
聚合/项目 |
所有主机,所有实例。AggregateId、ProjectId |
选择警报将监控的实体集。如果范围为实例,则可以为基础架构中特定项目、聚合或所有实例中存在的 实例集配置警报。如果范围为主机,则可以为特定聚合中存在的一组主机或基础架构中的所有 主机配置警报。 |
报警模式 |
警报、事件 |
模式可以配置为警报或事件。 |
聚合功能 |
平均值、最大值、最小值、总和、标准差值 |
确定如何处理在一个测量间隔内接收的数据样本以生成用于比较的聚合值。代理在测量间隔内收集指标的多个样本。代理根据聚合函数组合样本,以便确定单个值,以便在测量间隔内与阈值(静态或动态)进行比较。 表 5 列出并描述了用于告警处理的聚合功能。 |
比较功能 |
高于、低于、相等、以最小速率递增、按最小速率递减 |
确定如何将聚合函数的输出与静态或动态阈值进行比较。 表 6 显示了 Contrail 见解警报支持的不同比较功能。图 4 和 图 5 显示了比较函数的示例,显示了最小速率下的增加和减少。 |
静态阈值 |
当报警规则类型为“静态”时 |
— |
报警严重性 |
无、信息、警告、错误、严重 |
指示警报的严重性。 严重 表示重大警报。 信息 指示次要警报。 |
通知 |
无、PagerDuty、自定义服务、立即服务、Slack |
提醒您操作条件的通知方法。 |
间隔(例外) |
例如,“2” |
这是滑动窗口内必须满足警报条件才能发出警报的最小测量间隔数。 在图 3 中,有两个例外区间:i2 和 i5。在控制面板中配置警报时,默认情况下,例外间隔设置为 1。可以通过选择 监控>警报>添加规则来指定例外间隔。“例外间隔”不能大于“间隔计数”。 |
间隔计数 |
例如,“3” |
在决定是否生成警报之前执行统计分析的最大相邻测量间隔数。 在图 3 中,滑动窗口中有 6 个测量间隔(i1 到 i6)。每个测量间隔的持续时间由间隔持续时间参数指定。在控制面板中配置警报时,间隔计数默认设置为 1。可以通过选择 监控>警报>添加新规则来指定间隔计数。 |
地位 |
启用、禁用 |
用于设置和验证报警规则的状态。将状态设置为启用或禁用。 |
动态报警所需的参数
表 2 介绍了动态告警所需的参数和支持的选项。
动态阈值所需的参数 |
描述 |
支持的选项 |
---|---|---|
基线分析算法 |
基线分析算法用于对历史数据执行无监督学习。在收到新数据时连续执行基线分析。 |
|
学习期持续时间 |
学习期持续时间指定基线分析算法用于确定基线的历史数据量。动态基线使用最近学习持续时间中的数据不断更新。 配置动态警报后,将使用最近学习持续时间中的数据(如果可用)执行基线分析。如果没有足够的可用数据,Contrail 见解代理会在存在足够的数据以了解第一组基线后立即评估指标。 示例:当学习持续时间为 1 天时,代理会将指标与过去 24 小时的每小时基线进行比较。 示例:当学习持续时间为 1 周时,代理会将指标与过去 7 x 24 小时的每小时基线进行比较。 |
|
灵敏度 |
动态基线为给定范围提供给定指标的正常操作区域。 如图 6 所示,动态基线是一个元组,其平均值和标准差值适用于一天中的特定时间。 灵敏度系数决定了允许的操作范围。超出工作范围的测量会导致异常间隔。例如,如果基线平均值为 20,std-dev 为 2,则正常工作区域介于 18 和 22 之间。当灵敏度 较低 时,正常工作区域被视为 10(平均值 - 5*标准差)和 30(平均值 + 5*标准差值)。在这种情况下,如果指标的测量平均值介于 10 和 30 之间,则不会引发警报。相反,如果平均值为 5 或 35,则会发出警报。 |
|
报警模式的状态
表 3 显示了模式配置为警报的警报的所有可能状态。
状态 |
描述 |
---|---|
学习 |
这是每个警报的初始状态。在此状态下,警报正在处理实时数据,警报将保持此状态,直到处理了足够的数据来决定是否应生成警报。学习期的持续时间取决于滑动窗口参数。 |
积极 |
满足警报指定的条件。只要满足告警条件,告警就会保持此状态。 |
无效 |
不满足警报指定的条件。例如,在学习状态之后,警报会从活动状态转换为非活动状态,因为 CPU 使用率低于设置的阈值。 |
禁用 |
代理未主动分析此警报的数据。警报已被用户删除或暂时禁用。 |
表 4 显示了模式配置为事件的报警的所有可能状态。
状态 |
描述 |
---|---|
启用 |
这是配置规则时模式设置为 事件 时警报的初始状态。它将保持此状态,直到满足生成警报的条件。 |
引发 |
当满足告警生成条件时,将生成状态为 已触发的告警。在每个测量间隔结束时记录警报生成,因为继续满足警报的长条件。 |
禁用 |
代理未主动分析此警报的数据。警报已删除或已被用户暂时禁用。 |
用于报警处理的聚合功能
表 5 列出并描述了用于告警处理的聚合功能。
聚合功能 |
描述 |
---|---|
平均 |
在一个测量间隔内收到的所有数据样本的统计平均值。 示例:当 60 秒间隔内的 CPU 使用率平均值高于过去 3 个测量间隔中 2 个的 80% 时,将生成主机警报。 在此示例中,测量间隔为 60 秒。如果在 3 个相邻测量间隔中的任意 2 个测量间隔内 CPU 使用率样本的平均值超过 80%,则会生成告警。 |
和 |
在一个测量间隔内收到的所有数据样本的总和。 示例:当 60 秒间隔内的 CPU 使用率总和高于最近 3 个测量间隔中 2 个间隔的 250% 时,生成主机警报。 在此示例中,如果 3 个相邻测量间隔(每个测量间隔的持续时间为 60 秒)中的任意 2 个测量间隔内的 CPU 使用率总和超过 250%,则会生成告警。 |
麦克斯 |
在一个测量间隔内观察到的最大样品值。 示例:当 60 秒间隔内的最大 CPU 使用率高于过去 3 个测量间隔中 2 个的 95% 时,生成主机警报。 在此示例中,如果 3 个相邻测量间隔(其中每个测量间隔的持续时间为 60 秒)中的任何 2 个测量间隔内的最大 CPU 使用率超过 95%,则会生成警报。 |
最小值 |
在一个测量间隔内观察到的最小样品值。 示例:当 60 秒间隔内的最小 CPU 使用率低于最近 3 个测量间隔中 2 个的 5% 时,生成主机警报。 在此示例中,如果 3 个相邻测量间隔(其中每个测量间隔的持续时间为 60 秒)中的任何 2 个测量间隔内的最低 CPU 使用率低于 5%,则会生成警报。 |
标准开发 |
时间序列数据的标准偏差是根据当前测量间隔之前收到的样本确定的。 示例:当 60 秒间隔内的 CPU 使用率标准开发高于最近 3 个测量间隔中 2 个的 2 西格玛时,将生成主机警报。 在此示例中,当原始时间序列样本在过去 3 个测量间隔中的至少 2 个测量间隔内高于 |
用于报警处理的比较功能
图 4 和图 5 显示了比较函数的示例,显示了最小速率下的增加和减少。
表 6 显示了 Contrail 见解警报支持的不同比较功能。
比较运算符 |
描述 |
---|---|
以上 |
确定给定测量间隔内聚合函数的结果是否 高于 阈值。
注意:
对于 上述动态阈值,Contrail 见解会比较聚合函数的结果是否超出正常工作区域(平均值 +/- 西格玛*灵敏度)。 |
下面 |
确定为给定测量间隔确定的聚合函数的结果是否 低于 阈值。
注意:
对于动态阈值, 下面 比较聚合函数的结果是否在正常工作区域内(平均值 +/- sigma*灵敏度)。 |
平等 |
确定聚合函数的结果是否 等于 阈值。 |
以最小速率递增 |
当您有兴趣跟踪给定指标的值(而不是其绝对值)的突然增加时,此比较函数非常有用。例如,如果入口或出口网络带宽在短时间内开始增加,则可能需要发出警报。 图 4 显示了测量间隔 i1 和 i2 之间度量平均值的突然增加。同样,在测量间隔 i4 到 i5 之间的度量平均值中观察到突然增加。 示例:当 60 秒间隔内的host.network.ingress.bit_rate平均值以最近 3 个测量间隔中 2 个间隔的 25% 的最小速率增加时,生成主机警报。 在该示例中,如果平均入口比特率在 3 个测量间隔中的 2 个中至少增加 25%,则会引发警报。 |
以最小速率递减 |
当您有兴趣跟踪给定指标的值(而不是其绝对值)的突然下降时,此比较函数非常有用。例如,出口网络带宽在短时间内开始减少,那么您可能需要发出警报以调查根本原因。 图 5 显示了测量间隔 i1 和 i2 之间度量平均值的突然下降。同样,在测量间隔 i3 和 i4 之间的度量平均值中观察到突然下降。 示例:当 60 秒间隔内的host.network.egress.bit_rate平均值以最近 3 个测量间隔中 2 个间隔的 25% 的最小速率递减时,将生成主机警报。 在此示例中,如果平均出口比特率在 3 个测量间隔中的 2 个内至少降低了 25%,则会引发警报。 |
配置报警规则
要配置警报:
选择 监控>警报。
在报警规则面板中,单击添加规则以创建新 规则 ,以便在网络中的某个选定实体上满足用户定义的条件时触发报警。
图 8:Contrail 命令 中的警报活动警报和警报规则面板对于模块,选择以下选项之一。根据您的选择,字段会有所不同。
Alarms 选择警报后,您可以为主机、实例和网络设备等实体配置警报。
Service Alarms 选择服务告警后,您可以为环境中的服务配置告警,例如 RabbitMQ、MySQL、ScaleIO 和 OpenStack 服务。
图 9:在 Contrail 命令 中创建和配置警报选择报警规则类型。
静态 - 当警报定义为静态时,规则定义应包括由用户确定的预定义静态阈值。
动态 - 当警报定义为动态时,阈值由基线算法动态确定,该算法可以是 k 均值或 ewma。
选择规则的指标并指定规则 触发 警报的时间间隔。有关其他参数,请参阅 表 1 和“告警定义”部分中的说明。
单击 创建 以保存警报。