0.文章系列链接

  • SLS机器学习介绍(01):时序统计建模
  • SLS机器学习介绍(02):时序聚类建模
  • SLS机器学习介绍(03):时序异常检测建模
  • SLS机器学习介绍(04):规则模式挖掘
  • SLS机器学习介绍(05):时间序列预测

  • 一眼看尽上亿日志-SLS智能聚类(LogReduce)发布
  • SLS机器学习最佳实战:时序异常检测和报警
  • SLS机器学习最佳实战:时序预测

1.手中的锤子都有啥?

围绕日志,挖掘其中更大价值,一直是我们团队所关注。在原有日志实时查询基础上,今年SLS在DevOps领域完善了如下功能:

  • 上下文查询
  • 实时Tail和智能聚类,以提高问题调查效率
  • 提供多种时序数据的异常检测和预测函数,来做更智能的检查和预测
  • 数据分析的结果可视化
  • 强大的告警设置和通知,通过调用webhook进行关联行动

今天我们重点介绍下,日志只能聚类和异常告警如何配合,更好的进行异常发现和告警

2.平台实验

2.1 实验数据

一份Sys Log的原始数据,,并且开启了日志聚类服务,具体的状态截图如下:

通过调整下面截图中红色框1的大小,可以改变图中红色框2的结果,但是对于每个最细粒度的pattern并不会改变,也就是说:子Pattern的结果是稳定且唯一的,我们可以通过子Pattern的Signature找到对应的原始日志条目。

2.2 生成子模式的时序信息

假设,我们对这个子Pattern要进行监控:

msg:vm-111932.tc su: pam_unix(*:session): session closed for user root
对应的 signature_id : __log_signature__: 1814836459146662485

我们得到了上述pattern对应的原始日志,可以看下具体的数量在时间轴上的直返图:

上图中,我们可以发现,这个模式的日志分布不是很均衡,其中还有一些是没有的,如果直接按照时间窗口统计数量,得到的时序图如下:

__log_signature__: 1814836459146662485 |
select date_trunc('minute', __time__) as time, COUNT(*) as num
from log GROUP BY time order by time ASC limit 10000

上述图中我们发现时间上并不是连续的。因此,我们需要对这条时序进行补点操作。

