开源脚本日志分析:用于将 stderr 日志消息分成几组(正常错误与异常错误)或查看趋势(我们收到的某条消息越来越少,而收到的某条消息越来越多)的工具

开源脚本日志分析:用于将 stderr 日志消息分成几组(正常错误与异常错误)或查看趋势(我们收到的某条消息越来越少,而收到的某条消息越来越多)的工具

想象一下,一些 Linux 系统有各种各样的脚本(主要是 PERL,但可以是任何写入 STDERR 的脚本),这些脚本由具有略微不同需求的不同用户运行数百次。

每次运行脚本时,都会保留输出和警告/错误 (stderr) 的日志。这意味着会累积数千条日志。

用户会犯错误。开发人员也并不总是能写出干净的代码,等等。

我们希望从日志中了解正在发生的事情,既可以(从编程上)了解每种情况下的情况,也可以(从管理上、分析上)了解一段时间内的趋势。

这个问题也可以在 web 服务器/cgi 上下文中考虑,因为它通常会生成数百次脚本运行,但我并不是在寻找 apache 访问/错误日志特有的解决方案。

一般来说,有哪些免费/开源软件工具可以用来识别和分析来自这样的日志集合(其中每个日志代表一个程序的一次运行)的异常输出?

有用的功能可能包括:

  • 可以将本次运行的 stdout/stderr 与历史输出​​进行比较,并确定 stdout 或 stderr 的哪些部分不寻常或值得注意
  • 可以通过将所有日志以纯文本形式存储来实现“压缩”,因为无需存储相同的错误 100 次或更多次
  • 可以分析整个商店的趋势(此消息出现的次数比过去少或多)以及计数(最常见的错误是这些)
  • 具有某种可浏览的用户界面,带有图形和数据导出功能

例如,可以获取所有来自 stderr 的日志,对其进行 cat 处理,然后通过 sort 和 uniq -c 运行它们,再进行 sort,以从最不常见到最常见列出错误字符串。还可以开始将日志转​​储到某种 SQL 数据库中。

这可能会成为工具的构建块,但也许已经有完整的软件包可以做到这一点,甚至更多。所以我想我会问一下其他人使用什么。

您是否为此类事情开发了内部工具,或者是否有好的开源替代品?

答案1

这听起来像Splunk可以很好地满足您的许多需求(如果不是全部的话)。运行并进行评估相当容易。如果您已经考虑过它,也许可以评论一下为什么它不适合您的需求。

干杯

答案2

我的想法是:使用小(http://opensource.eyemg.com/Petit) 来分析,而不是 uniq。日志可以以 .gz 格式存储,因此以下内容可能实现您的前 3 个目标,并且它是 GPL。没有图形界面或导出概念。

zcat logfile.gz | petit --hash

或者

zcat logfile.gz | petit --dgraph

相关内容