个人站长选用IIS作为服务器搭建网站,需要通过分析IIS访问日志来获取PV、UV、IP区域分布、错误请求、流量流入流出,以评估网站访问情况。

前提条件

  • 已开启日志服务。
  • 已创建了Project和Logstore。详细步骤请参见准备流程
  • IIS日志采用W3C日志格式。
    为了更好满足分析场景,推荐选用W3C日志格式,在IIS管理器中单击选择字段按钮,勾选发送的字节数和接收的字节数
    图 1. 选择字段

    选择字段

背景信息

日志格式

W3C配置格式如下:
logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
  • 字段前缀说明
    前缀 说明
    s- 服务器操作
    c- 客户端操作
    cs- 客户端到服务器的操作
    sc- 服务器到客户端的操作
  • 各个字段说明
    字段 说明
    date 日期,表示活动发生的日期。
    time 时间,表示活动发生的时间。
    s-sitename 服务名,表示客户端所访问的该站点的 Internet 服务和实例的号码。
    s-computername 服务器名,表示生成日志项的服务器名称。
    s-ip 服务器IP,表示生成日志项的服务器的IP地址。
    cs-method ?方法,例如GET或POST。
    cs-uri-stem ?URI资源,表示请求访问的地址。
    cs-uri-query URI查询,表示查询HTTP请求中问号(?)后的信息。
    s-port 服务器端口,表示客户端连接的服务器端口号。
    cs-username 通过验证的域或用户名,对于通过身份验证的用户,格式是域\用户名;对于匿名用户,是一个连字符 (-)。
    c-ip 客户端IP,表示访问服务器的客户端真实IP 地址。
    cs-version 协议版本,例如 HTTP 1.0 或 HTTP 1.1。
    user-agent 用户代理,表示在客户端使用的浏览器。
    Cookie Cookie,表示发送或接受的Cookie内容,如果没有Cookie,则显示连字符(-)。
    referer 引用站点,表示用户访问的前一个站点。此站点提供到当前站点到链接。
    cs-host 主机,表示主机头内容。
    sc-status ?协议返回状态,表示HTTP或FTP的操作状态。
    sc-substatus HTTP子协议的状态。
    sc-win32-status ?win32状态,即用 Windows使用的术语表示的操作的状态。
    sc-bytes ?服务器发送字节。
    cs-bytes ?服务器接收字节。
    time-taken ?所用时间,即操作所花时间长短,单位为毫秒。

操作步骤

  1. 进入数据接入向导。
    1. 日志服务控制台首页单击Project名称。
    2. 在对应日志库下,单击数据接入后的加号。
  2. 接入数据中选择IIS-文本日志
  3. 选择日志库。
    可以选择已有的Logstore,也可以新建Project和Logstore。
  4. 创建机器组。
    在创建机器组之前,您需要首先确认已经安装了Logtail。 安装完Logtail后单击确认安装完毕创建机器组。如果您之前已经创建好机器组 ,请直接单击使用现有机器组
  5. 应用机器组。
    选择一个机器组,将该机器组从源机器组移动到应用机器组
  6. Logtail配置。
    1. 填写配置名称日志路径
      您可以在IIS管理器中查看日志路径。
      图 2. 查看日志路径

      查看日志路径
    2. 选择日志格式
      选择您的IIS服务器日志采用的日志格式。
      • IIS:Microsoft IIS日志文件格式。
      • NCSA:NCSA公用日志文件格式。
      • W3C:W3C扩展日志文件格式。
    3. 填写IIS配置字段
      • IIS或NCSA格式:配置字段已预设。
      • W3C日志:请按照以下步骤配置IIS配置字段
        1. 打开IIS配置文件。
          • IIS5配置文件默认路径:C:\WINNT\system32\inetsrv\MetaBase.bin
          • IIS6配置文件默认路径:C:\WINDOWS\system32\inetsrv\MetaBase.xml
          • IIS7配置文件默认路径:C:\Windows\System32\inetsrv\config\applicationHost.config
          图 3. 查看配置文件

          查看配置文件
        2. 找到logFile logExtFileFlags字段,并复制引号内的字段内容。
        3. 粘贴字段内容到IIS配置字段输入框中的引号内。
          图 4. 配置数据源

          配置数据源
    4. 确认IIS键名称。
      IIS日志服务会自动提取出相应的键名称。
      图 5. IIS键名称

      IIS键名称
    5. 选择是否丢弃解析失败日志
      请选择解析失败的日志是否上传到日志服务。

      开启后,解析失败的日志不上传到日志服务;关闭后,日志解析失败时上传原始日志,其中Key为__raw_log__、Value为日志内容。

    6. 酌情配置高级选项(可选)。
      确认配置后单击下一步
  7. 查询分析配置
    日志服务默认提供数据键名称以便分析使用,可以设置实际数据键名称(根据预览数据生成),和默认数据键名称形成映射关系。如果您需要重新设置索引,请在查询分析页面选择查询分析属性 > 设置进行修改。
    确保日志机器组心跳正常的情况下,浏览采集上来的数据。
    图 6. 预览日志

    预览日志
    系统已为您预设了名为LogstoreName-iis-dashboard的仪表盘。配置完成后,您可以在仪表盘页面中查看来源IP分布、请求状态占比等实时动态。
    图 7. 仪表盘

    仪表盘
    • 访问地域分析(ip_distribution):统计IP来源情况,统计语句如下:
      | select ip_to_geo("c-ip") as country, count(1) as c group by ip_to_geo("c-ip") limit 100
      图 8. 访问地域分析

      访问地域分析
    • PV/UV统计(pv_uv):统计最近的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
      图 9. PV/UV统计

      pv/uv统计
    • 请求状态占比(http_status_percentage):统计http请求状态码的占比,统计语句如下:
      *| select count(1) as pv ,"sc-status" group by "sc-status"
      图 10. 请求状态占比

      请求状态占比
    • 浏览流入流出统计(net_in_net_out):统计流量的流入和流出情况,统计语句如下:
      *| 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
      图 11. 出入流量统计

      出入流量统计
    • 请求方法占比(http_method_percentage):统计各种请求方法的占比,统计语句如下:
      *| select count(1) as pv ,"cs-method" group by "cs-method"
      图 12. 请求方法占比

      请求方法占比
    • 请求UA占比(user_agent):统计各种浏览器的占比,统计语句如下:
      *| 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
      图 13. 请求UA占比

      请求UA占比
    • 访问前十地址(top_10_page):统计访问数量前十的地址,统计语句如下:
      *| 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
      图 14. 访问前十地址

      访问前十地址