日志服务支持采集IIS日志,并进行多维度分析。本文通过PV、UV、访问地域分布、错误请求、请求方法等维度分析IIS日志,以评估网站访问情况。
前提条件
已采集IIS日志。具体操作,请参见使用IIS配置模式采集日志。
在采集过程中,日志服务已根据日志内容自动生成索引。如果您要修改索引,请参见创建索引。
背景信息
IIS是一款主流的网站服务器,具备简单易用、安全性能高等优势。当您选用IIS搭建网站时,IIS日志是运维网站的重要信息。
日志服务推荐选用W3C日志格式,W3C配置格式如下所示:
logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
IIS日志样例如下所示:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2020-09-08 09:30:26
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2009-11-26 06:14:21 W3SVC692644773 125.67.67.* GET /index.html - 80 - 10.10.10.10 Baiduspider+(+http://www.example.com)200 0 64 185173 296 0
字段前缀说明
前缀
说明
s-
服务器操作
c-
客户端操作
cs-
客户端到服务器的操作
sc-
服务器到客户端的操作
各个字段说明
字段
说明
date
客户端发送请求的日期。
time
客户端发送请求的时间。
s-sitename
客户端所访问的站点的Internet服务和实例的号码。
s-computername
生成日志的服务器名称。
s-ip
生成日志的服务器的IP地址。
cs-method
请求方法,例如:GET、POST。
cs-uri-stem
URI资源,表示请求访问的地址。
cs-uri-query
URI查询,表示查询HTTP请求中半角问号(?)后的信息。
s-port
服务器端口号。
cs-username
通过验证的域或用户名。
如果是通过身份验证的用户,格式为
域\用户名
。如果是匿名用户,显示短划线(-)。
c-ip
访问服务器的客户端真实IP地址。
cs-version
协议版本,例如:HTTP 1.0、HTTP 1.1。
cs(User-Agent)
客户端使用的浏览器。
Cookie
发送或接受的Cookie内容,如果没有Cookie,则显示短划线(-)。
referer
表示用户访问的前一个站点。
cs-host
主机信息。
sc-status
HTTP协议返回状态。
sc-substatus
HTTP子协议的状态。
sc-win32-status
使用Windows术语表示的操作状态。
sc-bytes
服务器发送的字节数。
cs-bytes
服务器接收的字节数。
time-taken
请求所花费的时间,单位:毫秒。
操作步骤
登录日志服务控制台。
在Project列表区域,单击目标Project。
在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。
输入查询和分析语句,然后单击最近15分钟,设置查询和分析的时间范围。
更多信息,请参见步骤一:输入查询和分析语句。
通过IP地址分析访问地域。
*| select ip_to_geo("c-ip") as country, count(1) as c group by ip_to_geo("c-ip") limit 100
统计PV和UV。
*| select approx_distinct("c-ip") as uv ,count(1) as pv , date_format(date_trunc('hour', __time__), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', __time__), '%m-%d %H:%i') order by time limit 1000
统计HTTP请求状态码的占比。
*| select count(1) as pv ,"sc-status" group by "sc-status"
统计流量的流入和流出情况。
*| select sum("sc-bytes") as net_out, sum("cs-bytes") as net_in ,date_format(date_trunc('hour', time), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', time), '%m-%d %H:%i') order by time limit 10000
统计各种请求方法的占比。
*| select count(1) as pv ,"cs-method" group by "cs-method"
统计各种浏览器的占比。
*| select count(1) as pv, case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end as "user-agent" group by case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end order by pv desc limit 10
统计访问数量前十的地址。
*| select count(1) as pv, split_part("cs-uri-stem",'?',1) as path group by split_part("cs-uri-stem",'?',1) order by pv desc limit 10