文档

分析IIS日志

更新时间:

日志服务支持采集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-queryURI查询,表示查询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-substatusHTTP子协议的状态。
    sc-win32-status​使用Windows术语表示的操作状态。
    sc-bytes​服务器发送的字节数。
    cs-bytes​服务器接收的字节数。
    time-taken​请求所花费的时间,单位:毫秒。

操作步骤

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。

    image

  4. 输入查询和分析语句,然后单击最近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
      pv/uv统计
    • 统计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
      请求UA占比
    • 统计访问数量前十的地址。
      *| 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
      访问前十地址
  • 本页导读 (1)