跳到主要内容

设备智能告警组件

阅读需 3 分钟

目的与意义

  • 需求与适用性:运维监控最重要的是报警,报警最重要的是设备报警,设备报警最重要的是脱机报警,脱机报警中最重要的是有效性问题
  • 技术与创新性:人工智能的一些算法与python技术实现

过程与方法

  • 机器学习-无监督学习-孤立森林算法
  • 异常检测算法
  • python数据分析库

技术与实现

  • 问题场景(频繁告警):运维人员每天都会收到大量的设备脱机报警,但实际上其中大多数报警都是无需处置的无效报警,如何利用程序自动过滤这些无用的报警?
  • 数据分析:收集现场报警数据,用pandas对历史数据进行分析,发现现场每天在0点,以及10点,会有三批每天定时关机的设备,占总报警的97%以上,这些属于正常脱机无需报警

1678088287855.png

1671941832653.png

  • 算法选择:选用机器学习方法,自动从历史数据集中学习脱机规律,识别异常,
    • 选择智能算法可以无需人为设置告警规则,并对各个现场的情况进行兼容,以及当现场定时关机时间变更后,也无需修改程序,算法会结合历史数据自动调整模型参数
    • 对常用的异常检测方法进行实验,最终选取孤立森林(isolation Forest)算法,此该算法简单、高效,在工业界应用较多。
  • 算法实现:使用python的机器学习库sklearn对算法进行实现,选取脱机时间作为特征,训练基于孤立森林的异常检测模型,对脱机数据进行检测,得到了良好的效果,可以检测出90%以上的无效报警,极大提升了设备告警的准确性。
# 创建随机森林
model = IsolationForest(n_estimators=100, random_state=0, contamination=0.05)

# 训练模型
model.fit(alertListsDF[['time']])

# 识别异常
alertListsDF['anomaly'] = model.predict(data)

1678087719486.png

1671188461266.png

  • 项目应用:选取Flask作为web框架,连接监控数据库获取告警数据,每周定时对异常检测模型进行更新,并提供对外的异常检测接口,用于判断当前设备脱机是否为有效告警
    • 部署方法:Docker部署

1675912903501.png

Loading Comments...