服务器日志(Log File)分析与网站优化

服务器日志是什么
服务器日志(Server log file或称log file)是一个安全的、别人无法获取的日志文件,该文件记录了服务器下所有的活动行为,包括用户与蜘蛛的访问信息,如:访问页面、IP信息、返回状态等。所以,服务器日志文件对于网站分析与优化都极具价值。

本文关注的是服务器安全信息以及蜘蛛方面的信息,网站流量分析不在本文范围内,感兴趣可以参考网站分析在中国――从基础到前沿的文章:《 服务器日志法网站分析的原理及优缺点》。

如何获取服务器日志文件
如果使用是IIS虚拟主机,服务器日志文件(Log File)一般都存放在一个 logfiles目录下与wwwroot目录同处一层,使用FTP进行下载获取。如果logfiles里面的文件为空,则检查下服务器商提供的管理后台有无生成日志文件的设置,不行就找客服交流一下。

如果是自己的服务器,查找的目录是: C:\WINDOWS\system32\LogFiles。你可以在IIS信息管理中进行相关的设置。

如果是Apache环境下的服务器日志请参考这篇文章:《 Apache日志:访问日志(一)》,引用如下:

如果Apache的安装方式是默认安装,服务器一运行就会有两个日志文件生成。这两个文件是access_log(在Windows上是access.log)和error_log(在Windows上是error.log)。采用默认安装方式时,这些文件可以在/usr/local/apache/logs下找到;对于Windows系统,这些日志文件将保存在Apache安装目录的logs子目录

读懂服务器日志 (范例格式:W3C Extended Log File Format (IIS 6.0) )
使用文本工具打开Log File文件发现是一堆密密麻麻的代码,根据日志文件类型参考相应的文档进行解读,比如本站的日志文件对应的是: W3C Extended Log File Format (IIS 6.0) 。下面是本站的Log File片段:

