B. 智能运维 --- 质量保障 --- 异常检测 --- 指标异常检测

B. 智能运维 — 质量保障 — 异常检测 — 指标异常检测

概述

  • 核心思想
    • 核心指标:高准召率,基于标注训练或者人工精细化调参
    • 非核心指标:低成本接入,中准召率,无标注训练,冷启动,基于反馈自动调整
  • 阈值设置手段
    • 人工设置
      • 维护成本高
      • 需要有丰富经验的人
      • 在业务快速发展的情况下,容易产生漏报、误报
    • 自动设置
      • 基于规则的监控项自发现
      • 阈值参数:设置基于预测基准值的系数决定阈值上下限区间、分时段阈值预测系数、分alarm灵敏度阈值预测系数;
      • 预测参数:样本数量、异常样本过滤的高斯函数水位或者过滤比例、基于均值漂移模型的样本分段选取置信度等。
  • 数据预处理
    • 指标聚合
      • 关键点
        • 不能够完全不聚合
        • 不能够完全聚合
      • 指标聚合平台,支持离线的,也支持实时的
        • flink、spark做预处理
        • druid做数据聚合

算法概述

  • 时序预测、异常检测
    • 固定阈值
    • 动态阈值计算
      • 线性预测
        • 一次、二次平滑指数
        • y(t + 1) = y(t)
        • 简单均值法/移动均值法
        • 简单指数平滑法
        • 霍尔特线性趋势法
      • 非线性预测
        • 三次平滑指数
        • 回归预测
        • 神经网络
        • LSTM
        • Holt-Winters方法
        • 自回归积分移动平均:ARIMA
      • 多趋势相结合
    • 其他
      • 均值漂移算法
      • 变点检测
        • 类型
          • 单点变点
          • 多点变点
        • 算法
          • wavelet analysis:小波分析
          • cosine transforms:余弦变换
          • CUMSUM
          • Singular Spectrum Transform奇异谱变换

解决方案1 — 百度

  • 场景分类
    • 指标特性
      • 场景一:数据无规律波动,但正常基本在一个较小的波动范围内
      • 场景二:数据的长期波动幅度较大,但正常情况下短期的波动幅度较小
      • 场景三:数据有规律地周期性波动
      • 变点检测
  • 算法选择:算法选择决策树&参数自动配置算法
    • 场景
      • 周期性数据选择配置同比算法,非周期数据会通过波动范围来界定
      • 当数据的全局波动(长期波动)远大于局部波动(短时波动)的时候,我们倾向于选择突升突降
      • 当全局波动近似等于局部波动的时候,恒定阈值算法就会更合适
    • 解决方案
      • 我们提出了一种基于差分的数据周期特征判断方法
      • 数据方差可以直接表达全局波动范围。对数据施加小尺度的小波变换可以得到局部波动,局部波动的方差反应了局部波动的大小。
    • 调参
      • 恒定阈值的自动参数配置
      • 突升突降算法
      • 同比算法也一样

解决方案2 — 阿里

  • 静态阈值设置
    • 给指标M1设置一个水位线,低于(或高于)水位,触发报警;
    • 给指标M1设置同比、环比波动幅度,比如同比波动20%、环比波动10%触发报警;
  • 动态阈值设置
    • 样本选取
    • 异常样本筛除
    • 样本截取
    • 预测基准值

首届AIOps挑战赛——冠军LogicMonitor-AI团队方案分享

  • 需求分析
    • 有标注
    • 禁用手工干预
    • 禁用未来信息
    • 时效性
  • 设计原则
    • 监督学习
    • 自动化
    • 流处理
    • 普适性
  • 具体思路
    • 数据采样 — 正常样本和异常样本悬殊太大,需要预处理
      • 对正常样本进行欠采样以达到正负样本1:1,实验发现这种方案因为丢失了大量的样本信息,模型会出现比较严重的过拟合,泛化性能不佳
      • 欠采样加集成学习。这种方式虽然效果有所提升,但由于每个基分类器的正确率很低,集成后的效果也不是很理想
      • 异常样本过采样以达到正负样本1:1,最后通过阈值进行决策调整。实测下来,这种方式的结果比较理想,成为了我们的最终方案。
    • 特征提取
      • 方法
        • 第一类,通过滑动窗口,提取该窗口类数据的统计特征
        • 第二类,通过序列前后值的对比,得到对比特征
        • 第三类,结合滑动窗口和对比,得到比统计特征
      • 算法
        • 第一个是IsolationForest,这是一种常用的异常检测模型,但由于它对局部异常不敏感,在这个问题上表现欠佳
        • 第二个是随机森林,作为一种集成模型,总体表现很稳定,泛化能力也不错,实测结果略低于DNN
        • 最终的选择方案是深度学习模型,主要考虑到模型有足够的表达能力,能适应大数据,泛化能力强。实测下来,表现也是非常的好。

指标模式漂移后的准确异常检测

  • 项目背景
    • 概念偏移被运维工程师分成符合预期的与不符合预期的,符合预期的是由运维工程师主动操作或者业务实际增长导致的 KPI 剧变,而不符合预期意味着异常的突变,比如软件变更后导致服务性能受损甚至中断,需要快速回滚到之前的版本。
  • 复杂度分析
    • 频繁出现的符合预期的概念偏移:大型 web 服务每天都会有上千次的软件升级和配置变更,使得 KPI 中会出现很多符合预期的概念偏移。
    • 海量的 KPI 数据:有数十个业务部署在上万的服务器上。每个服务器上都有多种关键指标。
    • 不同类型的异常检测器:针对不同的 KPI 曲线,实际会用到不同种类的异常检测器甚至是几种检测器的组合。
    • 需要快速适应:发生预期之中的概念偏移,运维人员会收到大量的误报和错报。
  • 设计思想
    • 概念偏移的检测:StepWise 系统要位于异常检测系统之前,KPI 数据流输入后首先检测是否有概念偏移。iSST-EVT
    • 区分概念偏移是否符合预期:如果有概念偏移,我们需要区分其是否符合预期,不符合预期的概念偏移运维工程师要快速处理该异常,符合预期的进行下一步。DiD
    • 迅速适应符合预期的概念偏移:就是要使得概念偏移后新的数据分布也能快速适配原来精心设计的异常检测算法和参数,输出的数据进行异常检测。RLM

基于主动学习的异常检测

  • 复杂度分析
    • 标注异常是一种暴力的融入领域知识的方法,通过标注出来的异常和正常,将异常检测问题转换成分类问题。但是标注数据是一直个很棘手的问题,
      • 1)需要有业务背景的专业人员;
      • 2)时间成本高;
      • 3)需要标注的数据量太大
  • 核心思想
    • 为了节约排查时间,在这篇论文中,运维人员会把自己的领域知识融入到异常检测中,针对初始的异常分数排名,给出排名靠前的样本的反馈之后,模型会根据这个反馈来重新调整参数,从而输出新的异常分数排名,目的是使运维人员感兴趣的异常排在靠前的位置,从而节约排查异常所需的时间。
  • 具体实现
    • 在线凸优化
    • 损失函数
      • 线性损失(linear loss)
      • 对数似然损失(log-likelihood loss)
      • 逻辑斯蒂损失(logistic loss)
    • 镜像下降学习算法

你可能感兴趣的:(智能运维,异常检测)