跳转至

离群检测


通过算法检测特定分组下检测对象的指标/统计数据是否存在离群偏差情况,若存在有超过一定程度的不一致情况,则会产生离群检测的异常事件用于后续的告警追踪。

应用场景

用户可根据指标数据特征配置合适的距离参数,触发紧急事件。例如您可以监控个别主机内存使用率远远偏离其它主机。

新建

点击监控器 > 新建监控器 > 离群检测,进入离群检测规则配置页面。

步骤一:检测配置

1)检测频率:检测规则的执行频率,自动匹配用户所选检测区间。

2)检测区间:每次执行任务时,检测指标查询的时间范围。可以选择15m, 30m, 1h, 4h, 12h, 1d。

检测区间(下拉可选项) 默认检测频率
15m 5m
30m 5m
1h 15m
4h 30m
12h 1h
1d 1h

3)检测指标:监控的指标数据。

字段 说明
数据类型 当前检测的数据类型,包含检测指标、日志、基础设施、自定义对象、事件、应用性能监测、用户访问监测、安全巡检、网络和 Profile。
指标集 当前检测指标所在的指标集。
指标 当前检测所针对的指标。
聚合算法 包含 Avg by(取平均值)、Min by(取最小值)、Max by(取最大值)、Sum by(求和)、Last(取最后一个值)、First by(取第一个值)、Count by(取数据点数)、Count_distinct by(取非重复的数据点数)、p50(取中位数值)、p75(取处于75%位置的值)、p90(取处于90%位置的值)、p99(取处于99%位置的值)。
检测维度 检配置数据里对应的字符串类型(keyword)字段都可以作为检测维度进行选择,目前检测维度最多支持选择三个字段。通过多个检测维度的字段组合,可以确定一个确定的检测对象,观测云会判断某个检测对象对应的统计指标是否满足触发条件的阈值,若满足条件则产生事件。(例如选择检测维度【host】与【host_ip】,则检测对象可以为 {host: host1, host_ip: 127.0.0.1}。)
筛选条件 基于指标的标签对检测指标的数据进行筛选,限定检测的数据范围;支持添加一个或多个标签筛选;支持模糊匹配和模糊不匹配的筛选条件。
别名 自定义检测指标名称。
查询方式 支持简单查询和表达式查询,详情参考 查询

4)触发条件:设置告警级别的触发条件:您可任意配置紧急、正常、无数据、信息的其中一种触发条件。

配置触发条件及严重程度,当查询结果为多个值时,任一值满足触发条件则产生事件。

程度
说明
紧急(红色) 使用 DBSCAN 算法,用户可根据指标数据特征配置合适的距离参数,触发紧急事件。距离参数,表示其中一个样本与另一个样本相邻,两个样本之间的最大距离,不是簇内点距离的最大界限。(float, default=0.5)
⚠ 可选择配置 range(0-3.0) 之间的任意浮点值,如果不配置,默认距离参数为 0.5,距离设置越大得到的异常点越少,距离值设置过小可能检测到的离群值非常多,距离值设置过大可能导致没有任何离群检测到, 所以需要根据不同的数据特征设置合适的距离参数。
正常(绿色) 用户可配置次数,若检测指标触发了“紧急”异常事件,之后连续 N 次检测都正常,则产生“正常”事件。用于判定异常事件是否恢复正常,建议配置。
信息(蓝色) 正常检测结果也产生事件,若检测指标不满足“紧急”“错误”“警告”“正常”“无数据”任一触发条件,则表示检测结果无异常,此时触发“信息”事件。
无数据(灰色) 当检测指标出现无数据情况,用户可配置:不触发事件,触发无数据事件,触发恢复事件,在配置条件下触发相对应事件。

步骤二:事件通知

1)事件标题:设置告警触发条件的事件名称,支持使用预置的模板变量

注意: 最新版本中监控器名称将由事件标题输入后同步生成。旧的监控器中可能存在监控器名称事件标题不一致的情况,为了给您更好的使用体验,请尽快同步至最新。

2)事件内容:满足触发条件时发送的事件通知内容。支持输入 Markdown 格式文本信息并预览效果,支持使用预置的 关联链接,支持使用预置的模板变量

注意:不同告警通知对象支持的 Markdown 语法不同,例如:企业微信不支持无序列表。

无数据通知配置:支持自定义无数据通知内容,若没有配置,则自动使用官方默认的通知模版。

3)关联异常追踪:开启关联后,若该监控器下产生了异常事件,将同步创建 Issue。选择 Issue 的等级以及需要投递的目标频道,产生的 Issue 可以前往异常追踪 > 您选定的频道进行查看。

在事件恢复后,可以同步关闭 Issue。

事件内容自定义高级配置

观测云支持在事件内容中通过高级配置添加关联日志或错误堆栈,以便查看异常情况发生时的上下文数据情况:

  • 添加关联日志:

查询:

如:获取一条索引为 default 的日志 message

{% set dql_data = DQL("L::RE(`.*`):(`message`) { `index` = 'default' } LIMIT 1") %}

关联日志:

{{ dql_data.message | limit_lines(10) }}
  • 添加关联错误堆栈

查询:

{% set dql_data = DQL("T::re(`.*`):(`error_message`,`error_stack`){ (`source` NOT IN ['service_map', 'tracing_stat', 'service_list_1m', 'service_list_1d', 'service_list_1h', 'profile']) AND (`error_stack` = exists()) } LIMIT 1") %}

关联错误堆栈:

{{ dql_data.error_message | limit_lines(10) }}

{{ dql_data.error_stack | limit_lines(10) }}

步骤三:告警配置

告警策略:监控满足触发条件后,立即发送告警消息给指定的通知对象。告警策略中包含需要通知的事件等级、通知对象、以及告警沉默周期。

告警策略支持单选或多选,点击策略名可展开详情页。若需修改策略点击编辑告警策略即可。

步骤四:关联

关联仪表板:每一个监控器都支持关联一个仪表板,可快速跳转查看。

示例

以主机内存指标离群检测为例:

配置监控器,当相邻的两个样本最大距离参数大于 1.2 时产生告警:

事件详情页页面展示,可以看见主机 datakit-internal 内存离群超过配置的距离参数,产生了紧急告警事件:

文档评价

文档内容是否对您有帮助? ×