apache、nginx、iis日志记录的各个字段内容与含义
Apache日志详解:
-
Apache日志文件名称及路径介绍
当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access_log(在windows上是access.log)和错误日志error_log(在Windows上是error.log)。日志文件的路径根据安装方式不同位置也是不一样的,一般都在Apache安装目录的logs子目录中,日志文件路径可根据实际安装情况在Apache的配置文件中查找。
-
Apache访问日志格式详解
访问日志access.log记录了所有对Web服务器的访问活动,下面是访问日志access.log中的一个标准记录
- 远程主机IP:表明访问网站的是谁
- 空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,用“-”代替
- 空白(登录名):用于记录浏览者进行身份验证时提供的名字 method resource protocol
- 请求时间:用[]包围,而且采用“公用日志格式”或者“标准英文格式”。时间信息最后的“+0800”表示服务器所处的时区位于UTC之后的8小时
- 方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法+资源+协议”
METHOD:get、post、head......
RESOURCE:/、index.html、/default/index.php.......(请求的文件)
PROTOCOL:HTTP+版本号
6.状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地相应浏览器地请求,一切正常
7.发送字节数:表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或一个月内发送了多少数据。
-
Apache访问日志配置
- 访问日志格式分类
apache中日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。
2. 配置Apache访问日志格式命令及参数
配置Apache访问日志格式主要有两个参数,即LogFormat指令和CustomLog指令。
LogFormat指令:定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。
CustomLog指令:设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。
-
Apache日志的定制
有时候我们需要定制Apache默认日志的格式和内容,比如增加或减少日志所记录的信息、改变默认日志文件的格式等。
Apache日志格式串的变量及其含义:
%A: 本地IP地址
%B: 已发送的字节数,不包含HTTP头
%b: CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0。
%{FOOBAR}e: 环境变量FOOBAR的内容
%f: 文件名字
%h: 远程主机
%H 请求的协议
%Foobar}i: Foobar的内容,发送给服务器的请求的标头行。
%l: 远程登录名字(来自identd,如提供的话)
%m: 请求的方法
%{Foobar}n: 来自另外一个模块的注解“Foobar”的内容
%{Foobar}o: Foobar的内容,应答的标头行
%p: 服务器响应请求时使用的端口
%P: 响应请求的子进程ID。
%q: 查询字符串(如果存在查询字符串,则包含“?”后面的部分;否则,它是一个空字符串。)
%r: 请求的第一行
%s: 状态。对于进行内部重定向的请求,这是指原来请求的状态。如果用%...>s,则是指后来的请求。
%t: 以公共日志时间格式表示的时间(或称为标准英文格式)
%{format}t: 以指定格式format表示的时间
%T: 为响应请求而耗费的时间,以秒计
%u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%U: 用户所请求的URL路径
%v: 响应请求的服务器的ServerName
%V: 依照UseCanonicalName设置得到的服务器名字
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,如果没有登录就是空白。
iis日志详解:
-
iis日志字段:
日志的主体是一条一条的请求信息,请求信息的格式是由#Fields定义的,每个字段都有空格隔开。
若是重启进程,则这四行会再记录一次。
-
前缀含义:
s-:服务器操作
c-:客户端操作
cs:客户端到服务器的操作
sc-:服务器到客户端的操作
-
各个字段的含义:
data:日期 2020-04-21
time:时间 16:27:11+8小时
s-sitename:服务名 W3SVC2
s-computername:服务器名 VMS01487
s-ip:服务器ip 10.8.2.174
cs-method:方法 GET/POST
cs-url-query:访问的查询字符串 from=beijingxi&to=xinxiang2&day=1&number=&fromCn=%B1%B1%BE%A9&toCn=%D0%C2%CF%E7
cs-url-stem:请求访问的页面 /TrainBooking/Search.aspx
s-port:服务器端口 80
cs-ip:客户端ip 120.71.108.114
cs-version:协议版本 HTTP/1.1
cs(User-Agent):用户代理 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+QQDownload+718)
cs(Cookie):cookie
cs(Referce):引用站点
cs-host:主机 trains.xxx.com(有时直接访问服务器IP,10.8.2.174)
cs-status:协议返回状态 200
cs-substatus:Http子协议的状态 0
sc-win32-status :Win32® 状态
sc-bytes:服务器发送的字节数 87682
cs-bytes:服务器接收的字节数 1324
time-taken:所用时间 187