问网站流量统计工具有哪些,表面上是想要一份名单,实际要解决的是我该用哪个、用几个。工具按数据的采集位置分四类,每类能看到的东西不一样。选错了,要么数据不准,要么白花时间。下面先把类型讲清,再给组合方案。
四类统计工具,采集位置决定能看什么
第一类是前端统计:在页面里放一段脚本,页面加载时上报。优点是配置简单、报表现成、能看设备、地区、来源;缺点是脚本被拦截或页面没加载完就跳走时会漏,而且看不到搜索引擎爬虫的行为。第二类是日志分析:直接解析访问日志,能看到每一次请求,包括爬虫;缺点是要自己搭处理和报表,且无法识别用户是否禁用了脚本。第三类是埋点:在关键按钮、关键流程上加事件上报,适合跟踪注册、下单这类行为;缺点是需要开发配合,埋漏了就没数据。第四类是轻量计数:只给一个访问计数,部署简单,但维度很少。
选型看三个问题
第一个问题,你要回答什么。只想看每天大概多少人,轻量计数就够;要看来源和设备,用前端统计;要区分真人访问和爬虫抓取,日志分析更合适。第二个问题,你有多少技术人力。没人写代码就优先选配置型的工具,别一上来上自建方案。第三个问题,数据要不要长期留存。做长期趋势分析的站,要注意工具的免费版数据保留期限,到期导出一次存档。
组合建议:一主一辅
绝大多数中小站用前端统计为主、日志分析为辅就够了。前端统计负责日常看访客、来源、页面表现;日志分析负责每周对一次账,顺便看爬虫抓了多少、抓了哪些页面、有没有异常请求。两套数据放在一起,前端统计漏掉的那部分就能估出来。如果站里有明确的转化动作,比如提交表单,再加一层事件埋点,把转化跟来源打通。
日志分析不用一上来就上重型方案,用一段脚本先跑出基础数就够。下面这段脚本读 nginx 访问日志,统计总请求数、按状态码分布、以及访问最多的前十个路径。要改的地方是 LOG 那一行;跑完先看状态码分布,5xx 明显偏多说明服务端有问题,再看 Top 路径里有没有本该忽略的探测请求。
# 日志基础统计:请求总数、状态码分布、访问最多的路径
import re
from collections import Counter
LOG = '/var/log/nginx/access.log'
line_re = re.compile(r'"(?:GET|POST|HEAD) (\S+) [^"]*" (\d{3})')
codes = Counter()
paths = Counter()
total = 0
with open(LOG, encoding='utf-8', errors='ignore') as f:
for line in f:
m = line_re.search(line)
if not m:
continue
path, code = m.group(1), m.group(2)
total += 1
codes[code] += 1
paths[path] += 1
print('总请求数:', total)
print('状态码分布:', dict(codes.most_common()))
print('访问最多的路径:')
for p, n in paths.most_common(10):
print(' %6d %s' % (n, p))
跑完先看状态码分布,200 之外的比例有多高、有没有成片的 500。再看 Top 路径,如果排在前面的是一堆带奇怪参数的地址,多半是被扫描,可以在服务器配置里挡掉。把这份输出每周跑一次存下来,请求量的变化曲线也就有了。
上手之后的三个注意点
注意点一,别同时装三个前端统计工具还指望数字一样,它们上报时机和过滤规则不同,对不上是常态。注意点二,工具切换会断历史数据,换工具前先把旧数据导出。注意点三,任何工具都有漏统,重要的判断用两套数据交叉验证,不要单点依赖。
工具选型没有最优解,只有匹配。先确定你要回答的问题,再回头看这份类型清单,答案会很清楚。
相关阅读:
《统计工具装了三个数据都对不上?先统一口径》
《百度统计怎么用?安装、报表与事件跟踪全流程》
《装完百度统计不知道看什么?先看这四个报表》
A5创业网 版权所有