linux - 自定义日志处理/解析

标签 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

在请求期间,我有很多记录点 - 应用基本上具有复杂的行为。这有助于我调试很多用户行为。

我想解析它的方式是我想使目录结构如下:

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

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

而且我还有其他目录,其中包含用户 ID,其中将包含该用户完成的请求的符号链接(symbolic link)。

第一个问题:这个结构是否正确?在我看来,它可以轻松快速地访问日志。之所以要用目录和文件,是因为我喜欢unix的做法,也试了一下(自己感受一下它的优缺点)

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

最佳答案

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

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

不是在日志文件中记录用户所做的事情,而是向其中任何一个发送一个事件(它们非常相似,选择你认为有更好文档/库的那个),然后你将绘制这些事件以更好地理解你的用户的行为。我最近经常这样做,以一种很好的方式显示数据,我使用了 rickshaw .

我建议这样做的关键点是,如果您采用文件路径,您仍然必须找到一种方法来理解您的数据,而图表将在这方面对您有很大帮助。此外,可视化是 keen.io 默认执行的操作,您可能仍想绘制图表,但这是一个好的开始。

希望这对您有所帮助。

关于linux - 自定义日志处理/解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882533/

相关文章:

bash - Kubernetes 部署 : preStop does not execute aws commands

bash - Shell 脚本反斜杠和空格参数

awk - 在 AWK 中循环关联数组时打印空行

php - 在 Ubuntu 16.04 上从 PHP 执行 PhantomJs 脚本

linux - 在 HPC 上自动测试来自 SVN 的二进制文件

linux - 共享内存页面和 fork

c++ - 是否可以通过 systemtap 探测器停止进程以便附加 gdb?

linux - 带有双星的 awk 语法错误 **

bash - awk大于小于但在设定范围内

c++ - sed 删除下划线并提升字符