SQL老司机,居然是这样智能挖掘异常日志

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
文件存储 NAS,50GB 3个月
简介: 提取异常日志是个大难题 面对海量的日志(TB乃至PB级别),如何从日志中挖掘出异常信息对于大部分的开发者而言是一个大难题。例如,判断机器的延时是否正常,部分request是否正常。通常,我们对于异常的数据,要及时的报警,以尽快的处理。

提取异常日志是个大难题

面对海量的日志(TB乃至PB级别),如何从日志中挖掘出异常信息对于大部分的开发者而言是一个大难题。例如,判断机器的延时是否正常,部分request是否正常。通常,我们对于异常的数据,要及时的报警,以尽快的处理。

通常我们是怎么搞得呢? 在以前,依赖于开发者的经验,来根据某些特定的特征,判断是否达到了阈值,例如根据延时是否达到了某个特定的值,或者http 响应码5xx的比例达到了某个阈值。这个阈值,依赖于资深的开发者的丰富的经验。

AI dev/ops

AI算法的迅猛发展,给异常日志挖掘提供了新的方向。大名鼎鼎的AI领域专家吴恩达(Andrew NG),在他所教授的Machine Learning课程中提供了一种Abnormal Detection算法。算法通过训练数据集,获得一个正态分布。然后检测目标数据是否落在了正态分布的边缘位置,如果落在了边缘位置,则认为是一个异常数据。

算法步骤:

  1. 确定要训练的feature,可以是单个指标,比如latency,也可以是复合指标,例如CPU/NetFlow
  2. 在训练数据集上,求得均值μ和方差σ^2
  3. 对新数据求方程P(x)= 
    image

接下来,我们介绍如何在SQL中使用该算法来检测异常。

日志服务提供的异常检测算法

以延时为例,我们来看哪些延时是异常的。 延时的分布一般是这样的:

不满足正太的需求,要把上述图形转化成正太分布,对latency 求对数:log(latency)

image.png

  • 值μ和方差σ^2:
* | select numeric_histogram(10,latency), stddev_pop(ln(latency)) as stddev,var_pop(ln(latency)) as variance ,avg(ln(latency)) as avg_ln, avg(latency) as avglatency

image.png

stddev即标准差
variance即方差
avg_ln即ln(latency)的均值
avglatency即latency的均值

  • 提取异常数据
| select latency  where  pow(e(), - pow((ln(latency) - 8.223) ,2)/2/0.3975) /sqrt(2*pi()) / 0.53  < 0.01 order by latency desc 

把方差标准差和均值带入公式,使用where筛选出来小于0.01的结果,即异常值。可以看到,获得的结果,明显大于军latency的均值。

image

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
23天前
|
测试技术 开发工具 git
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
为了高效地发现、定位和解决预发问题,闲鱼团队研发了一套异常日志问题自动追踪-定位-分发机制。这套机制通过自动化手段,实现了异常日志的定时扫描、精准定位和自动分发,显著降低了开发和测试的成本,提高了问题解决的效率。
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
|
15天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
2月前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
43 2
|
2月前
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
|
3月前
|
SQL 存储 缓存
高基数 GroupBy 在 SLS SQL 中的查询加速
本文详细介绍了SLS中的高基数GroupBy查询加速技术。
138 21
|
2月前
|
SQL 数据库
为什么SQL日志文件很大,该如何处理?
为什么SQL日志文件很大,该如何处理?
|
3月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
2月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
359 0
|
3月前
|
JSON 缓存 fastjson
一行日志引发的系统异常
本文记录了一行日志引发的系统异常以及作者解决问题的思路。
|
SQL 数据库 数据安全/隐私保护
sql server 高可用日志传送
原文:sql server 高可用日志传送 一. 日志传送概述     SQL Server使用日志传送,可以自动将主服务器的事务日志备份发送到一个或多个辅助数据库上。可选的监视服务器,记录备份和还原操作的历史记录及状态。
1015 0

相关产品

  • 日志服务
  • 下一篇
    DataWorks