一眼看尽上亿日志-日志服务(SLS)智能聚类(LogReduce)

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 提供实时日志智能聚类(LogReduce)功能,根据日志的相似性进行聚类,快速掌握日志全貌,也不用担心重要信息被淹没在海量日志中,为系统稳定运行保驾护航!

业务的高速发展,对系统稳定性提出了更高的要求,各个系统每天产生大量的日志,你是否曾担心过:

  • 系统有潜在异常,但被淹没在海量日志中
  • 机器被入侵,有异常登录,却后知后觉
  • 新版本上线,系统行为有变化,却无法感知

这些问题,归根到底,是信息太多、太杂,不能良好归类,同时记录信息的日志,往往还都是无Schema,格式多样,归类难道更大。

现在日志服务,提供实时日志智能聚类(LogReduce)功能,根据日志的相似性进行归类,快速掌握日志全貌,主要功能和特性:

  • 支持任意格式日志:Log4J、Json、单行(syslog)
  • 亿级数据,秒级出结果
  • 日志经任意条件过滤后再Reduce
  • 对Reduce后Pattern,根据signature反查原始数据
  • 不同时间段Pattern比较
  • 动态调整Reduce精度

主要应用场景:

  • DevOps(问题定位、异常检测、版本回归等)
  • 安全、入侵检测
  • 审计

功能演示

接下来,我们以Devops场景为例,看看LogReduce如何快速定位应用故障。

排障实战

线上发生异常的时候,往往会打印大量的错误日志,在下图中,是系统请求堵塞情况下,系统记录的日志,短短5分钟记录了3千多万行错误日志,而图中的两个尖峰到底是哪些日志突涨引起的?发生异常的根源又是什么?
image

通常的处理方式,总是不停过滤,排除无关错误日志,如:

ERROR not WARNING not quota not InternalServerError not sync not RPCChannelBase.cpp not tcpcomponent.cpp  not easy_connection.c

排查了N个条件后,发现出现了"queue full"的错误,而这只是一个表象,到底什么原因导致队列堵塞呢?看来,还需要再过滤排查。
image

然后,有了”日志聚类“功能后,只要一次点击,通过LogReduce快速聚类,结果一目了然:

  • 最多的错误,是3000W+多条queue full,是堵塞的表象
  • 其次,是写入quota超过限制的错误,和堵塞无关
  • 接着,底层网络请求出现timeout,对于队列模型,大量的timeout很容易引起堵塞
  • 最后,第四类日志pattern中,显示访问某个服务,获取worker访问地址出现timeout,从pattern中,可定位问题机器的ip和端,直接确定异常根源。
    image

通过以上简单例子,可以看到,海量日志经LogReduce处理后,异常归类非常清楚,大大提高故障排查效率。

其他功能介绍

通过Pattern反查原始数据

在进行LogReduce时,相同pattern中变化部分(变量)会被"*" 号代替,SLS在进行reduce的时候,内部会为每条日志标记一个signature,通过signature可以反查原始日志, 如:
image

点击子Pattern count连接,查看原始日志。
image

Reduce精度动态调整

不同日志特征不尽相同,默认相似度计算,不一定能完全满足,可能导致聚类结果过于粗略或细节太多,在这种情况下,可以通过动态聚类精度,获取/隐藏更多细节。
image

Pattern对比

在新版本上线,往往希望知道,有哪些新出现的日志类别,哪类日志在数量上有明显的抖动,这样的版本回归对比需求,可以使用LogReduce + cmp来满足(控制台后续会提供LogCompare的专门页面)。

ERROR | select 
                v.signature,  
                v.pattern, 
                coalesce(v.cmp[1],0) as count_now, 
                coalesce(v.cmp[2],0) as count_before, 
                coalesce(v.cmp[1],0) - coalesce(v.cmp[2],0) as count_diff 
                    from (
                        select 
                            p.signature as signature ,
                            arbitrary(p.pattern) as pattern , 
                            compare(p.count,300) as cmp 
                            from 
                                (select log_reduce() as p from log) group by p.signature
                        )v  order by count_diff desc

更多类型日志场景

Syslog

/var/log/messages作为系统核心日志文件,记录了系统运行时重要信息,如磁盘、网络、内存等各类硬件错误信息,也包括root权限执行的各命令,系统登录等重要事件,对于故障诊断、入侵检测都是首要关注的文件。
同时,也由于日志内容复杂多样,格式不统一,未过滤定义的事件,往往容易淹没在海量日志中。通过LogReduce,可快速合并相似pattern,发现异常事件。

如下图中,将几百万事件快速聚合成几十个Pattern后,一眼就能看到网卡异常信息。
image
image

Log4J日志

大量Java程序,使用Log4J记录日志,下图显示一个java应用的最近15分钟主要的错误日志分类。
image

Sql日志

从SQL的访问日志,可以过滤出延时超过一定阈值的日志,通过聚类后发现延时高的sql主要有2类,调查后发现,其中一类是数据库的索引没有正确设置导致。
image

通过以上样例可以发现,日志服务(SLS)提供的日志聚类功能,对于日志的样式无任何限制,只会根据日志相似性,提取出通用Pattern,快速获取日志的整体概览。

后记

围绕日志,挖掘其中更大价值,一直是我们团队所关注。在原有日志实时查询基础上,今年SLS在DevOps领域完善了上下文查询、实时Tail和智能聚类,以提高问题调查效率;同时在日志分析上,提供多种时序数据的异常检测和预测函数,来做更智能的检查和预测;最后,数据分析的结果,可以触发报警,并调用webhook进行关联行动。
image

在日志智能聚类上,后续我们计划:

  • 根据Pattern的频率变化,结合机器学习算法,自动检测出异常Pattern
  • 提供LogReduce cmp函数并集成在控制台,简化复杂sql的编写
  • 加入反馈机制,如对reduce结果打分,以提高reduce的准确度

产品链接
http://www.aliyun.com/product/sls

用户交流群
image

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
阿里云日志服务(SLS)推出智能分析助手 SLS SQL Copilot,融合 AI 技术与日志分析最佳实践,将自然语言转换为 SQL 查询,降低使用门槛,提升查询效率。其具备原生集成、智能语义理解与高效执行能力,助力用户快速洞察日志数据价值,实现智能化日志分析新体验。
211 1
|
2月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
301 30
|
6月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
785 54
|
7月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
533 53
|
8月前
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
811 13
|
9月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
415 5
图解MySQL【日志】——Redo Log
|
8月前
|
缓存 Java 编译器
|
8月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
SAE(Serverless应用引擎)是阿里云推出的全托管PaaS平台,致力于简化微服务应用开发与管理。为满足用户对可观测性和运维能力的更高需求,SAE引入Sidecar容器技术,实现日志采集、监控指标收集等功能扩展,且无需修改主应用代码。通过共享资源模式和独立资源模式,SAE平衡了资源灵活性与隔离性。同时,提供全链路运维能力,确保应用稳定性。未来,SAE将持续优化,支持更多场景,助力用户高效用云。
|
8月前
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
1041 0

热门文章

最新文章

相关产品

  • 日志服务