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

Apache日志            

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

 - - [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:\WINDOWS\system32\LogFiles\ ,在LogFiles文件夹下,存在多个IIS日志文件夹,每个IIS日志文件夹对应一个站点日志。当然IIS日志文件存储位置也可以根据自己的实际情况,在IIS管理器中重新设定。

2、iis访问日志格式

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

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

如图我的是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中进行分组、查询、统计、排序等各种操作,相信用好一定能满足需求。

相关推荐