是否有一个程序来查看Apache服务器下的实时HTTP请求?

Rya*_*yan 28 apache

我正在寻找一个程序或添加,它将能够显示所有实时传入的服务器请求.

小智 28

在您的终端中,键入

tail -f /var/www/log/apache2/other_vhosts.access.log
Run Code Online (Sandbox Code Playgroud)

这将查看实时请求.

  • 对我来说,我需要`sudo tail -f/var/log/apache2/access.log`. (8认同)
  • ``tail -f /var/log/apache2/other_vhosts_access.log`` (2认同)

Wil*_*mer 15

正如@Maor H.所指出的,访问日志通常是获得"传入"请求的最方便的地方.这些日志可以配置为去任何地方,但通常可以在/var/log/apache2/或下面的某处找到/var/log/httpd/.

它们的位置由CustomLog指令httpd.conf或包含文件(例如虚拟主机)决定.因此,如果在上述某个目录中找不到日志,那么在您httpd.conf和类似*.conf文件中搜索它通常是一个好的开始/var/log/*.

但是,一个重要的区别是,在请求完成之前,不会写入apache/httpd的日志.这很容易注意,因为日志条目通常包括最终请求的状态代码(%>sLogFormat指令中)以及请求花了多长时间(%TLogFormat指令中).

如果你有兴趣看到"他们进来"的请求,简短的回答是没有我所知道的"好"方式.但是,一个通常很好的方法是使用Apache mod_status,它通常配置(当配置时)可以通过http://127.0.0.1/server-status/与服务器本身相同的机器访问.通过mod_status配置,您通常可以使用类似于apachectl fullstatus或(取决于您的分发)的命令从命令行查看"记分板"的输出,因为它是调用的service httpd fullstatus.

server-status/ fullstatus/"记分牌"会显示活动(以及非活动)连接的摘要,请求本身的截断副本,什么是目前关于该请求发生(如:?它正在处理被发送的回复?它是空闲的吗?它只是在等待新连接吗?)

记分牌的主要缺点是它不适合于被拖尾或以其他方式积极监控.它有助于确定可能导致服务器上的过度负载的内容,尽管它具有仅在apache能够提供额外连接时才能访问的缺点(因此找出阻止其他连接的内容是没有用的) .

如上所述,记分板的主要好处是:它在请求完成之前为您提供请求详细信息.考虑到这一点,它可能更适合您的"传入"请求列表的请求.

如果你想获得更低级别的东西,而不是谈论生产服务器,那么当然,WireShark可以为你提供HTTP请求的实时列表.这会监视TCP连接本身,而且资源太多了 - 密集生产用途.如果你试图找出电线上实际发生的事情,那么它就是最好的选择.


Pik*_*er2 8

apachetop会在最后一分钟左右向您显示所有请求.

sudo apt-get install apachetop

这是联机帮助页.

您可以指定更新频率以及信息在屏幕上停留的时间.

例如,如果要在最近30秒内查看所有请求,并每2秒刷新一次信息,则运行:

apachetop -r 2 -T 30

  • `apachetop -r 1 -T 150 -d 1 -p yes -f /path/access.log` (2认同)