同一天 CDN 日志 100 万条请求,GA4 会话 18 万,差 82 万,老板问是不是统计坏了。乍看像缓存或者权限的锅,追下去往往不是。

awk '$0 ~ /text\/html/ {n++} END {print n}' access.log
# 再按 UA 排除 bot 后统计一次

追下去是这么回事:日志里包含图片、JS、预取请求和爬虫,统计只记 HTML 页面且要执行 JS。两类数据口径本来就不同,直接相减没有意义。

「CDN 日志差异」这类改动最怕改一半,回滚脚本先准备好,再动生产。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,日志先按 content-type 过滤,只留 text/html;排除已知爬虫 UA 和监控探针;统计只对比页面请求,不算静态资源;把对齐后的口径写进报表说明。

验收就看一点,过滤后的页面请求数和统计会话数差距缩到 15% 以内,差额能用爬虫解释。

作者 9823189