提取 Apache 中每个域的带宽使用情况

提取 Apache 中每个域的带宽使用情况

我有一个 Web 应用程序,它将为各种网站提供支持。我想以每个域为基础实现某种形式的带宽监控,以便计费和过度使用。我使用 Apache 作为 Web 服务器,并且只对所有站点使用默认虚拟主机(站点级路由和控制在应用程序中而不是服务器中处理)。有没有办法,如果有,我该如何提取 Apache 中每个域名而不是每个虚拟主机的带宽使用情况。

只是为了澄清基于域的监控,我正在谈论HOST请求标头字段。

举例来说,假设我有 4 个站点名称,、、www.example.com和。现在,这四个站点将由完全相同的 PHP 代码和相同的 vHost 文件(Apache 中的默认捕获所有文件)处理,将在同一服务器用户下运行,等等。但是,这些站点是独立的站点,并通过在应用程序中获取主机请求标头在服务器上进行区分。我需要分别监控这 4 个站点使用的带宽,因为每个站点允许的带宽量不同。www.example.orgwww.site1.comsite2.example.com

我并不担心服务器上的用户是否可以更改这一点,因为用户根本无法访问服务器,而是完全通过 Web 面板管理他们的网站(想想类似于 Weebly 的东西,其中一个应用程序支持跨多台服务器平衡所有网站的负载)。因此,该方法将在多台服务器上使用并输入到单个数据库中。

我设想了一些事情...

  • 它会按照预定的时间间隔(例如每小时、每 6 小时等)创建一个带宽使用情况文件,记录站点名称和该期间使用的带宽,然后我可以定期从每个服务器中提取该文件并自己在另一个系统上处理。
  • 它将按照预定的时间间隔利用所使用的带宽并将数据推送到远程文件系统或数据库服务器。
  • 按照预定的时间间隔,我将使用定制的内部应用程序轮询服务器,了解每个站点使用的带宽,然后将其放入数据库中。

任何能够让带宽使用情况准确到足以用于计费的方法都是好的。我更喜欢使用某种方法,该方法可以与服务器上的守护进程系统配合使用,我的代码可以与之交互,或者可以生成一个可供我使用的可解析文件,而不需要编写系统代码来执行终端命令并处理结果。

作为一个示例,我希望实现类似于 Wix 计算其系统上托管的各个站点所使用的带宽的方式,因为它实际上是一种应用程序服务,而不是共享托管服务。

答案1

一种相当常见的方法是从访问日志生成使用情况统计数据。

创建一个CustomLog在一个LogFormat其中包括主机头中的域名。

然后取决于哪个网站分析包您可以选择使用记录的主机将日志文件拆分为每个域的单独文件并从中生成使用情况统计信息,或者该软件可能已经支持隔离多个域。

相关内容