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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络的ip分配,IP地址分配_网络设备技术应用_太平洋电脑网PConline

2.2 IP地址分配IPv4地址分配初期采用基于类别的方式,有3类主要方式:A、B和C以及2种特殊的网络地址D和E。*类型A地址:其中前7bit用于网络标识,后24bit用于主机标识,A类地址可容纳128个网络,任意A类网络中可…

大数据成长之路:谈谈那些必须学习的Linux基础知识

作者| Roy瑞士责编| Carol封图| CSDN│下载于视觉中国这里主要介绍学习大数据过程中用到的Linux基础知识,现在主攻的方向是大数据开发,欢迎大家共同交流。环境推荐安装VMware虚拟机并安装CentOS操作系统,具体资源的下载和安装可以查到&#x…

html选中后当前变色,JS代码实现表格选中后变色操作有哪些代码?

【实例代码】html xmlnshttp://www。w3。org/1999/xhtml head title无标题页-学无忧(www。xue51。com)/titlescript languagejavascript var searchResultnew Array();//鼠标滑过时显示背景色 //改变背景色和边框颜色的方法function colorChange(table,color,color2){table。st…

字符串对象数组集合非空判断

String 字符串 //直接用字符串调用方法 str.isEmpty() 如果为null则会抛出异常 if (StringUtils.isEmpty(str)){// "" 和null均判断为空System.out.println("string为空"); }对象 //第1种:if (Objects.isNull(null)){ //nullSystem.out.println(&quo…

数据可用不可见!揭秘蚂蚁区块链摩斯安全计算平台

“数据安全”与“隐私泄漏”制约数字经济长期发展 在新的商业智能时代,已形成广泛的共识:数据是最基础的生产资料,各个行业与企业对于数据的利用也步入成熟期。可见的未来,数据利用的深度和广度将进一步升级,进入跨机…

如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!

作者| 沉默王二责编| Carol封图| CSDN│下载于视觉中国从 10 年前我开始写第一行 Java 代码至今,一直觉得 null 在 Java 中是一个最特殊的存在,它既是好朋友,可以把不需要的变量置为 null 从而释放内存,提高性能;它又是…

计算机优化英语,英语对计算机专业的重要性及如何提高英语水平

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼计算机研发人员要掌握的专业英语要求教高,必须掌握大量的专业术语和缩略语; 熟练掌握语法和惯用法的表达方式和功能; 能阅读英文文档和技术资料,阅读熟读在100词/分钟以上; 能借助字典翻译专业技术图书; 能使…

K8s中Pod健康检查源代码分析

了解k8s中的Liveness和Readiness Liveness: 表明是否容器正在运行。如果liveness探测为fail,则kubelet会kill掉容器,并且会触发restart设置的策略。默认不设置的情况下,该状态为success. Readiness: 表明容器是否可以接受服务请求。如果re…

获取 当前日期、当前时间、前一天日期

/*** 获取前一天日期** return*/public String getYesterday() {Calendar calendar Calendar.getInstance();calendar.add(Calendar.DATE, -1); //得到前一天Date date calendar.getTime();DateFormat df new SimpleDateFormat("yyyy-MM-dd");return df.format(da…

CSE:阿里在线应用如何演进成Serverless架构

Cloud Service Engine,简称CSE,是中间件部门研发的面向通用Serverless计算的中间件产品,目标是具备AWS Lambda的各种优势,同时可以解决AWS Lambda的关键技术缺陷。 AWS Lambda如果用于核心业务,可能会有以下缺陷&…

郫都区计算机学校,成都郫县好升学的计算机学校有哪些

【郫县好一、成都郫县希望1.成都郫县希望职业学校/招生代码:512632.成都郫县希望职业学校/学校简介:成都郫县希望职业学校学校是由郫都区教育局批准成立的,由希望集团投资创办的一所全日制、专业化的民办中等职业学校, 由郫都区教育局主管。学…

技术大佬:今年还学Python,傻了吧? 网友:就你敢说!

随着AI的兴起,Python彻底火了。据Stack Overflow调研报告:Python的月活用户已超越了Java、成为第一,全民Python已为“大势所趋”。那么,程序员有必要追捧Python吗?Python的真香是真香吗?技术大佬&#xff1…

基于Tablestore的Wifi设备监管系统架构实现

Wifi设备监管 某知名跨国公司,在全球范围内拥有大量园区,园区内会有不同部门的同事在一起办公。每个园区内都要配备大量的Wifi设备从而为园区同事提供方便的上网服务。因此,集团需要一套完善的监管系统维护所有的Wifi设备。 公司通过监管系…

聊聊安卓折叠屏给交互设计和开发带来的变化

很多年前,前端同学都觉得PC端的适配(兼容处理)难,都认为移动端的时代适配会容易得多,也无需考虑那么多的事情。事实并非如此,移动端的时代同样面临着各种适配的处理。特别是刘海机的出现,前端需…

mybatis批量插入数据到Oracle中的两种方式

文章目录1. 第1种2. 第2种1. 第1种 <insert id"addList" parameterType"java.util.List" useGeneratedKeys"false"> INSERT ALL <foreach item"item" index"index" collection"list"> INTO T_APPLAU…

逻辑运算是计算机实现计算器基础,第1章__计算机的发展与运算基础.ppt

第1章__计算机的发展与运算基础例【1-1】 按照32位浮点数标准格式&#xff0c;求数 N20110.1011101在计算机中表示的形式。 解&#xff1a;N20110.1011101    2000000110.10111010000000000000000 其中&#xff0c;因为浮点数为正数&#xff0c;所以S0&#xff0c; M1011101…

你以为这样写代码很6,但我看不懂

来源 | 沉默王二责编| Carol封图| CSDN│下载于视觉中国为了提高 Java 编程的技艺&#xff0c;作者最近在 GitHub 上学习一些高手编写的代码。下面这一行代码&#xff08;出自大牛之手&#xff09;据说可以征服你的朋友&#xff0c;让他们觉得你写的代码很 6&#xff0c;来欣赏…

在闲鱼,我们如何用Dart做高效后端开发?

背景 像阿里其他技术团队以及业界的做法一样&#xff0c;闲鱼的大多数后端应用都是全部使用java来实现的。java易用、丰富的库、结构容易设计的特性决定了它是进行业务开发的最好语言之一。后端应用中数据的存储、访问、转换、输出虽然都属于后端的范畴&#xff0c;但是其中变…

解决 mysql>com.mysql.jdbc.PacketTooBigException: Packet for query is too large (12073681 > 4194304)

com.mysql.jdbc.PacketTooBigException: Packet for query is too large 异常解决办法&#xff1a; 原因&#xff1a; 查询出的数据包过大&#xff0c;默认情况下mysql 的字段容量不够装&#xff0c;所以抛出此异常 解决办法&#xff1a; 第一步&#xff1a;首先通过SQLyog客…

MySQL8.0 - 新特性 - 安全及权限相关改进

MySQL8.0里引入了不少关于权限的改动&#xff0c;从这些改动可以看出来&#xff0c;权限管理更加的规范和遍历了&#xff0c;这和我们之前为rds mysql增加了大量权限管理很类似&#xff0c;想来Oracle也是通过这些改动为其云业务服务的吧。 本文主要简述下部分相关的权限改动&…