第4章 Lamda架构日志分析流水线
4.1 日志分析概述
随着互联网的发展,在互联网上产生了大量的Web日志或移动应用日志,日志包含用户最重要的信息,通过日志分析,用户可以获取到网站或应用的访问量,哪个网页访问人数最多,哪个网页最有价
值、用户的特征、用户的兴趣等。
一般中型的网站(10万的PV[1]以上),每天会产生1GB以上Web日志文件。大型或超大型的网站,可能每小时就会产生500GB~1TB的数据量。
对于日志的这种规模的数据,通过Spark进行大规模日志分析与日志处理,能够达到很好的效果。
Web日志由Web服务器产生,现在互联网公司使用的主流的服务器可能是Nginx、Apache、Tomcat等。从Web日志中,我们可以获取网站每类页面的PV值(页面浏览)、UV(独立IP数)。更复杂
一些的,可以计算得出用户所检索的关键词排行榜、用户停留时间最高的页面等。更为复杂的,构建广告点击模型、分析用户行为特征等。
1.日志格式
目前常见的Web日志格式主要由两类:一种日志格式是Apache的NCSA日志格式,另一种日志格式是IIS的W3C日志格式。
下面以Nginx日志格式为例进行讲解。
Nginx日志示例格式:
222.68.172.111 - - [18/Sep/2013:06:49:57 +0000]
"GET /images/my.jpg HTTP/1.1" 200 19939
"http://www.angularjs.cn/A00n" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
以下是本例中涉及的一些要素。
·remote_addr:记录客户端的IP地址。本例为222.68.172.111。
·remote_user:记录客户端用户名称,本例--表示为空。
·time_local:记录访问时间与时区,本例为[18/Sep/2013:06:49:57+0000]。
·request:记录请求的URL与HTTP协议,本例为GET/images/my.jpg HTTP/1.1。
·status:记录请求状态,成功是200。
·body_bytes_sent:记录发送给客户端文件主体内容大小,本例中为19939。
·http_referer:用来记录从哪个页面链接访问过来的,http://www.angularjs.cn/A00n。
·http_user_agent:记录客户浏览器的相关信息,本例中为Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,like Gecko)Chrome/29.0.1547.66 Safari/537.36。
注意 如果用户想要更多的信息,则要用其他手段去获取,通过JS代码单独