自己搭建简易数据统计模块
最近把 blog 从 octopress 切换到了 hexo,又试用了两个 hexo 模板。直到现在的模板也真是够折腾的. 之前一直用 baidu 的数据统计,因为第三方比较臃肿,因此想考虑自己做一个简单的统计模块。
主要的步骤如下:
- 通过 js 收集统计需要的元数据,然后把元数据打到nginx;
- 通过nginx+lua 把元数据存储到 mongo;
- 后台启动守护进程运行一个 golang 程序来处理元数据,然后将数据分析后的结果放到 mongo 中;
- 前端页面通过 ajax,调用nginx + lua 查询 mongo 的数据
- 元数据格式暂时定为:
js 采集的元数据为:
1 2 3 4 5 6 7 8 9 10 11
| { "u_id" : "WyYznde8T", "agent" : "Mozilla/5.0*(Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML# like Gecko) Chrome/56.0.2924.87 Safari/537.36", "title" : "自己搭建简易数据统计模块|一个phper的博客", "udata" : "", "rf" : "http://guojianxiang.com/", "url" : "http://guojianxiang.com/posts/2016-08-25-LocalSite_DataStatistics.html", "active" : 1, "page_id" : "/posts/2016-08-25-LocalSite_DataStatistics.html", "page_ranstr" : "CECL4HuDK" }
|
在 nginx 和 lua 层,我又追加了几个参数:
1 2 3 4
| { "create_time": 1488268223, "ip": "210.56.60.175", }
|
备注:后期可以考虑加入地址等信息
所以,最终进入 mongo 的元数据为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| { "_id": ObjectId(58b52bbf4dc9a6a37674356c), "page_id": "/posts/2015-09-01-About_HttpStatus200_FromCache_And_304_NotModified.html", "create_time": 1488268223, "rf": "https://www.google.com.hk/", "ip": "210.56.60.175", "active": 1, "udata": "", "page_ranstr": "mPaCbOAvQ", "url": "http://guojianxiang.com/posts/2015-09-01-About_HttpStatus200_FromCache_And_304_NotModified.html", "title": "关于 HttpStatus 200(From Cache)和 304(Not Modified)的探索|一个phper的博客", "agent": "Mozilla/5.0*(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML# like Gecko) Chrome/50.0.2661.102 Safari/537.36", "u_id": "" }
|
- golang 守护进程分析元数据:
1 2 3 4 5 6 7 8 9
| #!/bin/bash while true do /$GOROOT/bin/site_analytics -c /$GOROOT/src/site_analytics/conf/online.conf
date_now=`date +"%Y-%m-%d %H:%M:%S"` echo $date_now" Excute done ..." sleep 30 done
|
目前流量较小,守护进程会每隔 30s 分析一次元数据。
做这件事情的初衷不是单独为了自己重复造轮子,单独再写一个统计模块,主要是为了学习下 lua 和 golang。
短期的打算:用 golang 重写之前的 robot,嗯,练手。