电商转化率低?90%用户行为数据被服务器日志埋没了
|
接口背锅。又是接口背锅。上个月灰度开关没推完,一半流量走新链路一半还卡在旧日志模块里,结果PM凌晨三点发钉钉:“订单提交成功率跌了零点三——后端接口响应拖慢了转化漏斗!”我截图甩过去:/api/submit 返回全是200,耗时中位数十八毫秒,连熔断都没触发。他回了个“?”。我回了个“你猜用户点了提交按钮之后,鼠标停在‘确认支付’弹窗上十七秒——这十七秒,你的埋点发了吗?我的nginx日志里只有两行:一次POST,一次302。” 去年六月份。我原以为把access_log切到JSON格式、加了$upstream_http_x_trace_id、开了gzip流式压缩就万事大吉。结果数据组跑来问:“用户在商品页右滑三次又返回首页的路径,能捞出来吗?”我说:“你查access_log啊。”他说:“查了。只有URL、status、bytes_sent。滑动?停留时长?页面可视区变化?连UA里都抠不出设备方向。”我翻了翻自己的配置文件,第七行注释还写着“# keep log small”,当时真觉得这是个好习惯。 跟产品吵那天,前端小王蹲在茶水间门口啃包子,腮帮子一鼓一鼓,手里平板正刷Fiddler抓包——他刚被拉去复现“为什么加购按钮点了没反应”。其实按钮有反应,只是event.preventDefault()执行了,但没上报任何行为;而我们的nginx日志根本不管js有没有执行成功。他咽下最后一口,说:“你们连refer完整路径都不打全,只留了个‘/product?id=xxx’,那我从搜索页进来的和从直播弹窗进来的,日志里长得一模一样。”我点头,顺手把咖啡杯放回桌面,杯底压着半张泛黄的运维交接单,印着公司logo,边角翘起来了。 DBA老李上周五下班前敲我工位隔板:“你们日志写得太猛,占了归档表空间七成。”我说:“不写日志写啥?写心跳?写磁盘温度?”他冷笑:“你们日志里连用户是不是点了收藏都没记,光记他请求了几百次静态资源——那三百七十二次/js/common.js调用,能解释为啥他逛了二十八个SKU却没下单?”我哑火。确实不能。那个下午监控大屏左下角,一条绿色曲线毫无征兆抖了一下,是K8s节点重启指标,跟我手头这事完全无关,但我盯着看了三秒,直到测试同事端着水壶路过,顺手给我倒了杯水,水渍在桌沿晕开一小片深色。
文章配图,仅供参考 优胜劣汰——就这四个字,我敢打包票。不是说日志不该精简,是精简错了地方。删掉了user_behavior字段,留着$remote_addr和$http_x_forwarded_for混着打;干掉了页面曝光粒度,但还在疯狂记/favicon.ico的404;砍掉了session级行为链路,却给每个PV都硬塞了个16位trace_id。这不是优化,是拿筛子滤沙子,最后只剩粗颗粒。真正的用户意图藏在click→hover→scroll→pause→back这些间隙里,而我们日志里只刻着“请求开始”和“响应结束”两道刻度。中间那段空白,全靠产品拍脑门补全。oncall手机震了一下,是告警群自动@我,说logstash某个filter线程CPU飙到九十二——我划掉没回,反正它十分钟自己会降下来。这事儿我熟,上月同款故障,重启后一切如常,没人知道那十分钟里,到底有多少点击行为漏过了logstash的grok解析,又被Kafka丢弃。这种事儿说不准。但我知道,只要日志格式不改,只要前端上报还是依赖document.visibilityState变化后再延迟发(延迟三秒,超时就丢),只要产品需求文档里还写着“用户行为分析由数据平台统一提供”,那90%就是实测,不是概数。 前两天听测试妹子吐槽:她们跑回归时发现,购物车页点击“立即结算”后,如果网络弱一点,UI会禁用按钮但不显loading,用户以为卡死了,就切出去刷微信——这个场景,我们所有链路监控全绿。日志里只有一条200,一条302,一条307,干净得像没发生过任何挣扎。可实际上,那个用户已经在微信里点开了竞品小程序。这个我敢打包票。因为我就坐她斜后方,看见她手机屏幕亮起时弹出的推送标题:「您收藏的连衣裙降价啦!」 说到这儿我想起工资条——五月绩效栏里,“跨团队协同”那一项扣了三分。理由是“未主动对齐前端埋点规范”。我盯着那行字看了一分钟,没申诉。毕竟,我们的logrotate脚本至今还按size轮转,而不是按行为事件切分;我们elk集群的index模板里,仍然没有user_session_id字段;上季度OKR里那句“构建用户全旅程可观测体系”,现在正躺在Jira里,状态是“Blocked by Budget Review”。这事儿我说不准,但我知道,只要预算评审没下来,我们就还得继续在access_log里找线索,像考古队在灰烬里扒碳化米粒。 明早十点我要去参加一个会,主题叫《如何用A/B测试提升首屏转化率》。我已经想好了发言顺序:先等他们讲完,再问一句:“各位用的日志源,能覆盖页面停留+滚动+交互中断这三个维度吗?”要是没人接话,我就掏出笔记本,画个表格:左边列“实际发生的行为”,右边列“日志里能捞到的字段”,中间画叉——叉到第三行我自己都懒得数了。反正也不指望他们改。我打算会后回工位,把nginx.conf里那行log_format注释去掉,重新加上$upstream_http_x_event_data。至于能不能解析出来?不管了。至少得让后来人知道,这行曾经存在过。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


