企业把其网站视为日常运作的关键业务。为了让关键业务的功能运作一直保持在最佳性能,Linux系统管理员需要多种工具来帮助他们简易有效地监控Web服务器。
以下三个开源工具可以帮助Linux管理员更进一步地理解他们的Web服务器的功能、潜在安全问题和访客人数:
1.用Apache Bench的测试性能基准。解决非预期性能下降的最好方法是确保它不在最初时发生。一个叫做Apache Bench(ab)的工具可以用于测试服务器的性能基准并优化其配置。
Apache Bench的命令行界面很容易使用,系统管理员可以规定测试性能时应该现时发生的请求数量、POST净负荷或者包含有效性能结果的输出文件名。下面,你可以看看如何检查GameNomad开发服务器的性能,这能让你看到与在生产服务器上运行网站的对比性能:
该测试会发布总共1000个请求,同时执行10个请求:
$ ab -c 10 -n 1000 http://stage.gamenomad.com/
...
Benchmarking stage.gamenomad.com (be patient)
Completed 100 requests
Completed 200 requests
...
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.2.17
Server Hostname: stage.gamenomad.com
Server Port: 80
Document Path: /
Document Length: 9654 bytes
Concurrency Level: 10
Time taken for tests: 376.074 seconds
Complete requests: 1000
Failed requests: 8
(Connect: 0, Receive: 0, Length: 8, Exceptions: 0)
Write errors: 0
Total transferred: 9988344 bytes
HTML transferred: 9596168 bytes
Requests per second: 10.91 [#/sec] (mean)
Time per request: 916.872 [ms] (mean)
Time per request: 91.687 [ms] (mean, across all concurrent requests)
Transfer rate: 106.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 88 96 9.7 94 151
Processing: 320 739 496.8 491 2640
Waiting: 221 629 494.2 376 2539
Total: 413 835 495.6 587 2735
Percentage of the requests served within a certain time (ms)
50% 587
66% 729
75% 942
80% 1528
90% 1672
95% 1761
98% 1924
99% 2735
100% 2735 (longest request)
在信息返回到连接时间时,它把平均总连接时间分解成连接、等待和处理三个构成部分,并帮助识别潜在的瓶颈。
尽管没有专用的最佳实践指标应用到每一种情况,最快的就是最好的。当页面下载缓慢时用户不会逗留。
改进之后,再次运行ab(宁愿多试几次)并把结果和最初的进行对比。试想一下,对比的不只是连接时间还有不同时间内服务的要求比率。从远程服务器上运行ab尽可能的模仿真实世界的环境。
2.用Nikto评估服务器安全。一般的网站类似于一个电子版的中世纪古堡,不断地有野蛮人在门上敲打。不同在于一个网站是全球规模的,所以一个自动化脚本或一些其它发明协同攻击你Web服务器防卫的机会更大。
另外要采取积极措施,比如保持更新最新的安全补丁,把你自己当作潜在攻击者的位置并针对可能的安全问题扫描服务器都是有意义的。
Nikto就是一种可用的工具,它是一个开源扫描器,它探查有关操作系统、Web服务器和软件安装的上千个已知漏洞。Nikto基于Perl,它可在包括Windows在内的所有操作系统上运行。一旦安装,扫描一个网站就像提起Nilto和你想扫描的服务器名字一样简单:
$ nikto -h dev.gamenomad.com
尽管执行一次完全扫描不是一个坏主意,但记住,Nikto把综合性放在其它因素之前。这意味着它会执行上千次连续的请求。
为此,你也许想要过滤Nikto的默认扫描范围。选择一个第三方安装包整合时可能已经进入的特定漏洞。检查执行已知SQL注入式攻击的能力和已安装软件的可见性,分别在-T标志后加入7和b值:
$ nikto -h dev.gamenomad.com -T 7b
- Nikto v2.1.1
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: dev.gamenomad.com
+ Target Port: 80
+ Start Time: 2011-08-03 13:05:22
---------------------------------------------------------------------------
+ Server: Apache/2.2.17 (Ubuntu)
+ No CGI Directories found (use ‘-C all’ to force check all possible dirs)
+ Retrieved X-Powered-By header: PHP/5.3.5-1ubuntu7.2
+ DEBUG HTTP verb may show server debugging information.
See http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx for details.
+ 21 items checked: 2 item(s) reported on remote host + End Time: 2011-08-03 13:07:59 (157 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
记住,Nikto只可以连同第三方软件扫描报告的已知SQL注入式攻击。它无法侦测自定义应用里引入的SQL注入式攻击。
Nikto文件中有一个可用的完整漏洞选项列表,它包括的选项有创建报告、使用插件、运用超时压制请求等。
3.用Piwik分析流量。谷歌分析在Web分析时确实已经是龙头产品,但是其它分析工具也值得考虑。其中之一就是Piwik,它的目标是成为替代谷歌分析的开源选择。
相比于AWStats和Webalizer等成熟的开源工具,Piwik还是一个新人,但是它平滑的界面、成熟的功能集、转换及电子商务追踪功能和可用于iOS和安卓的移动应用让它难以被忽视。
Piwik的安装和配置过程类似于谷歌分析,只需要在网站中插入追踪代码段的Java脚本。不同在于所有的分析信息都存储在本地的数据库中,在改变软件方面没有限制。
使用这三个开源解决方案可以更深刻地理解你的Web服务器的性能能力、潜在的安全问题和访客人数。