如何将服务器流量与该服务器上托管的域关联?

如何将服务器流量与该服务器上托管的域关联?

我有三到四台 Linux 服务器,每台服务器托管 5 到 50 个域。每个域都有自己的文件夹:

/www/项目名称/web/

日志进入:

/www/项目名称/log

但是,如果出现流量高峰(或者,正如我所看到的,内存使用量高峰),我不确定如何找出哪个域负责流量,而无需在每个项目上运行 tail -f 并根据滚动速度做出有根据的猜测。

一定有更好的方法!可能有,但我没见过。上次我检查时,带宽监视器只报告系统范围的负载。

因此,如果有人知道如何正确地做到这一点,请告诉我。

谢谢!

编辑:我的目标是提供即时反馈。我知道我可以配置 Apache 来记录发送和接收的字节数,但如果我的服务器受到重击,而我试图找出所有流量来自哪个域,那么这并不一定会有帮助。

答案1

您还可以启用 Apache 状态页面并将其限制为您的 IP,然后查找请求页面的趋势。

示例输出:http://www.apache.org/server-status

配置:

<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
    Allow from <your IP>
</Location> 

答案2

您可以使用 apachetop:

apachetop -f /www/projectname/log/access_log 

它为您提供指定日志的 BW 进出统计信息。

答案3

查看 mod_cband 插件。如果您将插件添加到每个域的配置文件中,则可以为每个虚拟域提供实时流量水平。只需对每个域使用相同的记分板。/cband-status 页面将为您提供每个域的当前流量水平统计信息。

答案4

当您使用虚拟主机(一个 IP 地址上有多个域名)时,您只能通过解析 Apache 日志文件来测量流量。只有 Apache 知道请求是发给哪个主机的,因为这就是虚拟主机的工作方式。

在这种情况下,您可以为每个虚拟主机添加不同的 CustomLog 行,例如:

CustomLog ${APACHE_LOG_DIR}/host.domain.net.log 合并

然后,您可以使用“webalizer”等日志处理软件来处理日志,将每个响应的字节数相加,并得出该域的流量近似值。

这是一个近似值,因为它不包括要求是通信的一部分,不包括开销。

但是,如果您只是想看看哪个站点受到了攻击,您可能应该只启用对 /server-status 页面的访问,它将向您显示所有当前/最近的活动来自哪里。

如果您确实想要精确的字节数,唯一的办法是使用基于 IP 的虚拟主机,并使用软件计算每个 IP 地址的实际流量字节数。在这种情况下,我发现最好的软件是 pmacctd“混杂模式记账守护程序”,它可以很好地完成每个 IP 的流量记账。

问候,安德鲁·麦克米兰。

相关内容