开发者学堂课程【场景实践-基于阿里云 Quick BI 对 MOOC 网站日志分析:日志收集简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/524/detail/7073
日志收集简介
内容介绍:
一、前言
二、网站日志
三、网站日志分析
四、网站访问日志搜集-nginx
五、网站访问日志搜集-tomcat
一、前言
当前社会是一个信息爆炸的社会。仅仅中国就有超过7亿的网民,而这么多网民每天都在根据自己的兴趣爱好生活或者工作需要去访问形形色色的网站。只需要连接网络,无时无刻都在产生着日志数据。在海量的日志数据中隐藏着有价值的信息。为此网站开发人员或分析人员必须通过数据分析获知这些有价值的信息,并由此了解网站当前情况。通过这些信息还可以作为网站优化的依据。
1、本节课程目标:
(1)了解网站日志分析的意义(日志是什么,为什么要收集它以及日志分析的重要性)
(2)了解网站日志如何搜集(举两个例子包括Tomcat和nginx2个服务器去如何配置收集我们的日志数据)
(3)使用编程语言对日志数据进行处理
(4)使用 MaxCompute 处理数据
(5)使用 QuickBI(阿里云开发的高效安全稳定的商业智能平台)以图表形式展示数据
2、目录结构:
网站日志分析背景
网站日志分析一般流程
使用阿里云产品进行分析
案例:MOOC网站用户访问日志分析
二、网站日志
日志∶网络设备、系统及服务程序等,在运作时都会产生一个叫 log 的事件记录。它的每一行都记载着日期、时间、使用者及动作等相关操作的描述。
网站日志就是网站在运行过程中所产生的日志,包括系统日志和程序日志。
l 系统日志一般就是网站所基于的服务器容器所自动生成的日志,如访问日志,系统错误日志等等。常见的网站系统错误日志有Tomcat、nginx等
l 程序日志则由用户在程序中自定义构建。(所以并不具备一定的通用性,用户可以通过自己的程序去任意构建日志)
本次课程实验中使用的是网站的系统访问日志。系统的访问日志具有通用的格式。
网站日志分析的重要性:
网站日志本身并没有太大价值,而当我们对其进行分析并利用的时候就会产生很大的价值。
通过对网站日志的分析,我们可以了解︰
l 网站运行状况(如网站PV, UV )
l 网站安全状况(如恶意攻击,密码暴力破解)
l 网站运营状况(如搜索引擎流量来源)
l 网站用户信息(如操作系统,浏览器) 可以在日志数据中收集到用户操作系统和浏览器信息
以上分析可以提供决策支持,比如增加服务器,提升网站安全,修改营销策略等。
三、网站日志分析
1.数据采集:通过服务器容器自动搜集
l Tomcat
l Nginx
l 程序(也可以在网站程序中进行自定义设计)
2.数据处理:
l 清理(清理掉不需要的数据)
l 转换(将一些数据转换为我们想要的数据)
l 抽取(从海量的数据中提取想要的数据)
l SQL
l Java(如果数据量不太大,可以通过Java、Python在本地进行数据处理)
l Python
l Hadoop(如果数据量很大,需要使用大数据平台对日志文件在分布式平台上进行处理)
3.数据展现:
l 图表化(对于图表化可以使用工具Tableau)
l Tableau(可以对没有编程或开发经验的人去使用)
l D3.js(如果对JavaScript前端技术比较了解可以使用D3.js)
l Python(也可以使用Python进行图表化的展示)
4.结果处理:对网站日志进行数据分析,最终目的为了结果处理,从中提取有用信息对网站做针对性优化
l 程序优化
l 服务器调整
l SEO优化
四、网站访问日志搜集-nginx
Nginx是一个高性能的HTTP和反向代理服务器。(常用来做用户请求的分发以及简单的负载均衡。默认不开启访问日志收集)
要开启访问日志收集,修改nginx配置文件: conf/nginx.conf,只需要增加access_log即可。如果想要配置访问日志的格式,可以使用log_format。
access_log logs/access.log
//首先指定access_log,然后指定日志的路径,默认处于安装目录下,即当前目录为nginx安装下的logs/access.log
access _log logs/access.log combined;
//可以自己构建日志的格式,默认在后面增加格式名称
log_format combined '$remote_addr - $remote_user [$time_local] '
‘"$request" $status $body_bytes_sent ' ’"$http_referer" "$http_user_age”’;
//同时通过log_format指定格式名称,默认格式为地址、远程用户名、本地时间、请求地址、HTTP请求状态、发送字节数、链接来源、用户客户端信息
五、网站访问日志搜集-tomcat
Tomcat 是一个被广泛使用的免费的开放源代码的Web应用服务器。
修改 tomcat 配置文件: conf/server.xml,在安装目录下找到 conf 目录,在目录下找到server.xml,在server.xml中找到最下面的 Access log 配置,默认被注释了,即默认不开启访问日志收集。放开注释 tomcat 将会自动搜集访问日志。
访问日志配置如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
//指定host名字,app所处目录
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
//默认提供不需要修改 directory 日志文件所输出的目录,此处默认为logs。若想输出到其它路径,可以进行修改
prefix="localhost_access_log." suffix= ".txt"
//日志前缀文件名,默认后缀为.txt文件
pattern="%h %l %u %t "%r" %s %b"/>
</Host>
//整个日志格式,%h -远程主机名即host,%l -远程逻辑从identd的用户名,%u -远程用户身份验证,%t -用户访问日期和时间。 "为””,即%r被””括住,%r - 第一行的要求,%s -HTTP状态请求的响应(一般成功为200,若为300及以上表示请求被跳转,若为400及以上表示用户请求错误,客户端请求发生错误可能为找不到页面或者客户端认证失败,若为500及以上表示网站服务器发生错误)%b -发送的字节数即http请求的流量
日志格式:
%a-远程IP地址
%A-本地IP地址
%b -发送的字节数,不包括HTTP头,如果为0则为”-"
%B–发送的字节数,不包括HTTP头
%h -远程主机名
%H-请求协议
%l -远程逻辑从identd的用户名(总是返回'-')
%m-请求方法
%p-本地端口
%q-查询字符串
%r - 第一行的要求
%s -响应的HTTP状态代码
%S-用户会话ID
%t -日期和时间,在通用日志格式
%u -远程用户身份验证
%U–请求的URL路径
%v -本地服务器名
%D-处理请求的时间(以毫秒为单位)
%T -处理请求的时间(以秒为单位)
%I -当前请求的线程名称