前言:
指标和日志作为智能运维中最常见也最常接触到的两类数据来源,能够有效洞察系统行为和健康状态,为监控、告警等分析中心提供原始材料,从而以便进行后续的检测、分析、溯源、知识沉淀等动作。
在智能运维建设中,为了实现更高效的异常检测和快速根因定位,我们一直在探索能否通过算法和专家经验的融合,从而对这两类数据进行更智能化的分析。
随着银行业务的快速发展,系统体量已达成百上千,被管理对象高达几万至几十万,指标数量已然成为一个天文数字,而单个指标的异常却经常发生,如果每一个指标都要进行管理、检测,依照传统的调参方式会力所不及。
根据这类实际情况,我们在夏洛克指标解析中心里提供了用算法自动调优算法的能力,希望帮客户实现指标异常检测算法的自动化,减轻人力成本、提升运维效率。
简而言之,就是通过算法对指标历史数据特征进行学习。当异常出现时,为系统自动选择合适的检测算法对参数进行优化。
△某指标监测图
如上第一张图所示,某指标检测默认选择偏向于周期性检测的算法A,但检测出来的指标不具备周期性,大量指标偏离基带,因此会引发大量的误告。
而第二张图,经过夏洛克指标解析中心的算法自动调参优化,对算法B进行检测,同时再对参数和召回率做一个大致的预测,这样生成的算法基带更具合理性,减少系统误告的发生。
另外,在对单个指标异常进行检测的时候,对于该异常的重要级判断首先需要进行关联,即规则关联以及与其他相关指标关联判断。当然,在此之前要对指标做一定的治理,了解该指标的类别属性,如业务指标、基础架构指标、数据库指标等等,进而才能为后续的收敛、分析、建模等提供精准有效的数据支持。
在复杂冗余的日志治理中我们主推的是用日志聚类算法去加强智能化检测的能力。做日志聚类有个首要前提是对日志进行分词即对格式语义进行区分,然后通过文本相似度算法把不同的日志分到不同的类别上。这样的算法,可以帮助运维人员解决很多问题。如下所示。
△日志异常检测优化步骤
对聚类后的日志进行时间序列的转计算,根据其历史特征去判别是否有全新的日志格式出现。新的日志格式代表两种情况,一种是从未出现过的故障,一种是应用变更。这样作为运维人员,能够及时处置故障或检查原有规则是否已经无效,尽早完成修复和调整。
发现发生占特别小的日志,这类偶发日志中哪些值得关注?哪些不值得关注?用户不需要预先了解日志的详细含义,就可以自动过滤留下重要异常日志,经人工二次确认后及时安排维护。
关键字告警只存在有和没有的两种情况,一般情况下某类日志发生量不会很大,如网口通断,但如果检测到某类日志突然大量增加,可能发生了严重故障,这是关键字告警无法做到的。
是传统日志平台基于关键字和规则告警的补充,并不是替代。它能够帮助运维人员更准确地找到故障问题、精准定位。
并不是所有日志都适用于聚类检测算法,根据不同的日志类别属性进行筛选,如二进制的日志、Key Value的日志等,仍沿用原本的检测方法或其他检测方法效果会更好。
融合指标和日志是否可以一起为故障的根因定位提供更好的支持?这里我们分两个场景来进行实现。
1.交易指标异常分析
通过主交易指标(以下简称主指标),如交易量、延时、成功率等的异常检测告警,触发系统指标、基础架构指标和主指标之间的关联定位,同时触发交易维度和主指标之间的关联定位,了解谁是因谁是果,快速去帮助用户定位故障源头和原因。
2.日志调用链嵌码
在不改造日志的前提下,通过APM工具,如SkyWalking,将调用链信息嵌入交易日志中,实现交易日志的串联;再通过调用链的延时数据发现交易异常,自动关联交易日志,实现快速定位。
以上两种场景已在落地实践中,虽然这样的改造十分艰难,过程十分漫长,但我们相信经过双方共同协作努力,未来的运维效率一定会到非常不错的提升。而擎创夏洛克指标解析中心、日志精析中心、日智速析专家三大产品也会持续尝试新的思路方法,不断演进,为客户的运维数字化转型提供源源不断的助力。
更多运维思路和方法我们将持续更新,敬请期待~
随手关注,更新不迷路~