#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2010-07-28 00:06:43
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes
2010-07-28 01:19:01 W3SVC225 74.82.176.68 GET /robots.txt - 80 - 207.46.13.100 msnbot/2.0b+(+http://search.msn.com/msnbot.htm) 200 0 64 0 205

#号所在行都为注释行,注释服务器环境、版本、时间、服务器日志格式。非#号后面的那长串代码是一条log日志记录,它与Fileds(服务器日志格式)是对应的。根据W3C Extended Log File Format (IIS 6.0) 的帮助文件解读的意思即为:


date time 访问时间:2010-07-28 01:19:01
s-sitename/Service Name and Instance Number 服务名称和实例数:W3SVC225
s-ip/Server IP Address 服务器IP地址:74.82.176.68
cs-method 客户端发出请求的方式(常见有Get、Post两类):GET
cs-uri-stem URI资源(访问目标的文件):/robots.txt
s-port 服务器端口号(web服务器一般的端口都是默认为80):80
c-ip 客户端访问IP(通俗认为是访问者IP):207.46.13.100
cs(User-Agent) 客户端用户代理:msnbot/2.0b+(+http://search.msn.com/msnbot.htm)
sc-status 服务器HTTP状态代码:200 (200表示请求成功)
sc-bytes 服务器端发送的字节数:64
cs-bytes 服务器端收到的字节数:205

sc-substatus、sc-win32-status暂时没发现有什么用,就不翻译了。 此条记录中并不包含cs-uri-query(客户端请求的参数)所以留空的。对于蜘蛛信息,一般重点关注的是Get或POST后面的 cs-uri-stem(访问文件)信息以及最后返回的 HTTP状态码

这条日志记录透露的信息是:一个MSN机器人以GET方式访问了robots.txt文件,并返回了200成功的状态码。

两个不同环境下的日志格式帮助文件: Log File Formats in IIS (IIS 6.0)、 Apache Log Files帮助

HTTP状态码简表:

2xx - 成功
这类状态代码表明服务器成功地接受了客户端请求。 常见:200 (确定。客户端请求已成功)

3xx - 重定向
客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。常见:301(永久定向)、302(临时定向)

4xx - 客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。常见:404(未找到,不存在)

5xx - 服务器错误

更为详细的 HTTP状态码附表


服务器日志对于网站优化的指导意义

1、服务器安全性检测
先看下面的代码片段,是否发现有什么可疑的地方:
2010-07-25 21:22:09 W3SVC225 74.82.176.68 GET /ffulmirserver.rar - 80 - 222.132.31.211 Mozilla/4.0 404 0 64 0 106
2010-07-25 21:22:09 W3SVC225 74.82.176.68 GET /mirserver.rar - 80 - 222.132.31.211 Mozilla/4.0 404 0 64 0 102
2010-07-25 21:22:11 W3SVC225 74.82.176.68 GET /mirserver.rar - 80 - 222.132.31.211 Mozilla/4.0 404 0 64 0 102

分析:上面的LOG日志记录了一个家伙在短时间内连续Get请求一些莫名其妙的文件,这些文件并不存在,服务器返回了404不存在状态。这非常像scan工具进行肉鸡扫描的行为,Google了一下那些文件名果然跟盗号之类相关。天天这样被人当肉鸡扫哪里有不蛋疼的,将这个安全隐患问题报告给服务器提供商询求技术支持。

2、蜘蛛抓取的返回信息
重点关注3xx、404、5xx类的http状态码的log记录,比如:
2010-07-28 02:20:18 W3SVC225 74.82.176.68 GET /blog/function/c_urlredirect.asp url=h3t9t7p9%3A4%2F7%2F3w8w2w4.4b3e2i7j0i3n1g9l5v6s1h7i7.1n5e4t5.6c4n9 80 - 123.125.66.53 Baiduspider+(+http://www.baidu.com/search/spider.htm) 302 0 0 480 289

分析:百度蜘蛛访问了一个c_urlredirect.asp*的页面,该文件是一个URL跳转程序,所以返回的是302临时跳转状态,这个状态本身是没问题的,有问题的是这样一个URL并没有爬取的价值,为何要浪费蜘蛛的精力去抓取呢?使用rel=nofollow属性告诉蜘蛛不要爬取这类没有爬取价值的链接。

2010-07-28 01:15:30 W3SVC225 74.82.176.68 GET /blog/case/9.html - 80 - 66.249.67.53 Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html) 404 0 3 1468 239

分析:GoogleBot访问了/blog/case/9.html页面,结果页面不存在返回了404。这个时候需要检查这个文件是否存在,如果文件存在而返回了404则可能是因为服务器不稳定因素造成,可能是服务器本身问题也可能是被攻击。如果文件本身就不存在而蜘蛛还会去爬那个不存在的页面,则是因为还有其他页面有链接到那个不存在的页面,借助谷歌管理员工具中的抓取错误进行查找,将那些不存在的链接去掉。

2010-07-28 01:43:51 W3SVC225 74.82.176.68 GET /blog/feed.asp cmt=73|1|ASP_0117|丢失脚本关闭标记 80 - 209.85.238.123 Feedfetcher-Google;+(+http://www.google.com/feedfetcher.html;+1+subscribers;+feed-id=16386729543971387368) 500 0 0 557 243

分析:Google的 feedfetcher(抓取 RSS 或 Atom 供稿的蜘蛛)在访问页面/blog/feed.asp cmt*时,返回了500内部服务器错误的状态提示,并且在log日志里就看到了错误提示“丢失脚本关闭标记”。由此可以判断是一个程序文件错误,需要解决这个程序上的Bug。

网站优化其实就是从这些细微处着手,而往往细微的错误是不容易被人所察觉。谷歌网站管理员工具中的错误信息以及LOG日志就是帮助网站管理员发现这些细微问题的好帮手。本文简单罗列了如何从LOG日志中去发现问题,这些问题对于网站优化有什么好处。而对于如何优化以及优化的意义并没有详细展开,将在另外一篇中叙述。

3、蜘蛛来访数量与频率
蜘蛛的来访数量以及频率是网站健康程度与网站权重的指标之一,了解这些数据需要借助到一些LOG日志分析。这些工具大多分IIS与Apache两种环境,像Web Log Explorer工具同时能够支持两种环境下输出的LOG日志文件,并且功能也非常全面,还可以分析出蜘蛛的路径,对于了解蜘蛛非常有帮助。
文/bansi  服务器日志(Log File)分析与网站优化
首发地址: http://sem80.com/2010-07/server-log-file-and-web-optizition.html

本文出自 “思.践.行” 博客,转载请与作者联系!

你可能感兴趣的:(职场,网站优化,休闲,服务器日志)