老杨说运维 | 如何快速进行日志异常检测和根因定位

2023-10-23 12:40

本文主要是介绍老杨说运维 | 如何快速进行日志异常检测和根因定位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

指标和日志作为智能运维中最常见也最常接触到的两类数据来源,能够有效洞察系统行为和健康状态,为监控、告警等分析中心提供原始材料,从而以便进行后续的检测、分析、溯源、知识沉淀等动作。

在智能运维建设中,为了实现更高效的异常检测和快速根因定位,我们一直在探索能否通过算法和专家经验的融合,从而对这两类数据进行更智能化的分析。

随着银行业务的快速发展,系统体量已达成百上千,被管理对象高达几万至几十万,指标数量已然成为一个天文数字,而单个指标的异常却经常发生,如果每一个指标都要进行管理、检测,依照传统的调参方式会力所不及。

根据这类实际情况,我们在夏洛克指标解析中心里提供了用算法自动调优算法的能力,希望帮客户实现指标异常检测算法的自动化,减轻人力成本、提升运维效率。

简而言之,就是通过算法对指标历史数据特征进行学习。当异常出现时,为系统自动选择合适的检测算法对参数进行优化。

 △某指标监测图

如上第一张图所示,某指标检测默认选择偏向于周期性检测的算法A,但检测出来的指标不具备周期性,大量指标偏离基带,因此会引发大量的误告。

而第二张图,经过夏洛克指标解析中心的算法自动调参优化,对算法B进行检测,同时再对参数和召回率做一个大致的预测,这样生成的算法基带更具合理性,减少系统误告的发生。

另外,在对单个指标异常进行检测的时候,对于该异常的重要级判断首先需要进行关联,即规则关联以及与其他相关指标关联判断。当然,在此之前要对指标做一定的治理,了解该指标的类别属性,如业务指标、基础架构指标、数据库指标等等,进而才能为后续的收敛、分析、建模等提供精准有效的数据支持。

一、日志治理中如何快准狠进行日志异常检测

在复杂冗余的日志治理中我们主推的是用日志聚类算法去加强智能化检测的能力。做日志聚类有个首要前提是对日志进行分词即对格式语义进行区分,然后通过文本相似度算法把不同的日志分到不同的类别上。这样的算法,可以帮助运维人员解决很多问题。如下所示。

 △日志异常检测优化步骤

  • NO.1:自动发现全新的日志格式

对聚类后的日志进行时间序列的转计算,根据其历史特征去判别是否有全新的日志格式出现。新的日志格式代表两种情况,一种是从未出现过的故障,一种是应用变更。这样作为运维人员,能够及时处置故障或检查原有规则是否已经无效,尽早完成修复和调整。

  • NO.2:自动按格式分类日志

发现发生占特别小的日志,这类偶发日志中哪些值得关注?哪些不值得关注?用户不需要预先了解日志的详细含义,就可以自动过滤留下重要异常日志,经人工二次确认后及时安排维护。

  • NO.3:弥补传统日志关键字告警的局限

关键字告警只存在有和没有的两种情况,一般情况下某类日志发生量不会很大,如网口通断,但如果检测到某类日志突然大量增加,可能发生了严重故障,这是关键字告警无法做到的。

  • NO.4:日志聚类检测的定位

是传统日志平台基于关键字和规则告警的补充,并不是替代。它能够帮助运维人员更准确地找到故障问题、精准定位。

  • NO.5:根据日志情况评估适用性

并不是所有日志都适用于聚类检测算法,根据不同的日志类别属性进行筛选,如二进制的日志、Key Value的日志等,仍沿用原本的检测方法或其他检测方法效果会更好。

二、如何实现故障的根因定位

融合指标和日志是否可以一起为故障的根因定位提供更好的支持?这里我们分两个场景来进行实现。

1.交易指标异常分析

通过主交易指标(以下简称主指标),如交易量、延时、成功率等的异常检测告警,触发系统指标、基础架构指标和主指标之间的关联定位,同时触发交易维度和主指标之间的关联定位,了解谁是因谁是果,快速去帮助用户定位故障源头和原因。

2.日志调用链嵌码

在不改造日志的前提下,通过APM工具,如SkyWalking,将调用链信息嵌入交易日志中,实现交易日志的串联;再通过调用链的延时数据发现交易异常,自动关联交易日志,实现快速定位。

以上两种场景已在落地实践中,虽然这样的改造十分艰难,过程十分漫长,但我们相信经过双方共同协作努力,未来的运维效率一定会到非常不错的提升。而擎创夏洛克指标解析中心、日志精析中心、日智速析专家三大产品也会持续尝试新的思路方法,不断演进,为客户的运维数字化转型提供源源不断的助力。

更多运维思路和方法我们将持续更新,敬请期待~

随手关注,更新不迷路~

这篇关于老杨说运维 | 如何快速进行日志异常检测和根因定位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267902

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)