网站访问日志统计分析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 用户使用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的地址和账户信息,点击【迁移】。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
Linux 应用服务中间件 PHP
性能工具之linux常见日志统计分析命令
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的。
171 1
|
16天前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
16天前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
13天前
|
网络安全
【Azure Service Bus】启用诊断日志来获取客户端访问Azure Service Bus的IP地址 [2024-03-26 实验结果失败]
【Azure Service Bus】启用诊断日志来获取客户端访问Azure Service Bus的IP地址 [2024-03-26 实验结果失败]
|
2月前
|
存储 开发框架 前端开发
循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志
循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志
|
2月前
|
监控
查看服务器/IIS日志、log、访问信息基本方法
除了手动查看,你也可以使用日志分析工具,如Log Parser、AWStats等,这些工具可以帮助你更方便地分析日志数据。
223 1
|
2月前
|
应用服务中间件 Linux 开发工具
Nginx14---目录结构分析,查看Ngnix访问日志命令的写法​
Nginx14---目录结构分析,查看Ngnix访问日志命令的写法​
|
3月前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
146 0
|
3月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
3月前
|
应用服务中间件 nginx
Nginx开启访问日志记录
Nginx开启访问日志记录
71 0
下一篇
DDNS