跳转到主要内容

从Apache风格的日志中计算APDEX。

项目描述

从Apache风格的日志中计算APDEX。

概述

解析Apache风格的日志并生成针对网站开发人员受众的统计数据

  • APDEX(应用程序性能指数,见 http://www.apdex.org)比率(图表化)

    因为您想了解您的用户有多满意。

  • 点击次数(图表化)

    因为当周围没有人时,实现100%的APDEX很容易。

  • HTTP状态代码,可选的每个错误状态代码的最常见URL的详细输出,以及它们的最常见引用者

    因为您忘记更新指向那个重命名的条件性使用的浏览器兼容性javascript的链接。

  • 最热页面(使用渲染时间最多的页面)

    因为您想了解在哪里投资时间可以得到最高的用户体验改进。

  • ERP5网站:按模块统计,模块和文档查看分开

    因为模块和文档类型在用法模式上并不平等。

一些解析性能数据

在2.3Ghz Corei5上,apachedex达到97000行/秒(pypy-c-jit-62994-bd32583a3f11-linux64)和43000行/秒(CPython 2.7)。这些是在包含3000000次点击的日志文件上进行的测量,设置了3 –skip-base,1 –erp5-base,3 –base和–default。 –*base值与下面的示例中提供的相似。

APacheDEX不是什么

APacheDEX不能像AWStats、Google Analytics(等)那样生成网站观众统计。

APacheDEX不能像Zabbix、Cacti、Ganglia、Nagios(等)那样监控网站可用性和资源使用情况。

要求

依赖项

因此,apachedex除了标准的python 2.7安装外,没有其他严格依赖。但生成的输出需要一些来自其他项目的javascript文件

  • jquery.js

  • jquery.flot.js

  • jquery.flot.time.js(官方flot插件)

  • jquery.flot.axislabels.js(第三方flot插件)

如果你已经安装了apachedex(使用egg或通过发行版的包),你应该已经有了它们。如果你是从仓库运行,你需要先获取它们

python setup.py deps

输入

所有默认的“合并”日志格式字段都受到支持(可以很容易地添加更多),包括%D。

必需的字段是(以任何顺序)%t%r(请求的URL)、%>s%{Referer}i%D。只需告诉apachedex你的Apache日志配置的值(参见–logformat参数文档)。

输入文件可以是未压缩的或压缩的

  • bzip

  • gzip2

  • xz

输入文件名“-”表示stdin。

输出

输出是HTML + CSS + JS,因此你需要一个网络浏览器来阅读它。

输出文件名“-”表示stdout。

使用方法

一些使用示例。有关其他选项,请参阅嵌入的帮助(-h/–help)。

最基本的使用

apachedex --default website access.log

生成独立的输出(例如,适合包含在邮件中)

apachedex --default website --js-embed access.log --out attachment.html

包含两个网站请求的日志文件,其中希望得到单个统计信息,并且忽略这些基本URL之外的访问

apachedex --base "/site1(/|$|\?)" "/site2(/|$|\?)"

包含要忽略的网站部分的日志文件。顺序无关紧要

apachedex --skip-base "/ignored(/|$|\?)" --default website

以上两种示例的混合。顺序很重要!

apachedex --skip-base "/site1/ignored(/|$|\?)" \
--base "/site1(/|$|\?)" "/site2(/|$|\?)"

使用urlencoded字符串匹配非ASCII URL

apachedex --base "/%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91(/|$|\\?)" access.log

通过将带有“+”前缀的标题与正则表达式交织在一起来命名网站,以便报告看起来不那么令人生畏(标题必须在正则表达式之前)

apachedex --default "Public website" --base "+Back office" \
"/backoffice(/|$|\\?)" "+User access" "/secure(/|$|\\?)" access.log

保存分析结果以便快速重用

apachedex --default foo --format json --out save_state.json --period day \
access.log

虽然不是必需的,但强烈建议提供–period参数,因为混合不同周期(固定或从数据自动检测)保存的状态会产生难以阅读的结果,并且如果加载数据被转换为更大的周期,可能会引起问题。

继续保存的分析,更新收集的数据

apachedex --default foo --format json --state-file save_state.json \
--out save_state.json --period day access.2.log

从两个状态文件生成HTML输出,聚合它们的内容而不解析更多的日志

apachedex --default foo --state-file save_state.json save_state.2.json \
--period day --out index.html

配置文件

提供以“@”为前缀的文件名将文件的 内容放在该参数的位置,递归。每个文件都是相对于引用文件的包含目录加载的,或者对于命令行来说是当前工作目录。

  • foo/dev.cfg

    --error-detail
    @site.cfg
    --stats
  • foo/site.cfg

    --default Front-office
    # This is a comment
    --prefix "+Back office" "/back(/|$|\?)" # This is another comment
    --skip-prefix "/baz/ignored(/|$|\?)" --prefix +Something "/baz(/|$|\?)"
  • 命令行

    apachedex --skip-base "/ignored(/|$|\?)" @foo/dev.cfg --out index.html \
    access.log

这相当于

apachedex --skip-base "/ignored(/|$|\?)" --error-detail \
--default Front-office --prefix "+Back office" "/back(/|$|\?)" \
--skip-prefix "/baz/ignored(/|$|\?)" --prefix +Something "/baz(/|$|\?)" \
--stats --out index.html access.log

便携性说明:不建议在配置文件中使用包含目录元素的路径,因为它不可移植。这可能会稍后改变(例如:决定导入路径是URL并应用其规则)。

周期

当提供–period参数时,两个相关设置受到影响

  • 图表中每个点所代表的周期(对访问图表最重要,因为它表示该周期内的访问次数)

  • 每列代表的周期(按日期的状态代码、每天的收入...)

此外,当没有提供–period时,apachedex使用一个阈值来告诉何时切换到更大的周期。该周期被选择为对应于200个图表点,这代表可变数量的表格列。

–period参数的详细信息

–period

图表

表格

到下一个周期

直到下一个周期的列数

15分钟

分钟

15分钟

200分钟

8(3.3小时)

半天

30分钟

12小时

100小时

9(4.1天)

小时

200小时

9(8.3天)

6小时

1200小时

8(7.1周)

5000小时

7(~6.7个月)

季度

7天

季度

1400天

16(15.3周)

(不适用)

(无穷大)

在《–period quarter》中使用的“7天”期限并不是严格意义上的周:一周从星期一或星期日开始,取决于地区。“7天”从年初的第一天开始,为了简单和性能。“week”用于《–period week》确实是周,尽管不考虑地区的星期一。

当超过一个图表周期没有命中时,会在0次命中值(这是现实)和100% apdex(这是任意的)生成占位符。这些占位符仅影响图表,不影响平均值和表格内容。

由于并非所有图表周期在长度上实际上都相等(由于闰秒、夏令时、闰年、包含非整数周数的年份),一些命中图表点会人为地校正这些影响。在这里,校正也仅影响图表,不影响平均值或表格内容。例如,在非闰年,上一年度的“7天”期限只持续一天。然后绘制的命中数乘以7(闰年乘以3.5)。

性能

为了更好的性能...

  • 将管道解压缩文件传输到apachedex,而不是让apachedex自己解压缩文件

    bzcat access.log.bz2 | apachedex [...] -
  • 当让apachedex使用多个日志文件决定统计粒度时,首先提供最早和最晚的日志文件(无论顺序),这样apachedex可以在数据量过大之前适应分析时间范围

    apachedex [...] access.log.1.gz access.log.99.gz access.log.2.gz \
    access.log.3.gz [...] access.98.gz
  • 并行处理解析日志文件,最后保存分析输出并汇总

    for LOG in access*.log; do
      apachedex "$@" --format json --out "$LOG.json" "$LOG" &
    done
    wait
    apachedex "$@" --out access.html --state-file access.*.json

    如果您有bash并且有一个支持《-P》的xargs实现,您可能希望使用源分布或存储库中可用的《parallel_parse.sh》。

备注

使用不同参数集生成的保存状态可以加载,但可能产生无意义/不可读的结果。或者,如果确实想混合不同的参数(例如,一些日志使用%T生成,其他使用%D生成),它可以挽救一天。

尚不清楚保存状态格式将如何演变。准备好在升级APacheDEX时重新生成保存状态。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

APacheDEX-2.1.tar.gz (182.4 KB 查看哈希值

上传时间:

支持