显示访问日志分析

时间:2009-12-08 09:10:47

标签: logging mapreduce data-analysis capacity-planning

我正在做一些分析来自Catalyst Web应用程序的访问日志的工作。数据来自Web场前面的负载平衡器,总计每天约35Gb。它存储在Hadoop HDFS文件系统中,我使用MapReduce(通过Dumbo,很棒)来处理这些数字。

分析的目的是尝试建立使用情况配置文件 - 最常用的操作,每个操作的平均响应时间,响应是从后端还是缓存提供 - 用于容量规划,优化并设置监控系统的阈值。像Analog这样的传统工具会给我最多请求的URL或最常用的浏览器,但这些对我来说都没用。我不需要知道/controller/foo?id=1984是最受欢迎的网址;我需要知道/controller/foo的所有命中的命中率和响应时间是什么,所以我可以看到是否有优化或缓存的空间,并尝试估计如果此操作的命中突然加倍会发生什么。

我可以通过MapReduce轻松地将数据分解为每个时段的每个操作请求。问题是以可消化的形式显示它并挑选出重要的趋势或异常。我的输出格式为:

('2009-12-08T08:30', '/ctrl_a/action_a') (2440, 895)
('2009-12-08T08:30', '/ctrl_a/action_b') (2369, 1549)
('2009-12-08T08:30', '/ctrl_b/action_a') (2167, 0)
('2009-12-08T08:30', '/ctrl_b/action_b') (1713, 1184)
('2009-12-08T08:31', '/ctrl_a/action_a') (2317, 790)
('2009-12-08T08:31', '/ctrl_a/action_b') (2254, 1497)
('2009-12-08T08:31', '/ctrl_b/action_a') (2112, 0)
('2009-12-08T08:31', '/ctrl_b/action_b') (1644, 1089)

即,键是时间段,值是每个时间段(action, hits, cache hits)的元组。 (我不必坚持这个;这就是我到目前为止所做的。)

大约有250项行动。它们可以组合成较少数量的组,但在同一图表上绘制每个动作随时间推移的请求数(或响应时间等)可能不起作用。首先它会太嘈杂,其次绝对数字并不重要 - 对常用,轻量级,可缓存响应的请求增加100 req / min远不如100 req / min上升在一个很少使用,但昂贵(可能击中数据库)无法缓解的反应。在同一个图表中,我们不会看到对少量使用操作的请求的更改。

静态报告不是很好 - 一个巨大的数字表很难消化。如果我按小时汇总,我们可能会错过重要的每分钟变化。

有什么建议吗?你是怎么处理这个问题的?我想一种方法是以某种方式强调请求率或每个操作的响应时间的重大变化。滚动平均值和标准差可能会显示这一点,但我可以做些更好的事情吗?

我可以生成哪些其他指标或数据?

0 个答案:

没有答案