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中进行分组、查询、统计、排序等各种操作,相信用好一定能满足需求。
  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/li2019/p/12727420.html
Copyright © 2011-2022 走看看