外观
3.2 统计口径
约 719 字
日志报表
本页对应「三、操作步骤」的 3.2,固定访问量、独立访客与错误率的计算方式与过滤条件,写入口径说明,使不同人、不同时间算出的结果一致。返回上级:访问日志分析。
前置条件
- 3.1 已完成,字段对照表确认了可用的列位置。
- 已确定报表周期与时间边界,例如“按自然日、时区 UTC+08:00”。
- 已明确是否统计静态资源、是否包含爬虫流量。
操作步骤
- 口径第一条:剔除静态资源与探测请求,只统计页面访问:
awk '{
p=$7; sub(/\?.*/, "", p);
if (p ~ /\.(css|js|png|jpg|jpeg|gif|svg|ico|woff2?)$/) next;
if (p ~ /^\/(health|ping|robots\.txt)/) next;
print p
}' /srv/axis/logs/access-2026-05-19.log | wc -l- 口径第二条:独立访客按客户端地址去重,同一天内同一地址只计一次:
awk '{print $1}' /srv/axis/logs/access-2026-05-19.log | sort -u | wc -l- 口径第三条:错误率只统计 5xx,分母为页面请求总量,并在报表中注明:
awk '{
p=$7; sub(/\?.*/, "", p);
if (p ~ /\.(css|js|png|jpg|jpeg|gif|svg|ico|woff2?)$/) next;
total++;
if ($9 ~ /^5/) err++;
} END { printf "total=%d errors=%d rate=%.4f\n", total, err, err/total }' \
/srv/axis/logs/access-2026-05-19.log- 把口径写进说明文件,随报表一起归档:
cat > /srv/axis/reports/definitions.md <<'EOF'
- 访问量:剔除静态资源与健康检查后的页面请求数。
- 独立访客:按客户端地址去重,自然日内唯一。
- 错误率:5xx 请求数 / 页面请求数,不含 4xx。
- 时间窗口:自然日 00:00—24:00(UTC+08:00)。
EOF结果确认
- 同一份日志重复执行统计,结果完全一致。
- 访问量小于日志总行数,差值可解释为静态资源与探测请求。
- 独立访客数不超过访问量,两个数值关系合理。
- 错误率为 0 到 1 之间的小数,格式化后的百分数与原始值一致。
注意事项
- 口径说明必须与脚本一起版本管理,脚本改了而说明没改,报表就会失去可比性。
- 去重口径变化(例如改用 UA + IP)会直接改变独立访客数,变更时要标注生效日期。
- 4xx 不计入错误率时要在报表中写明,否则会被误读为“没有错误”。
- 分母与分子必须来自同一份过滤结果,分母包含静态资源而分子不包含时,错误率会被系统性低估。
- 统计脚本输出的中间结果要保留,口径争议时能逐层回溯,而不是只保留最终百分比。
- 跨月报表注意月份天数差异,日均值不能直接用月总量除以固定天数。