实时服务器连接监视器

有没有办法实时看到我的服务器和通过哪些域的连接?

不必检查access.log文件,我想在shell中运行监视器。

Ubuntu 10 Webserver:lighttpd

谢谢

来自access.log的示例行

::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10" 

有一个名为iptraf的软件包,可以显示你的服务器的连接。

你可以通过安装sudo apt-get install iptraf

Access.log方法

您也可以使用以下命令从access.log中提取信息

 tail -f access.log | awk '{print $1 "\t" $2}' 

在我的例子中,列出了UA提供的远程IP和HTTP 1.1主机名。

该命令的解释

所以让我们简单看一下上面显示的命令:

其实这两个命令叫做tailawktail通常会输出文件的最后10行,但使用-f参数时,我们会要求它继续查看文件并在写入文件时打印新行。

Pipe( | )是一个众所周知的特性,因为它使用程序的输出(即tail )作为另一个程序input(即awk )。

最后,第二个命令awk '{print $1 "\t" $2}'从tail获取input,并将输出限制到我们需要的列。 (在我的例子中,这些是第一个列,所以我用$1$2如果你的access.log使用另一个列顺序,你可能要相应地改变数字。

这将生成一个类似于此的实时列表:

 92.17.166.190--pacey.me 92.17.166.191--pacey.me 92.17.166.192--anotherdomain.com 92.17.166.193--anotherdomain.com 

关于你的问题

我试图用下面的命令重现你遇到的错误。

 echo ::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10" | awk '{print $1 "\t" $2}' 

但是,即使是对我而言:

 ::ffff:000.00.00.000 www.domain.com 

由于日志格式与Apache相同, apachetop可能适用于您。

它在Ubuntu软件包仓库中可用,所以sudo apt-get install apachetop应该立即安装它。

用法: apachetop -f /path/to/your/access.log