日志聚类引擎的探索

1. 背景

1.1 异常分支监控的重要性

异常分支是什么:在程序执行过程中,由于某些原因(如错误的输入、不符合预期的操作、资源不可用等)导致程序未按照正常的控制流程继续执行,而是进入了一个特殊的处理路径。

在代码中对异常分支进行监控具有非常重要的意义:

  1. 提高系统稳定性:

    异常分支是代码中未按预期执行的部分,可能导致系统崩溃或业务功能异常。通过监控这些分支,可以及时发现问题,从而采取措施避免系统故障,提高整体系统的稳定性。

  2. 快速问题定位和修复:

    当异常发生时,如果有针对异常分支的监控,开发和运维团队可以迅速定位问题的根源,减少排查问题所花费的时间。这样可以更快地进行问题修复,降低对业务的影响。

  3. 预防性维护:

    异常分支监控不仅可以用于事后分析,还可以用于预测潜在问题。通过分析监控数据中的异常模式,可以提前识别出可能会引发严重问题的趋势,并在问题发生之前进行预防性维护。

1.2 如何对异常分支监控

在我们看来,监控的主要作用是:实时持续观察和分析目标对象,并在出现异常时自动触发报警。

我们先看看一小段代码片段:

 

csharp

代码解读

复制代码

private void example1() { try { doMethod(); } catch (BussinessException bussinessException) { // 异常分支 } } private void example2() { if (doMethod() == null) { // 异常分支 } }

上述异常分支中,基于我们现在的能力,我们该怎么监控呢?

  • 加Prometheus打点(metric counter)?不可行!原因如下:

    • 并非所有异常分支都需要通过打点来增强感知。例如,参数校验异常通常不需要这样做。
    • 如果将过多的异常分支都通过打点进行监控,这将对监控平台造成负荷,进而可能导致瓶颈问题。
    • 在打点之前,必须先定义相关指标,这一过程既繁琐又耗时,从而降低了编码效率。
  • 向外抛异常?不可行!原因如下:

    • 并非所有异常分支都适合直接抛出异常。
  • 日志记录?可行但有缺陷!原因如下:

    • 日志只能做事后分析问题,不能发现异常时自动触发报警

结论:当前,我们没有一个很好的方法去对异常分支进行监控

1.3 日志聚类引擎引出

一个令人欣慰的方面是,我们按照编码习惯和要求,在异常分支都需要记录error日志。鉴于此,我们可以通过加强对日志的监控来实现对异常分支的监控,从而提高系统的稳定性。

图1

然而,目前的日志分析主要依赖于人工操作,这种方法不仅效率低下,而且可靠性也不高。为了实现对日志的高效且可靠监控,我们首先需要具备以下能力:

  • 能够对日志进行有效分类,这样我们就能迅速把握日志的全貌。

  • 具备按时间顺序保存分类数据的能力,从而便于我们对数据进行趋势分析。

  • 具备自动报警的能力,能够在新类别的异常日志出现或数据趋势发生波动时及时发出报警,这样我们可以快速感知并响应潜在的问题。

根据上述分析,我们计划开发一套名为“日志聚类引擎”的工具。该工具将具备对日志进行分类的能力,帮助我们有效地分析日志数据。此外,它还能自动识别异常并触发报警,从而提高我们对系统状况的监控和响应速度。

2. 难点与挑战

开发之前,我们先盘一盘开发一套日志聚类引擎的难点与挑战

2.1 该分哪几类

📌面对一堆日志,怎么确定有哪几类呢,谁和谁又该归到一类呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值