自定义日志处理/解析

时间:2013-07-26 13:25:41

标签: linux bash awk grep go

我有这样的日志格式:

[26830431.7966868][4][0.013590574264526367][30398][api][1374829886.320353][init] 
  GET /foo
  {"controller"=>"foo", "action"=>"index"}

[26830431.7966868][666][2.1876697540283203][30398][api][1374829888.4944339][request_end] 
  200 OK

使用这样的模式构建条目:

[request_id][user_id][time_from_request_started][process_id][app][timestamp][tagline]
  payload

Durring请求我有很多点我记录的东西 - 应用程序基本上有复杂的行为。这有助于我调试很多用户行为。

我想解析它的方式是我希望有这样的目录结构:

req_id
  |
  |----[time_from_request_started][process_id][timestamp][tagline]
  |
  etc

基本上每个目录都有基于req_id的名称,文件的名称是其余的标语。这些文件将包括有效负载。

此外,我还有其他目录,包含用户ID,其中包含要由此用户请求的符号链接。

第一个问题:这个结构是否正确?在我看来,它可以轻松实现快速日志访问。我想使用目录和文件的原因是我喜欢unix方法,并尝试它(自己感觉它的缺点和优点)

第二个问题:使用ruby来创建它我没有问题。但我想学习一些更适合这种情况的新工具。我正在考虑使用unix工具(管道,awk等)来实现这一点,或者在golang中编写解析器,我现在正在学习(甚至有时间实现简单的map reduce)。 什么工具最适合这个?

2 个答案:

答案 0 :(得分:1)

我不会将日志存储在目录中以查看用户的行为。

根据您想要跟踪的行为,您可以使用不同的工具。其中一个可能是mixpanelkeen.io

不是记录用户在日志文件中执行的操作,而是将事件发送给其中任何一个(它们非常相似,选择您认为具有更好docs / lib的那个),然后您将绘制这些事件以更好地理解您的用户的行为。我最近做了很多,以我用rickshaw的方式显示数据。

我建议这一点的关键点在于,如果你走文件路线,你仍然需要找到一种方法来理解你的数据,这些图形将帮助你做很多事情。此外,可视化是keen.io默认情况下,你可能仍然想要做你的图,但这是一个良好的开端。

希望这会有所帮助。

答案 1 :(得分:0)

  

这种结构是否正确?

只有您可以知道,它直接取决于如何访问和使用数据。

  

哪种工具最适合这个?

您可能可以使用UNIX工具来实现这一目标,但通过编写本文来练习Go技能也是一个很好的练习。它也可以更具扩展性。