1

目标

我希望使用 RRDTool 从我们的 Web 应用程序的 apache/tomcat 访问日志中计算逻辑“用户活动”。

具体来说,我们想在一段时间内计算几个 url 模式的出现次数。

例子

我们有两个应用程序(称它们为“foo”和“bar”)

这些网址让我们感兴趣。它们表明用户何时“做了有趣的事情”。

/foo/hop
/foo/skip
/foo/jump

/bar/crawl
/bar/walk
/bar/run

基本上,我们想知道给定时间间隔(10 分钟、小时、天等)有多少用户:跳跃、跳过、跳跃、爬行、步行等。

参考/起点

这篇关于将访问日志导入 RRDTool 的文章似乎是一个有用的起点。 http://neidetcher.com/programming/2014/05/13/just-enough-rrdtool.html

但是为了澄清,这个例子直接使用访问日志,而我们想要少数 url 的“桶中”并计算“每个桶中的数量”

需要一些脚本..

我可以用 bash & grep & wc 来做到这一点——遍历模式,将输出发送到“中间结果”文本文件......但相信 RRDTool 可以用最少的“外部编码”来做到这一点

也就是说,我相信 RRDTool 可以用最少的“外部编码”来做到这一点——但我不清楚细节。

几点

  • 我提到“两个应用程序”是因为我们实际上是从具有不同日志文件格式的单独服务器上提供它们的。我想把它们放到同一个 RRA 文件中
  • 最终我想在仙人掌中报告这个;但是,最初,我想了解 RRDTool 详细信息

  • 愿意进行任何编码,但希望尽可能保持高效——包括管理和计算机资源。(通过管理,我的意思是:易于监控新实例)

  • 我对 RRDTool 非常陌生,并且正在 RTM'ing 中。(并浏览教程)。我已经习惯了关系数据库和电子表格等,并且不关心 RRA 格式的所有细微差别。

提前致谢!

4

1 回答 1

0

ABSOLUTE您可以为要跟踪的每个地址设置一个带有数据源类型的单独 RRD 文件。

然后你跟踪日志文件,每当你看到一个有趣的 url 时,你都会调用:

rrdtool update url-xyz.rrd N:1

数据源类型就像一个计数器,ABSOLUTE但每次读取它都会重置。您的计数器只会计数到 1,但这应该不是问题。

在上面的示例中,我使用N:的是访问日志中的时间戳,而不是时间戳。如果您不是实时执行此操作,您也可以使用它……但请注意,您不能同时更新同一个 rrd 文件两次。N:将在内部使用毫秒时间戳,因此可能会避免这个问题。

另一方面,累积具有相同时间戳的匹配日志条目可能更有意义,并且只有在日志文件上的时间戳更改时才使用该数字更新 rrdtool。

于 2015-03-12T23:12:09.947 回答