日志文件分析:从值部分中提取信息部分

数据挖掘 文本挖掘 聚类
2021-10-13 07:34:42

我正在尝试在我们一种产品的多个日志文件上构建数据集。

不同的日志文件有自己的布局和内容;我成功地将它们组合在一起,只剩下一步......

事实上,日志“消息”是最好的信息。我没有所有这些消息的完整列表,基于这些消息进行硬编码是个坏主意,因为该列表每天都在变化。

我想做的是将标识文本与值文本分开(例如:“加载的文件XXX”变为(标识:“加载的文件”,值:“XXX”))。不幸的是,这个例子很简单,在现实世界中有不同的布局,有时还有多个值。

我正在考虑使用字符串内核,但它是用于集群的......并且集群在这里不适用(我不知道不同类型消息的数量,尽管它会太多)。

你有什么主意吗?

谢谢你的帮助。

PS:对于那些编程的人来说,这可能更容易理解。假设代码包含日志 printf("blabla %s", "xxx") -> 我想将“blabla”和“xxx”分开

3个回答

将每个字符串视为进程跟踪并应用 alpha 算法怎么样?这将为您提供一个图表,并且具有大量外边的节点很可能指向值。

您可以标记这些节点,并为每个新字符串解析/遍历图形,直到到达这些区域。

这似乎不是数据科学问题。但是有非常好的工具可以做到这一点,checkout:logstash、flume 和 fluentd。实际上,如果您希望能够以快速和“智能”的方式进行过滤,请从 ElastichSearch ( http://www.elasticsearch.org/overview/kibana ) 的人员那里查看 Kibana。这些工具足以以非常有效的方式解决您的问题。

如果您只是试图分离文本和数字信息,那么有一个基于正则表达式甚至只是字符串拆分的解决方案。

你甚至可以做一些事情,比如找到第一个数字字符,然后在此之前将文本分成两半。

使用正则表达式,您可以匹配所有跟随的数字字符。该模式将([0-9]+)带有全局标志。它会匹配所有的数字组,之后你可以对它们做任何事情。

Regex Tester非常适合玩这些东西。