zoukankan      html  css  js  c++  java
  • apache、nginx、iis日志记录的各个字段内容的含义

    在这之前我们先来介绍一下什么是网站日志:

    网站服务器日志记录这所有网站资源请求的原始数据,准确且详细,是分析网站必不可少的重要环节。想要分析日志文件,首选需要了解日志文件的格式与各个字段的意思。

    IIS服务器日志:

    网站运营时会经常对IIS日志进行分析,尽管有很多工具可以分析(Cygwin命令行模式就很好,前提是掌握一些简单的Linux命令),但是前提是熟悉IIS日志每个字段的含义,这样才能够更有针对性的分析潜在的问题。

    IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的格式,可以指定每天记录客户IP地址、用户名、服务器端口、方法、URI资源、URI查询、协议状态、用户代理,每天要审查日志。这些字段可以手动设置:

    日志的主体是一条一条的请求信息,请求信息的格式是由#Fields定义的,每个字段都有空格隔开。

    若是重启进程,则这四行会再记录一次。

    前缀

    含义

    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:客户端请求主机名
    IIS日志字段
    #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 httpu0008_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日志字段解析:

    $remote_addr, $http_x_forwarded_for 记录客户端IP地址
    $remote_user 记录客户端用户名称
    $request 记录请求的URL和HTTP协议
    $status 记录请求状态
    $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
    $bytes_sent 发送给客户端的总字节数。
    $connection 连接的序列号。
    $connection_requests 当前通过一个连接获得的请求数量。
    $msec 日志写入时间。单位为秒,精度是毫秒。
    $pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
    $http_referer 记录从哪个页面链接访问过来的
    $http_user_agent 记录客户端浏览器相关信息
    $request_length 请求的长度(包括请求行,请求头和请求正文)。
    $request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
    $time_iso8601/local  本地/ISO8601标准格式下的本地时间。

    如何分析网站日志?

    为方便可读性,通常可以使用第三方分析工具来进行分析,如不使用第三方分析工具,或无法满足需求,可将原始数据进行简单处理即可在Excel中进行统计分析。以IIS服务器日志为例:

    1. 用文本编辑器删除 #Software: Microsoft Internet Information Services 7.5 #Version: 1.0 #Date: 2019-02-26 00:01:39 #Fields: ,但注意保留#Fields:之后的数据。
    2. 将内容中的,(英文状态逗号)号全部替换为空删除掉,注意是替换为空,不是替换为空格。
    3. 将内容中的空格替换为,(英文状态逗号),保存。
    4. 将文件扩展名改为.csv(Excel的一种逗号分割符的扩展名)。
    5. 打开修改好后的文件,此时程序会调用Excel程序来打开,打开后先不要做分析查询处理,直接将文件另存为xls或者xlsx格式。
    6. 至此已经完成,可以打开最终保存的文件进行处理,可在Excel中进行分组、查询、统计、排序等各种操作,相信用好一定能满足需求。
  • 相关阅读:
    在 mac iTerm2 中使用 cmd 终端
    在 jupyter 中添加菜单和自动完成功能
    Bash 和 Zsh 开启 vi-mode
    免密登录和远程执行命令
    图片的筛选
    win10 右键菜单很慢的解决方式
    ssh中的 Connection closed by ***
    NodeJS 获取网页源代码
    在 JSDOM v11 中使用jQuery
    kafaka学习
  • 原文地址:https://www.cnblogs.com/li2019/p/12727420.html
Copyright © 2011-2022 走看看