问题描述
我在Webmin /Virtualmin的帮助下,在基本的LAMP设置中使用Apache托管了很多虚拟主机。我正在寻找一个top-like工具,我可以在其中监控当前的连接。虚拟主机部分似乎在这给我带来麻烦。这是我尝试过的:
-
netstat
– 我可以看到这些连接,但它们显示我好像都在使用我的主域名,例如mydomain.com:www
。 -
iftop
– 我很喜欢它,但与netstat
类似的缺点:不显示虚拟主机。 -
apachetop
– 似乎没有显示我所有虚拟主机的信息。我正在记录单独的自定义日志文件,我怀疑它是导致它不起作用的原因。 -
ntop
,darkstat
,MRTG
,bwm-ng
,IPTraf
– 也不起作用。
所以,基本上,我正在寻找类似于netstat
的当前输出的东西,但要包括请求所针对的虚拟主机,例如:avirtualsite.com:www
。
最佳解决办法
Andrea Corbellini’s answer解释了为什么它不适用于您正在使用的工具以及虚拟主机的工作方式。这是我能想到的在Apache中完成它的最简单的方法…
mod_status
将帮助您。
免责声明:我不知道在Webmin中是如何完成的 – 我使用裸配置文件来设置服务器。这里只是步骤的基本概述。
它是一个类似top
的工具,但表示为网页。它列出了从Apache直接查询的当前状态,因此它不依赖于解析日志文件,如apachetop
。
-
启用
mod_status
:sudo a2enmod status
-
给自己访问权限。
-
打开
/etc/apache2/mods-enabled/status.conf
并编辑: -
将
ExtendedStatus
设置为On
(可选,但更棒,速度稍慢) -
在
<Location /server-status>
中,使用Allow
指令将您的IP地址附加到该行。例:Allow from 127.0.0.1 ::1 66.77.88.99
-
-
重启Apache:
sudo service apache2 restart
-
在浏览器中享受该工具,例如:
http://1.2.3.4/server-status
它看起来像this example screenshot。 -
继续按
F5
以获取更新。或者获得一个很棒的浏览器插件并观看它的更新!
Webmin
OP对未来访客的补充
在Webmin中,可以在此处找到有关Status模块的基本步骤:
-
服务器 – > Apache Webserver – >配置Apache模块
-
选择Status模块,然后单击Enable Enable Modules
次佳解决办法
您尝试的所有工具永远不会给您正确的答案。原因是在建立连接时,您请求的信息将丢失。
让我们举个例子:假设您的Web服务器有一个IP地址(1.2.3.4)和两个解析为该IP地址的主机名(a.mydomain.com和b.mydomain.com)。
当您访问a.mydomain.com时使用自己喜欢的网络浏览器会发生什么?
-
浏览器向您的DNS服务器询问a.mydomain.com对应的IP地址。
-
DNS服务器告诉浏览器地址是1.2.3.4。
-
Web浏览器连接到1.2.3.4。
所以netstat
&合。只知道有一个传入的连接到1.2.3.4。您看到主机名而不是IP地址的原因是IP地址具有rDNS记录,因此netstat
更喜欢显示而不是IP,因为它更好。尝试netstat -n
(或删除rDNS记录),您将看到IP地址。
但这还不是全部:当我说有关用于建立连接的主机名的信息丢失时,我并不完全正确。从TCP /IP堆栈的角度来看,该句子是真的。但是,如果我们从HTTP协议的角度看问题,情况会有所不同。在每个HTTP请求中都有一个Host:
标头,其中包含浏览器用于发出请求的主机名。
因此,简而言之,您应该查看Web服务器的日志文件。 Web服务器是处理HTTP请求的服务,因此是唯一了解”original”主机名的服务。
第三种解决办法
另一种方式是打字
tail -f /var/log/apache2/access.log
在你的终端
第四种办法
您可以使用此bash检查端口80上连接的所有ips
netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
注意:如果要查看其他端口,请更改80
OUTPUT:
19 x.174.143.1
13 x.175.135.1
9 x.68.135.1
8 x.144.87.1
7 x.68.150.1
6 x.92.4.1
6 x.188.23.1
5 x.190.164.1
4 x.189.156.1
第五种办法
您可以通过以下方式检查:
netstat -na | grep 'ESTA'