0

如何监控 Apache 上各个虚拟站点的带宽使用情况?(Ubuntu 14)。

在我们的 IIS 服务器上,我们使用性能监视器,保存到 csv 文件并让 MRTG 解析数据并将其显示为图形。

我可以用 MRTG 做到这一点吗?我读到了一个不受支持的 Apache 模块(mod_monitor??),有些人曾尝试使用但真的不想使用不受支持的软件。

4

1 回答 1

0

简短的回答是,如果不做一些额外的工作,您可能无法做到这一点。

更长的答案是,虽然 MRTG 在理论上可以绘制任何东西,但您必须为其提供获取数据的方法。网络接口的吞吐量已经通过 SNMP 提供,但是每个虚拟服务器的网络流量有点难以获得,您需要说服 Apache 以您可以使用的格式移交这些数据。

您显然已经意识到这一点,因为在 IIS 下您使用性能监视器从 perfstats 获取数据。事实上,使用 IIS,您可以使用诸如 mrtg-nsclient 之类的插件直接通过 Nagios nsclient++ 代理查询 perfstats,而不是将统计信息转储到文件并解析它。但是,您使用的是 Apache...

实现它的一种方法是在单独的 TCP 端口上运行每个虚拟服务器,然后使用 iptables 日志记录规则来计算传递的字节数。iptables -L然后 MRTG 可以解析的输出以获取计数器。

但是,如果您想使用名称虚拟主机,则只有 Apache 的内部具有相关数据。

我有一个 MRTG 数据收集插件,它通过 mod_status URL 获取总流量。这允许绘制活动 Apache 线程的数量和总流量。但是它不是由虚拟服务器拆分的,因此您无法获得单独的统计信息。即使打开 ExtendedStatus,您也只能看到当前线程的活动,而不是按 vhost 拆分的计数。ExtendedStatus 将允许您查看每个 vhost 有多少线程处于活动状态,但不能查看每个 vhost 传输的总字节数。

您想要的输出似乎存在,mod_watch其中将在 URL 上为每个 vhost 输出一行统计信息/watch-list。但是,这是一个较旧的模块,可能需要修改才能针对 Apache 2.4 进行编译。它也很难得到,因为作者显然试图掩埋它。它曾经在 github 上,但在 2012 年消失了。

试试这里:https ://github.com/pld-linux/apache-mod_watch获取源代码,试试这里: http: //fossies.org/windows/www/httpd-modules-2.4-win64-VC11.zip/index_o .html用于 Apache 2.4 的 windows 二进制文件

于 2014-12-05T03:29:30.520 回答