__log_signature__: 1814836459146662485 |
select time_series(time, '1m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(num) as num
from  ( select __time__ - __time__ % 60 as time, COUNT(*) as num from log GROUP BY time order by time desc )
GROUP by time order by time ASC limit 10000

2.3 对时序进行异常检测

使用时序异常检测函数: ts_predicate_arma

__log_signature__: 1814836459146662485 |
select ts_predicate_arma(to_unixtime(time), num, 5, 1, 1, 1, 'avg')
from  ( select time_series(time, '1m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(num) as num from  ( select __time__ - __time__ % 60 as time, COUNT(*) as num from log GROUP BY time order by time desc ) GROUP by time order by time ASC ) limit 10000

2.4 告警该如何设置

  • 将机器学习函数的结果拆解开
__log_signature__: 1814836459146662485 |
select t1[1] as unixtime, t1[2] as src, t1[3] as pred, t1[4] as up, t1[5] as lower, t1[6] as prob
from  ( select ts_predicate_arma(to_unixtime(time), num, 5, 1, 1, 1, 'avg') as res from  ( select time_series(time, '1m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(num) as num from  ( select __time__ - __time__ % 60 as time, COUNT(*) as num from log GROUP BY time order by time desc ) GROUP by time order by time ASC )) , unnest(res) as t(t1)

  • 针对最近两分钟的结果进行告警
__log_signature__: 1814836459146662485 |
select unixtime, src, pred, up, lower, prob
from  ( select t1[1] as unixtime, t1[2] as src, t1[3] as pred, t1[4] as up, t1[5] as lower, t1[6] as prob from  ( select ts_predicate_arma(to_unixtime(time), num, 5, 1, 1, 1, 'avg') as res from  ( select time_series(time, '1m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(num) as num from  ( select __time__ - __time__ % 60 as time, COUNT(*) as num from log GROUP BY time order by time desc ) GROUP by time order by time ASC )) , unnest(res) as t(t1) ) where is_nan(src) = false order by unixtime desc limit 2

  • 针对上升点进行告警,并设置兜底策略
__log_signature__: 1814836459146662485 |
select sum(prob) as sumProb, max(src) as srcMax, max(up) as upMax
from ( select unixtime, src, pred, up, lower, prob from  ( select t1[1] as unixtime, t1[2] as src, t1[3] as pred, t1[4] as up, t1[5] as lower, t1[6] as prob from  ( select ts_predicate_arma(to_unixtime(time), num, 5, 1, 1, 1, 'avg') as res from  ( select time_series(time, '1m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(num) as num from  ( select __time__ - __time__ % 60 as time, COUNT(*) as num from log GROUP BY time order by time desc ) GROUP by time order by time ASC )) , unnest(res) as t(t1) ) where is_nan(src) = false order by unixtime desc limit 2 )

具体的告警设置如下:


3.硬广时间

3.1 日志进阶

这里是日志服务的各种功能的演示 日志服务整体介绍,各种Demo

原文链接
本文为云栖社区原创内容,未经允许不得转载。

SLS机器学习最佳实战:日志聚类+异常告警相关推荐

  1. SLS机器学习最佳实战:批量时序异常检测

    0.文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器 ...

  2. SLS机器学习介绍(05):时间序列预测

    00系列文章目录 0.1 算法原理目录 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规 ...

  3. SLS机器学习介绍(01):时序统计建模

    文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器学习 ...

  4. SLS机器学习介绍(02):时序聚类建模

    文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 前言 第一篇文 ...

  5. TDSQL新增子set报错,DB资源异常告警解决实战

    作者:我在听风想你 大家好,这次给大家带来一个新的问题解决实战,废话不多说,直接上干货. 现象:新创建分布式实例后,分布式实例新增实例子set失败(报错与Hang住). 这个问题我们是这么发现的,需要 ...

  6. 机器学习实战——密度聚类算法

    机器学习实战--密度聚类算法 1 密度聚类 2 sklearn中的实现 1 密度聚类 密度聚类假设聚类结构能够通过样本分布的密集程度确定,通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接 ...

  7. 机器学习实战——层次聚类算法

    机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...

  8. 【机器学习项目实战】Python实现聚类(Kmeans)分析客户分组

    说明:这是一个机器学习实战项目(附带数据+代码),如需数据+完整代码可以直接到文章最后获取. 1.问题定义 在日常银行.电商等公司中,随着时间的推移,都会积累一些客户的数据.在当前的大数据时代.人工智 ...

  9. 【机器学习PAI实战】—— 玩转人工智能之综述

    摘要: 基于人工智能火热的大背景下,通过阿里云的机器学习平台PAI在真实场景中的应用,详细阐述相关算法及使用方法,力求能够让读者读后能够马上动手利用PAI搭建属于自己的机器学习实用方案,真正利用PAI ...

最新文章

  1. 测量ATMEGA8单片机IO口的输入输出内阻
  2. Python ln_Python入门教程(三):史上最全的Numpy计算函数总结,建议收藏!
  3. vue中使用transition标签底部导航闪烁问题
  4. 从知乎了解到,为什么Mysql禁用存储过程、外键和级联?
  5. 使用命令行工具mc连接SAP云平台Leonardo机器学习服务的AWS存储
  6. 数据库:MySQL高频面试题,大厂必备!
  7. “数”说系列洞察报告:30+女性专题——浪姐无价,又A又飒
  8. 《OOD启思录》—第2章2.6节角色与类
  9. nagios的实时监控
  10. 聚焦大数据与智能时代:2016中国大数据应用大会将于7月举行
  11. 关于EF Core中同一个实体被多次tracked的问题
  12. LED显示行业之知识大全3
  13. 分享给Python程序员的自学路线,不再背负小白名称
  14. 西蒙斯告诉你何为传奇人生 James Simons
  15. 【解决】ScriptableObject.ctor is not allowed to be called from a MonoBehaviour constructor...
  16. 国科大.高级人工智能.2022期末考试真题回忆版
  17. P44 break continue
  18. 《Verilog数字系统设计教程》夏宇闻 第四版思考题答案(第3章)
  19. NotePad++ 中文乱码,软件里设置后还是乱码
  20. glusterfs创建一个简单的volume

热门文章

  1. 小白零基础怎么学习Java?不要慌
  2. python tvtk库_PyCharm创建虚拟环境 和 TVTK库的安装
  3. web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...
  4. 【LeetCode笔记】72. 编辑距离(Java、字符串、动态规划)
  5. 【LeetCode笔记】560. 和为K的子数组(Java、前缀和、哈希表)
  6. 华为云域名注册_华为云域名专场钜惠,助推中小企业云速建站
  7. ueditor如何设置上传图片的高度宽度_上百张图片上传并对齐,你加班2小时没搞定,同事简单三步就完成...
  8. arm b bl 地址无关码_ARM汇编语言入门(六)
  9. android 指定语言的资源,Android国际化多语言切换
  10. JAVA中数字格式异常,java - Java数字格式异常 - 堆栈内存溢出