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


    Apache日志            

    访问日志access_log记录了所有对Web服务器的访问活动,下面是访问日志access_log中的一个标准记录

    192.168.43.117 - - [01/Apr/2018:10:37:19 +0800] "GET / HTTP/1.1" 200 45

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

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

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

     

    错误日志的文件名字是error_log(Windows平台是error.log)。

    定义日志格式及格式串变量含义详解

    定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令。默认httpd.conf文件提供了关于这两个指令的几个示例。  
      LogFormat指令:定义日志格式并为它指定一个名字,以后就可以直接引用这个名字。
      CustomLog指令:设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。

      
    LogFormat指令在默认的httpd.conf文件中,我们可以找到下面这行代码:  

    LogFormat "%h %l %u %t "%r" %>s %b" common   

    该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。格式字符串中的每一个变量代表着一项特定的信息,这些信息按照格式串规定的次序写入到日志文件。   Apache文档已经给出了所有可用于格式串的变量及其含义,下面是其译文:  

    %…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设置得到的服务器名字

     

    iis日志        

    1、iis日志文件名称及路径介绍

      IIS日志,主要用于记录用户和搜索引擎蜘蛛对网站的访问行为。IIS日志中,包括客户端访问时间、访问来源、来源IP、客户端请求方式、请求端口、访问路径及参数、Http状态码状态、返回字节大小等信息。Windows2003环境中,IIS日志默认存储路径:C:WINDOWSsystem32LogFiles ,在LogFiles文件夹下,存在多个IIS日志文件夹,每个IIS日志文件夹对应一个站点日志。当然IIS日志文件存储位置也可以根据自己的实际情况,在IIS管理器中重新设定。

    2、iis访问日志格式

    如图下面是我自己的一个访问日志记录

    如图我的是iis6.0 ,版本是1.0,日志日期是2020-04-14 13:39:38

    下面是相关组成参数解释

    date:发出请求时候的日期。

    time:发出请求时候的时间。注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时

    s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。

    s-ip:服务器的IP地址。

    cs-method:请求中使用的HTTP方法,GET/POST。

    cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。

    cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示。即访问网址的附带参数。

    s-port:为服务配置的服务器端口号。

     

    cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。

    c-ip:客户端IP地址。

    sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面,是自己(客户端自己输入的问题),502表示服务端错误。

    sc-substatus:协议子状态,记录HTTP子状态代码。

    sc-win32-status:Win32状态,记录Windows状态代码。

      有些日志记录中可能还有这些参数

    sc-bytes:服务器发送的字节数。

    cs-bytes:服务器接受的字节数。

    time-taken:记录操作所花费的时间,单位是毫秒。

    cs-version:记录客户端使用的协议版本,HTTP或者FTP。

    s-computername:服务器的名称。 

    s-port:为服务配置的服务器端口号。

     

    nginx日志            

      Nginx的访问日志默认存放在nginx安装目录的logs目录下,具体位置可在nginx.conf中或者nginx安装目录下的conf/vhosts/目录中的站点配置文件**.conf 中进行指定

    各个格式参数的含义:

    • time_local: 访问的时间与时区,比如18/Jul/2012:17:00:01 +0800,时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时
    • $request_time:整个请求的总时间,以秒为单位
    • $status:记录请求返回的http状态码,比如成功是200。
    • $uptream_status:upstream状态,比如成功是200.
    • $body_bytes_sent:发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量
    • $remote_addr:远程客户端的IP地址。
    • $request:请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求
    • $http_referer:记录从哪个页面链接访问过来的(请求头Referer的内容 )
    • $http_user_agent:客户端浏览器信息(请求头User-Agent的内容 )
    • $http_x_forwarded_for:客户端的真实ip,通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通 过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加 x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
    • $upstream_cache_status

              MISS
              EXPIRED - expired, request was passed to backend
              UPDATING - expired, stale response was used due to proxy/fastcgi_cache_use_stale updating
              STALE - expired, stale response was used due to proxy/fastcgi_cache_use_stale
              HIT - (dash) - request never reached to upstream module. Most likely it was processed at Nginx-level only (e.g. forbidden, redirects, etc) (Ref: Mail Thread)

      • $upstream_response_time 请求过程中,upstream的响应时间,以秒为单位
      • $uptream_status:upstream状态,比如成功是200.
      • $upstream_addr:upstream的地址,即真正提供服务的主机地址
      • $remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登录百度的用户名scq2099yt,如果没有登录就是空白。

     

    如何分析网站日志?

    为方便可读性,通常可以使用第三方分析工具来进行分析,如不使用第三方分析工具,或无法满足需求,可将原始数据进行简单处理即可在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中进行分组、查询、统计、排序等各种操作,相信用好一定能满足需求。
  • 相关阅读:
    Innodb之线程独享内存
    Innodb之全局共享内存
    mysql三层体系
    grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
    Mysql多字段模糊查询
    小程序中使用less(最优方式)
    js控制文本框只能输入中文、英文、数字与指定特殊符号
    连接 MySQL 数据库出现问题:The server time zone value ‘�й���׼ʱ��‘ is unrecogni....
    Mysql聚簇索引和非聚簇索引
    npm run dev 和 npm run serve
  • 原文地址:https://www.cnblogs.com/escwq/p/12732969.html
Copyright © 2020-2023  润新知