apache、nginx、iis日志记录的各个字段内容的含义
在这之前我们先来介绍一下什么是网站日志:
网站服务器日志记录这所有网站资源请求的原始数据,准确且详细,是分析网站必不可少的重要环节。想要分析日志文件,首选需要了解日志文件的格式与各个字段的意思。
IIS服务器日志:
网站运营时会经常对IIS日志进行分析,尽管有很多工具可以分析(Cygwin命令行模式就很好,前提是掌握一些简单的Linux命令),但是前提是熟悉IIS日志每个字段的含义,这样才能够更有针对性的分析潜在的问题。
IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的格式,可以指定每天记录客户IP地址、用户名、服务器端口、方法、URI资源、URI查询、协议状态、用户代理,每天要审查日志。这些字段可以手动设置:
若是重启进程,则这四行会再记录一次。
前缀 |
含义 |
s- |
服务器操作。 |
c- |
客户端操作。 |
cs- |
客户端到服务器的操作。 |
sc- |
服务器到客户端的操作。 |
#Software、#Version、#Date 分别是服务器程序、版本、时间。
#Fields列为日志内容各字段列说明(不同服务器配置略有差异),具体如下:
- date:日期
- time:时间,这两个字段组成资源请求详细时间,改时间通常为服务器端时间,注意,服务器采用时区可能与本地时区不一致。
- s-ip:服务器IP,资源处理服务器IP,通常是服务器本机IP。
- cs-method:请求方式,常见有GET与POST请求。
- cs-uri-stem:请求资源路径,网站根目录下的绝对路径位置。
- cs-uri-query:请求参数。
- s-port:使用端口,通常HTTP协议端口是80,HTTPS协议端口是443。
- cs-username:客户端用户名,通常为空或-。
- c-ip:客户端IP,判断唯一用户的重要依据,也是判断搜索蜘蛛爬虫真伪的依据。如何判断百度蜘蛛谷歌爬虫真伪?
- cs(User-Agent):用户代理字符串,用户使用的设备与浏览器类型,以及是否是爬虫蜘蛛程序,但此数据可模拟,需结合上面客户端IP才能准确判断是否是蜘蛛程序。
- sc-status:请求资源返回状态码,HTTP状态码,通常200为正常,301为跳转,404为资源不存在,500为服务器错误,详细网站HTTP状态码。
- sc-substatus:协议子状态,通常为0。
- sc-win32-status:Win32状态,通常为0。
- time-taken:花费时间,单位为毫秒。
- cs-version:协议版本。
- cs(Referer):请求来路,从哪个页面点击链接进入的该资源。通常如果存在该字段,可判断出搜索引擎与搜索词。
- sc-bytes:发送文件的大小,单位为字节。一般为所请求资源文件的大小。
- s-sitename:服务器站点名称,用于区分同一服务器下的多个站点。
- s-computername:服务器计算机名称。
- cs(Cookie):客户端请求Cookie。
- cs-host:客户端请求主机名
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2013-08-21 01:00:00
#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
|
序号 |
字段 |
字段 |
格式及值 |
备注 |
1 |
date |
日期 |
2013-08-21 |
活动发生的日期。 |
2 |
time |
时间 |
01:16:11 +8小时 |
活动发生的时间。 |
3 |
s-sitename |
服务名 |
W3SVC2 |
客户端所访问的该站点的 Internet 服务和实例的号码。 |
4 |
s-computername |
服务器名 |
VMS01487 |
生成日志项的服务器名称。 |
5 |
s-ip |
服务器IP |
10.8.2.174 |
生成日志项的服务器的IP地址。 |
6 |
cs-method |
方法 |
GET/POST |
客户端试图执行的操作(例如 GET 方法) |
7 |
cs-uri-stem |
请求访问的页面 |
/TrainBooking/Search.aspx |
/表示访问主页 |
8 |
cs-uri-query |
访问的查询字符串 |
from=beijingxi&to=xinxiang2&day=1&number=&fromCn=%B1%B1%BE%A9&toCn=%D0%C2%CF%E7 |
客户端正在尝试执行的查询(如果有)。查询HTTP请求中问号(?)后的信息 |
9 |
s-port |
服务器端口 |
80 |
客户端连接的服务器端口号。 |
10 |
cs-username |
- |
对于通过身份验证的用户,格式是“域\用户名”;对于匿名用户,是一个连字符 (-)。 |
|
11 |
c-ip |
客户端IP |
120.71.108.114 |
访问服务器的客户端 IP 地址。(已过滤掉中间各种IP,是真实的客户端IP) |
12 |
cs-version |
协议版本 |
HTTP/1.1 |
客户端使用的协议(HTTP,FTP)版本。对于 HTTP,这将是 HTTP 1.0 或 HTTP 1.1。 |
13 |
cs(User-Agent) |
用户代理 |
Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+QQDownload+718) |
在客户端使用的浏览器。 |
14 |
cs(Cookie) |
Cookie |
Session=SmartLinkLanguage=zh&SmartLinkHost=&SmartLinkQuary=&SmartLinkKeyWord=&SmartLinkCode=U217664;+Union=OUID=baidu6a%7Ctrain%7C%7C%7C&AllianceID=4897&SID=217664;+rt=4_1;+__utma=1.1239641147.1377046635.1377046635.1377046635.1;+__utmb=1.1.10.1377046635;+__utmc=1;+__utmz=1.1377046635.1.1.utmcsr=baidu|utmccn=Baidu6a|utmcmd=cpc|utmctr=%E7%81%AB%E8%BD%A6%E7%A5%A8%E6%9F%A5%E8%AF%A2;+traceExt=campaign=CHNbaidu6a&adid=train;+_bfa=1.1377046635093.2zk2zs.1.1377046635093.1377046635093.1.1;+_bfs=1.1;+_bfp=469547008;+_bfi=p1=108001&p2=0&v1=1&v2=1;+ALLYESID4=06D7467F7F5F739E;+TrainLastSearch=%E9%93%9C%E4%BB%81%7Ctongren%7C%E6%B7%B1%E5%9C%B3%E8%A5%BF%7Cshenzhenxi%7C2013-08-21%7C;+ASP.NET_SessionId=kqc0qh3d3zmg42zlnruijtb1 |
发送或接收的 Cookie 的内容(如果有) |
15 |
cs(Referer) |
引用站点 |
http://trains.xxx.com/TrainBooking/RoundTrip.aspx?from=liuan&to=jiaxing&day=4&dayreturn=5&number=&fromCn=六安&toCn=嘉兴 |
用户访问的前一个站点。此站点提供到当前站点的链接。 |
16 |
cs-host |
主机 |
trains.xxx.com (有时直接访问服务器IP,10.8.2.174) |
显示主机头的内容。 |
17 |
sc-status |
协议返回状态 |
200 |
以HTTP或FTP表示的操作的状态 |
18 |
sc-substatus |
HTTP子协议的状态 |
0 |
|
19 |
sc-win32-status |
Win32® 状态 |
0 |
用 Windows® 使用的术语表示的操作的状态。 |
20 |
sc-bytes |
服务器发送的字节数 |
87682 |
服务器发送的字节数。 |
21 |
cs-bytes |
服务器接受的字节数 |
1324 |
服务器接收的字节数。 |
22 |
time-taken |
所用时间 |
187 |
操作花费的时间长短(亳秒) |
Apache服务器日志:(https://www.alibabacloud.com/help/zh/doc-detail/87740.htm、、、https://blog.csdn.net/tswisdom/article/details/41677557)
与IIS服务器格式略有不同,Apache服务器日志记录通常不包含字段说明。 默认情况下单条记录(一行)通常分为5部分。分别是:请求IP与时间、请求方式与内容、请求状态与大小、请求资源来路、请求代理字符串。
- 请求IP与时间: 106.11.156.101 - - [27/Feb/2019:08:04:21 +0800] 请求客户端IP地址与时间,此时间记录包含时区标识,中间两个 - 分别为访问者的标识与身份验证,通常为空以-代替。
- 请求方式与内容: GET /373.html HTTP/1.1 请求方式与请求资源绝对路径,之后为请求协议类型。
- 请求状态与大小:200 4656 请求资源返回HTTP状态码与发送文件大小(字节)。
- 请求资源来路: http://www.example.com/ 请求资源来路或资源引用来路。
- 请求代理字符串: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36 用户代理字符串。
各个字段含义如下所示。
字段 | 字段名 | 说明 |
---|---|---|
%h | remote_addr | 客户端IP地址。 |
%l | remote_ident | 客户端日志名称,来自identd。 |
%u | remote_user | 客户端用户名。 |
%t | time_local | 服务器时间。 |
%r | request | 请求内容,包括方法名、地址和http协议。 |
%>s | status | 返回的http状态码。 |
%b | response_size_bytes | 返回的大小。 |
%{Rererer}i | http\u0008_referer | 来源页。 |
%{User-Agent}i | http_user_agent | 客户端信息。 |
%D | request_time_msec | 请求时间,单位为毫秒。 |
%f | filename | 带路径的请求文件名。 |
%k | keep_alive | keep-alive请求数。 |
%p | remote_port | 服务器端口号。 |
%q | request_query | 查询字符串,如果不存在则为空字符串。 |
%R | response_handler | 服务器响应的处理程序。 |
%T | request_time_sec | 请求时间,单位为秒。 |
%I | bytes_received | 服务器接收的字节数,需要启用mod_logio模块。 |
%O | bytes_sent | 服务器发送的字节数,需要启用mod_logio模块。 |
%…a: 远程IP地址
%…A: 本地IP地址
%…B: 已发送的字节数,不包含HTTP头
%…b: CLF格式的已发送字节数量,不包含HTTP头。
例如当没有发送数据时,写入‘-’而不是0。
%e: 环境变量FOOBAR的内容
%…f: 文件名字
%…h: 远程主机
%…H 请求的协议
%i: Foobar的内容,发送给服务器的请求的标头行。
%…l: 远程登录名字(来自identd,如提供的话)
%…m 请求的方法
%n: 来自另外一个模块的注解“Foobar”的内容
%o: Foobar的内容,应答的标头行
%…p: 服务器响应请求时使用的端口
%…P: 响应请求的子进程ID。
%…q 查询字符串(如果存在查询字符串,则包含“?”后面的
部分;否则,它是一个空字符串。)
%…r: 请求的第一行
%…s: 状态。对于进行内部重定向的请求,这是指*原来*请求
的状态。如果用%…>s,则是指后来的请求。
%…t: 以公共日志时间格式表示的时间(或称为标准英文格式)
%t: 以指定格式format表示的时间
%…T: 为响应请求而耗费的时间,以秒计
%…u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%…U: 用户所请求的URL路径
%…v: 响应请求的服务器的ServerName
%…V: 依照UseCanonicalName设置得到的服务器名字
nginx日志字段解析:
如何分析网站日志?
为方便可读性,通常可以使用第三方分析工具来进行分析,如不使用第三方分析工具,或无法满足需求,可将原始数据进行简单处理即可在Excel中进行统计分析。以IIS服务器日志为例:
- 用文本编辑器删除 #Software: Microsoft Internet Information Services 7.5 #Version: 1.0 #Date: 2019-02-26 00:01:39 #Fields: ,但注意保留#Fields:之后的数据。
- 将内容中的,(英文状态逗号)号全部替换为空删除掉,注意是替换为空,不是替换为空格。
- 将内容中的空格替换为,(英文状态逗号),保存。
- 将文件扩展名改为.csv(Excel的一种逗号分割符的扩展名)。
- 打开修改好后的文件,此时程序会调用Excel程序来打开,打开后先不要做分析查询处理,直接将文件另存为xls或者xlsx格式。
- 至此已经完成,可以打开最终保存的文件进行处理,可在Excel中进行分组、查询、统计、排序等各种操作,相信用好一定能满足需求。