网站访问日志统计分析-阿里云开发者社区

开发者社区> 云原生> 正文

网站访问日志统计分析

简介: 用户使用ECS搭建网站,网站的访问日志(Nginx,Apache访问日志)收集到阿里云日志服务中供查询。为了从访问日志中挖掘出更多价值,日志服务提供了一个docker镜像,用于实时统计和展示网站访问的一系列指标,例如PV,UV,延时,地理,状态码,爬虫,网络流量等指标。

场景

用户使用ECS搭建网站,网站的访问日志(Nginx,Apache访问日志)收集到阿里云日志服务中供查询。为了从访问日志中挖掘出更多价值,日志服务提供了一个docker镜像,用于实时统计和展示网站访问的一系列指标,例如PV,UV,延时,地理,状态码,爬虫,网络流量等指标。

dashboard

dashboard1

指标

PV

分别以5分钟、1小时、1天为统计周期,统计每个周期内的日志总数。

UV

分别以1小时、1天为统计周期,统计每个周期内的IP总数。

页面

以天为统计周期,统计访问最多的页面路径,以及访问最多的参数。例如请求/fonts/fontawesome-webfont.woff?v=4.2.0,提取出页面/fonts/fontawesome-webfont.woff 和参数v = 4.2.0

方法

方法指的是HTTP方法,包括GET,POST,DELETE,PUT等。以小时和天为统计周期,统计每个周期内每个方法的日志条数。

地理

统计每个IP所属的省份,展示所选时间段内每个省份的分布图。

状态码

状态码指的是HTTP状态码,包括200,401,403,500等常见状态码。以小时和天为统计周期,统计每个周期内的状态码次数。

浏览器

浏览器分为多个子指标,分别统计每一个子指标出现的次数。包括

  • 终端类型

    • 移动终端
    • 非移动终端
  • 浏览器类型

    • chrome
    • safari
    • IE
    • firefox
  • 操作系统

    • mac
    • window
    • linux
  • 浏览器内核

    • webkit
    • gecko

爬虫

统计常见的爬虫访问量,常见爬虫包括百度、Google、360、今日头条。

来源页

根据referer统计的来源域名,统计来源最高的20个域名。

延时

  • 统计每5分钟内的网络请求的延时的平均值和最大值。
  • 统计每天分布最多的延时的分布情况。出现次数较少的延时区间不会加入统计,比如一天内只有一次延时为8s,大部分的延时都在0.3s 到 0.5s之间,那么只会统计0.3->0.4, 0.4->0.5的延时分布。

流量

以小时为单位,根据request_length字段和response_length字段,统计访问的入网流量和出网流量的大小。

使用视频

必要条件

  • Nginx/Apache访问日志必须接入到阿里云日志服务
  • 开通日志服务
  • 开通容器服务(或自己安装docker镜像)
  • 有阿里云AccessKey可以访问日志服务(可以是子帐号)

帐号权限

如果您使用子帐号授权,请参考下边的权限配置,将${your_project}替换成你的Project名称,${your_logstore}替换成您的访问日志所在的Logstore。

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "log:Get*",
        "log:List*"
      ],
      "Resource": "acs:log:*:*:project/${your_project}/logstore/${your_logstore}",
      "Effect": "Allow"
    },
    {
      "Action": [
        "log:CreateConsumerGroup",
        "log:ListConsumerGroup",
        "log:ConsumerGroupUpdateCheckPoint",
        "log:ConsumerGroupHeartBeat",
        "log:GetConsumerGroupCheckPoint"
      ],
      "Resource": "acs:log:*:*:project/${your_project}/logstore/${your_logstore}/consumergroup/*",
      "Effect": "Allow"
    }
  ]
}

非必要条件

  • 自建mysql或者RDS(默认使用docker镜像内的mysql)

实施步骤

实施步骤以ubuntu系统为例,其他系统请以本文档做参考

通过容器服务:

  1. 访问日志接入到阿里云日志服务,具体接入方法请参考阿里云日志服务文档。
  2. 开通容器服务
  3. 在容器服务中创建集群,操作系统选择ubuntu。
  4. 在容器服务中创建应用

    1. 应用名称输入dashboard(或自定义)。
    2. 部署集群选择刚刚创建的集群。
    3. 点击“使用镜像创建”。
    4. 点击选择镜像,选择阿里云镜像,搜索dashboard。选中出现的aliyunlog/dashboard镜像。
    5. 在【web路由规则】中,容器端口输入80,域名输入dashboard,点击“添加”。
    6. 点击确定。
  5. 在【服务】中,找到刚刚创建的服务(dashboard,或自定义服务名称),点击服务名称,在出现的基本信息中找到访问端点,例如访问端点。

通过ECS安装镜像:

 docker pull registry.aliyuncs.com/aliyunlog/access_log_stat_dashboard

docker run --dns 223.5.5.5  -p  80:80  -d registry.aliyuncs.com/aliyunlog/access_log_stat_dashboardaccess_log_stat_dashboard
  1. 在浏览器中打开上述URL,开始使用。
  2. 首次打开dashboard,需要使用日志服务的帐号信息登录,包括包括region,project ,AccessId, AccessKey。
  3. 登录完成后,首次使用dashboard要求配置:

    1. 日志信息。包括region,project ,AccessId, AccessKey,LogStore。比登录信息多了一个LogStore。
    2. 日志内容字段映射,docker镜像为使用一些默认的名称来描述访问日志的一些字段,如果您在接入日志服务时使用不同的字段名称,请在这里做字段映射,保证您的字段的含义能够被分析程序识别。例如latency字段,假如您接入日志服务时配置该字段的名称为request_time,那么需要在这里填写request_time。一段日志样例:
192.168.1.101 - - [17/Mar/2016:10:28:30 +0800] "GET /fonts/fontawesome-webfont.woff?v=4.2.0 HTTP/1.1" 0.021 1207 304 0 "https://sls.console.aliyun.com/css/lib.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
后台处理key 字段样例
ip 192.168.1.101
method GET
path /fonts/fontawesome-webfont.woff?v=4.2.0
latency 0.021
request_length 1207
status 304
response_length 0
referer https://sls.console.aliyun.com/css/lib.css
user_agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

高级选项

镜像计算结果的数据保存在镜像的mysql中,如果您释放您的容器,那么历史计算结果会丢失,为了保证所有的历史结果,请您使用自己的mysql:

  • 创建一个mysql用户,允许这个用户从docker中访问这个mysql

    grant all privileges on *.* to loguser@'%' identified by '123456789';
    flush privileges;
  • 上述用户名和密码根据自己的需求自定义
  • 修改/etc/mysql/my.conf ,注释掉bind-address 0.0.0.0这一行
  • 重启mysql

    sudo service mysql restart
  • 点击dashboard页面上方的『计算结果临时保存在docker容器中,若需永久保存,请更改数据库』,进入配置mysql。填写mysql的地址和账户信息,点击【迁移】。

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云原生
使用钉钉扫一扫加入圈子
+ 订阅

云原生时代,是开发者最好的时代

其他文章