我们有一个 httpd 实例,它使用虚拟主机在各个域上提供内容。我们缺少的是某种(近乎)实时的工具来显示我们的流量状况。
我们可以看到服务器状态页面的输出,但我想要更多内容:
- 按虚拟主机统计流量,查看哪些虚拟主机比较繁忙。
- 按客户端 IP 统计流量数量,用于检测并允许我们偶尔阻止基本的 DoS / 过度热情的爬虫。
- 保存并绘制这些数据,以便我们能够观察趋势。
因此,至少有 2 个要求 - 规划/预测方面,以及仪表板“此刻发生了什么?”视图。
我还没有找到任何可以开箱即用的东西,但我不敢相信我是第一个想要这种东西的人?
答案1
我认为 apachetop可能可以用来满足前两点:
http://www.webta.org/projects/apachetop/
我个人没有使用这种方法,而是编写了一个程序来抓取 Apache 状态页面(您必须启用 mod_status),只需花一到三个小时编写脚本即可轻松复制。最后一点最好通过日志分析来完成,而不是通过反复轮询 Apache 状态页面。
答案2
我经常使用 munin 来处理这类事情,并且有一个 apache 插件。但是,它不会按虚拟主机细分流量。我见过使用 apache mod_watch 的解决方案,但该软件包相当老旧,而且似乎维护得不太好。
答案3
我建议将你的日志发送到斯普朗克实例进行分析。它不是实时的,但我相信它非常接近实时。免费版本每天最多可分析 500MB 的日志文件,这是一个相当繁忙的网站。
答案4
Webalizer 是一款非常出色的分析工具,可用于分析 Apache 日志 - 它将为您提供每个虚拟主机的事后分析,包括客户端 IP 和许多其他有用信息。但它并不是实时的 - 您应该每天在日志上运行它(使用 cron 或其他方法)。
由于实时日志对于您需要的内容非常有用,您可以将它们传输到数据库或某些实时日志分析器并自行进行分析 - 但我不熟悉执行此操作的特定软件解决方案,并且编写这样的东西需要进行一些认真的开发。
至于外部解决方案,我建议使用ntop这是一个实时网络流量分析器。它有大量的功能,因此可能需要一些时间来弄清楚如何使用它,但它确实可以进行完整的 HTTP 协议分析,因此它可以显示人们使用哪些虚拟主机访问您的网站 - 既可以(近乎)实时显示,也可以显示历史记录。