• apache、nginx、iis日志记录的各个字段内容与含义


    Apache

    1. Windows

    1. 日志文件名称路径、访问日志设置

      1. 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access.log和错误日志error.log。
      2. Apache配置文件在httpd.conf中,配置Apache访问日志格式。日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。

         

    2.访问日志格式详解

    举一个访问日志access.log中的一个标准记录:

    192.168.35.132 - - [01/Apr/2020:12:35:13 +0800] "GET / HTTP/1.1" 200 49

    日志字段所代表的内容如下:

    1.远程主机IP:表明访问网站的是谁 ——192.168.35.132

    2.空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用"-"取代了

    3.空白(登录名):用于记录浏览者进行身份验证时提供的名字。

    4.请求时间:用方括号包围,而且采用"公用日志格式"或者"标准英文格式"。 时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

    5.方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是"METHOD RESOURCE PROTOCOL",即"方法 资源 协议"。

     METHOD: GET、POST、HEAD、……
    RESOURCE: /、index.html、/default/index.php、……(请求的文件)
     PROTOCOL: HTTP+版本号

    6.状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。

    7.发送字节数:表示发送给客户端的总字节数——49。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。

     

    这里第6条说了,大多数时候这项值是200,那我们在列举一下别的值含义:

    "100" : Continue 客户必须继续发出请求

    "101" : witching Protocols 客户要求服务器根据请求转换HTTP协议版本

    "200" : OK 交易成功

    "201" : Created 提示知道新文件的URL

    "202" : Accepted 接受和处理,但处理未完成

    "203" : Non-Authoritative Information 返回信息不确定或不完整

    "204" : No Content 请求收到,但返回信息为空

    "205" : Reset Content 服务器完成了请求,用户代理必须复位当前已经浏览过的文件

    "206" : Partial Content 服务器已经完成了部分用户的GET请求

    "300" : Multiple Choices 请求的资源可在多处得到

    "301" : Moved permanently 删除请求数据 

    "302" : Found 在其他地址发现了请求数据 

    "303" : See Other 建议客户访问其他URL或访问方式 

    "304" : Not Modified 客户端已经执行了GET,但文件未变化

    "305" : Use Proxy 请求的资源必须从服务器指定的地址得到

    "306" : 前一版本HTTP中使用的代码,现行版本中不再使用

    "307" : Temporary Redirect 申明请求的资源临时性删除

    "400" : Bad Request 错误请求,如语法错误

    "401" : Unauthorized 请求授权失败

    "402" : Payment Required 保留有效ChargeTo头响应 

    "403" : Forbidden 请求不答应

    "404" : Not Found 没有发现文件、查询或URl 

    "405" : Method Not Allowed 用户在Request-Line字段定义的方法不答应

    "406" : Not Acceptable 根据用户发送的Accept拖,请求资源不可访问

    "407" : Proxy Authentication Required 类似401,用户必须首先在代理服务器上得到授权 

    "408" : Request Time-out 客户端没有在用户指定的饿时间内完成请求

    "409" : Conflict 对当前资源状态,请求不能完成

    "410" : Gone 服务器上不再有此资源且无进一步的参考地址

    "411" : Length Required 服务器拒绝用户定义的Content-Length属性请求

    "412" : precondition Failed 一个或多个请求头字段在当前请求中错误 

    "413" : Request Entity Too Large 请求的资源大于服务器答应的大小

    "414" : Request-URI Too Large 请求的资源URL长于服务器答应的长度

    "415" : unsupported Media Type 请求资源不支持请求项目格式

    "416" : Requested range not satisfiable请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

    "417" : Expectation Failed 服务器不满足请求Expect头字段指定的期望值

    "500" : Internal Server Error 服务器产生内部错误

    "501" : Not Implemented 服务器不支持请求的函数

    "502" : Bad Gateway 服务器暂时不可用,有时是为了防止发生系统过载

    "503" : Service Unavailable 服务器过载或暂停维修

    "504" : Gateway Time-out 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长

    "505" : HTTP Version not supported 服务器不支持或拒绝支请求头中指定的HTTP版本

    3.错误格式详解

    错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。

     

    错误日志的格式相对灵活,并可以附加文字描述。

     

    错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr(标准错误)的信息会作为调试信息原封不动地记录到错误日志中。

     

    用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access.log)中也会有相应的记录,访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。

    在测试中,对任何问题持续监视错误日志是非常有用的。

    下面是拿我自己的举个例子:

    [Sun Apr 19 03:20:32.155938 2020] [autoindex:error] [pid 2493] [client 219.140.116.105:47164] AH01276: Cannot serve directory /export/home/live/ap/htdocs/test: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

    错误日志格式说明:

    1.错误发生的日期和时间

    2.错误的级别或严重性

    3.导致错误的IP地址

    4.错误信息本身或者说是原因。

    二、Linux——Centos 7

    Linux和Windows日志区别只在于它们的位置不一样,其他的通过观察和Windows是一样的。

    所以可以直接参考上面描述的内容。

    日志位置

    默认在/var/log/httpd/文件夹下,有两个日志文件分别是:访问日志access_log和错误日志error_log

     

    Nginx

    一、Windows

    1.日志位置

    我们可以在配置文件nginx.conf里查看和更改日志的存放位置

    nginx.conf的内容分为以下几段:

    main配置段:全局配置段。其中main配置段中可能包含event配置段;

    event{}:定义event模型工作特性;

    http{}:定义http协议相关配置。

     

    日志记录格式:

    $remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

    $remote_user :用来记录客户端用户名称;

    $time_local : 用来记录访问时间与时区;

    $request : 用来记录请求的url与http协议;

    $status : 用来记录请求状态;成功是200,

    $body_bytes_s ent :记录发送给客户端文件主体内容大小;

    $http_referer :用来记录从那个页面链接访问过来的;

    $http_user_agent :记录客户端浏览器的相关信息;

     

    1. 日志分析

    下面是一段日志:

    192.168.35.132 - - [18/Apr/2020:17:59:09 +0800] "GET /index.html HTTP/1.1" 200 718 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 chrome71.0" "-"

     

    1.192.168.35.132:客户端(用户)的IP地址

    2.- -:客户端的用户名,匿名访问为-

    3.[18/Apr/2020:17:59:09 +0800]:访问时间

    4."GET /index.html HTTP/1.1":请求方式以及请求的资源URI地址

    5.200:状态码

    6.718:请求的页面大小

    7."-":来源页面,即从哪个页面转到本页

    8."Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Chrome/71.0":浏览器信息,操作系统信息

    9."-":获取到IP,获取不到则显示为 -

     

    二、Linux

    日志位置

    访问日志access.log和错误日志error.log在/var/log/nginx目录下。

    配置文件nginx.conf在/etc/nginx目录下。

    日志分析

    跟Windows是一样的,不再多说。

     

    IIS

    日志地址

    打开IIS管理器,右击你要查看的网站,点击活动日志格式旁边的属性就可以设置日志中要记录的字段

    我们也可以知道我们日志文件目录的位置和日志文件名。

    日志分析

    #Software: Microsoft Internet Information Services 7.5

    #Version: 1.0

    #Date: 2020-04-18 12:16:25

    #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: 发出请求时候的日期。
    2. time: 发出请求时候的时间。注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时。
    3. s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。
    4. s-ip:服务器的IP地址。
    5. cs-method:请求中使用的HTTP方法,GET/POST。
    6. cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。
    7. cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示。即访问网址的附带参数。
    8. s-port:为服务配置的服务器端口号。
    9. cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。
    10. c-ip:客户端IP地址。
    11. cs(User-Agent):用户代理,客户端浏览器、操作系统等情况。
    12. sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面。
    13. sc-substatus:协议子状态,记录HTTP子状态代码
    14. sc-win32-status:Win32状态,记录Windows状态代码。
    15. sc-bytes:服务器发送的字节数。
    16. cs-bytes:服务器接受的字节数。
    17. time-taken:记录操作所花费的时间,单位是毫秒。

     

    然后对数据进行筛选,去掉数据相同的列。主要观察用户ip ,用户代理,用户访问的页面以及http状态码。

    通过用户代理的观察,可以知道是否有蜘蛛来过,蜘蛛看过那些页面,返回状态码是什么。如果返回404,那么马上对该页面进行检查是否存在或者是否设置了访问权限。也可以看是否有同一IP恶意浏览你网站。

  • 相关阅读:
    对比git rm和rm的使用区别
    Gerrit日常维护记录
    [原创]Gerrit中文乱码问题解决方案分享
    MySQL 高可用架构
    MySQL 高可用架构
    Android L开发指南
    如何使用GOOGLE高级搜索技巧
    Linux定时关机
    Android源码批量下载及导入到Eclipse
    怎样将Android SDK源码 导入到Eclipse中?
  • 原文地址:https://www.cnblogs.com/qi-yuan/p/12744129.html
Copyright © 2020-2023  润新知