首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从日志中过滤掉相似的行

从日志中过滤掉相似的行
EN

Stack Overflow用户
提问于 2018-12-12 16:16:54
回答 1查看 122关注 0票数 0

我正在寻找一种非常简单的算法来从一个非常大的日志文件中过滤掉经常重复的行。日志中条目的结构大多是未知的。(首先我想处理systemd的journalctl的输出,但稍后我也想将它用于其他日志...)我剪切了条目的第一部分(包含时间戳和主机名),然后处理该行的其余部分。它可以包含许多可变字段,包括进程ID、另一个时间戳、序列号等,以及常量字符串。例如,我有很多这样的代码行:

代码语言:javascript
复制
anacron[29090]: Updated timestamp for job `cron.daily' to 2018-11-28
anacron[3330]: Updated timestamp for job `cron.daily' to 2018-11-29
anacron[6502]: Updated timestamp for job `cron.daily' to 2018-11-30
anacron[24515]: Updated timestamp for job `cron.daily' to 2018-12-01
anacron[12797]: Updated timestamp for job `cron.daily' to 2018-12-02

或者这些:

代码语言:javascript
复制
whoopsie[1827]: [12:29:38] Cannot reach: https://daisy.ubuntu.com
whoopsie[1827]: [12:59:22] Cannot reach: https://daisy.ubuntu.com
whoopsie[1827]: [12:59:23] Cannot reach: https://daisy.ubuntu.com
whoopsie[1827]: [21:22:53] Cannot reach: https://daisy.ubuntu.com
whoopsie[2147]: [17:48:49] Cannot reach: https://daisy.ubuntu.com
whoopsie[2147]: [17:48:49] Cannot reach: https://daisy.ubuntu.com
whoopsie[2147]: [17:48:49] Cannot reach: https://daisy.ubuntu.com

(“许多”大于稍后定义的值,根据日志文件的大小)

这是两组“相似”的线条。如果我知道这些行的变量部分在哪里(第一个示例中的进程ID和日期字段,第二个示例中的pid和时间),这些是可过滤的,但我不知道所有可能的变化。对我来说,来源是一个黑匣子。唯一可以确定的是,“固定”字段的数量大于变量。

我想找到它们(实际上我想从日志中过滤掉“噪音”),但我不知道该怎么做。我在找一个算法,而不是一个工具!

EN

回答 1

Stack Overflow用户

发布于 2018-12-12 18:28:08

这句话是模棱两可的:有多相似才是相似?输入和预期输出是什么?除非你能回答这些问题(理想情况下是通过编辑问题),否则任何答案都会包含大量的猜测。

让我们来看看容易摘到的果子:

乘法器N (>1) 连续行只有在很小的时间内不同,可以安全地压缩成1行,最后使用x N 乘法器

  • 行源可能非常有限(可能少于100行)。每个源的不同消息的数量也是有限的:守护进程通常会报告启动、操作结束和一些非常偶然的misc消息。您想要按需识别顶级消息源和顶级messages-per-source to 切换。

  • 过滤大量日志消息有点类似于过滤网络上的流量转储。网络专家是如何理解这一点的呢?做了wireshark&co做的:为了理解大量异构数据,允许交互式查询和过滤。一个简单的命令行工具将会失去全局。

现在来看实际的算法:

  1. 可以在一次通过中实现:

从空行开始读取一行,如果与前一行不同,则输出前一行;如果多次发现,则将其重数存储,否则增加保存的line

  • requires的重数为1更复杂,但可以近似为O(N log ),例如:

将所有行排序在一起(忽略时间字段)计算连续行之间的距离找到一个阈值,该阈值可以为您提供分组为10个组的所有行的90% (您可能希望调整%和group-count来查找适用于您的应用程序的设置)。允许筛选出所选的日志分析应用程序,其中有许多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53738719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档