机器学习服务器日志数据

时间:2012-08-26 10:44:57

标签: logging machine-learning

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

我尝试过的一件小事就是根据过去一周的数据预测当天某个小时的请求数量,这似乎没问题,但这有点微不足道。所以,

  • 从这些数据中可以做什么样的学习?
    • 根据之前垃圾邮件发送者的一些使用模式,可能会预测知识产权对广告进行垃圾邮件点击的可能性(是的,该公司是否会这样做?)
    • 可以预测交通可能会在什么时候出现。
  • 是否有专门利用的现有工具/项目?
  • 有哪些有趣的资源/论文谈论类似的东西?
  • 此外,数据与服务器上超过一定时间的流程活动有关。这对学习有用吗?

1 个答案:

答案 0 :(得分:26)

看一看 Wei Xu等(2010)Experience on Mining Google's Production Console Logs  以及他们引用的工作。简而言之:

  1. 从源代码中提取日志记录模板(例如“写入文件%s”)以从日志中提取标识符(日志中对应于%s的内容是标识符)。他们使用某些启发式方法来区分标识符和非标识符(例如时间)。
  2. 使用值之间的比率而不是原始数字(例如,失败和所有提交的比率)
  3. 使用主成分分析来发现此类特征的向量中的异常。
  4. 你可能做不到1.但也许你可以提取编写自己的“解析器”的变量。

    此外,还有一个DARPA challenge来发现此类数据中的攻击,但那是近15年前的事了。

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

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

    那我该做什么:

    1. 从日志中提取功能/变量

      您可能无权访问生成消息的源代码,但我认为大部分日志可以被少量模式覆盖(例如,所有防火墙日志都具有相同的功能)图案)。您可以编写一个正则表达式解析器从这些日志中提取功能(例如,某个时候某个连接被拒绝)。

    2. 尝试异常检测(PCA,或者只是偏离它们的平均值)并对它们进行预测。