我想要一个可以解析 Apache 日志文件并记录用户使用了多少带宽的 Web 应用程序。我们有几个虚拟主机,它们有自定义日志文件,并且 I/O 记录在日志文件的末尾。但是我找不到可以解析多个日志文件并显示每个站点摘要的应用程序。
我相信 awstats 可以做到这一点,但我希望能够在一个列表中看到我的所有客户。如果有可以集成到 cacti 中的功能,那就太完美了。
答案1
我建议将所有信息转储到一个日志中,使用其中的解析器,然后在从日志中收集所需的数据后将日志分解到相应的虚拟域的日志文件中。
每个虚拟使用超过 2 个(常见和错误)的单个日志文件,还将获得更好的高端可扩展性。
如果食物位于不同的 IP 地址,使用 MRTG 之类的工具就相当容易。
答案2
就我个人而言,我不知道如何让 Awstats 做到这一点。我认为 Xerxes 在相关的 serverfault 问题中的回答是最简单的方法:
cat /var/log/apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}'
这假设 %b 字节输出在您的日志文件的第 10 位 - 因此请确保您的 CustomLog 设置包含 %b 并根据需要调整 $10。
这样做的好处是,你可以在单个日志文件上运行它,或者在单个日志文件中 grep 特定的行。例如,你可以这样做
cat <log_file> | grep <virtual_domain> | awk . . .
在组合日志中查看单个虚拟域的带宽。