16

我最近可以访问大量服务器日志数据(在新工作中)。我在大学时有一些机器学习的经验。日志数据包括服务器日志、数据库访问日志等。我想知道可以从这样的数据中进行什么样的学习。

我尝试的一件小事是根据过去一周的数据预测一天中某个小时的请求数量,这看起来不错,但这有点微不足道。所以,

  • 从这些数据中可以进行什么样的学习?
    • 可能是根据以前垃圾邮件发送者的某些使用模式来预测 IP 对广告进行垃圾邮件点击的概率(是的,该公司对此很感兴趣)?
    • 可能正在预测什么时候流量会猛增。
  • 是否有任何现有的工具/项目专门利用?
  • 有什么有趣的资源/论文谈论类似的事情吗?
  • 此外,服务器上特定时间与数据相关的进程活动。这对学习有用吗?
4

1 回答 1

28

看看 Wei Xu et al (2010) Experience on Mining Google's Production Console Logs 和他们引用的工作。简而言之,他们:

  1. 从源代码中提取日志模板(例如“Writing to file %s”)以从日志中提取标识符(日志中与 %s 对应的东西是标识符)。他们使用某些启发式方法来区分标识符和非标识符(例如时间)。
  2. 使用值之间的比率而不是原始数字(例如,失败和所有提交的比率)
  3. 使用主成分分析来发现此类特征向量中的异常。

您可能无法做到 1。但也许您可以提取编写自己的“解析器”的变量。

DARPA也面临着在此类数据中发现攻击的挑战,但那是近 15 年前的事了。

有一些像splunk这样的工具,但除了一个漂亮的界面之外,除了简单的搜索和过滤之外,它们并没有提供太多功能。更新:prelert有一个异常检测插件。

我不知道更多。如果您发现其他任何东西,请告诉我。

所以我会做什么:

  1. 从日志中提取特征/变量

您可能无法像 Xu 那样访问生成消息的源代码,但我假设大部分日志可以被少数模式覆盖(例如,所有防火墙日志都将具有相同的模式)。您可以编写一个正则表达式解析器,从这些日志中提取特征(例如,在某个时间连接被拒绝)。

  1. 尝试异常检测(PCA,或者只是单独偏离平均值)并对其进行预测。
于 2012-10-22T13:41:49.717 回答