logger.filter.sample.rate=0.1 logger.filter.sample.exclude=ERROR,WARN logger.filter.sample.force_on_status=500,502,504
用户投诉 14:22 下单失败,按 traceId 去日志平台搜,一条都没有。同一时段其他请求的日志都在,采样配置是按哈希取模 10,只留 10%。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:采样在客户端按 traceId 哈希决定,被采中的请求才写全量日志。出问题时用户给的那个 ID 恰好落在未采样的 90% 里,事后无法补。埋点日志和错误日志走同一个采样器,连异常也没留下。
围绕「日志采样丢请求」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:把 ERROR 级别排除在采样之外 无条件写入;慢请求和失败请求按状态码强制保留;采样率改成按量自适应 高峰期降 低谷期升;保留一份 5 分钟的原始索引缓冲 便于回溯。
确认没问题再收工,用一条 500 请求验证,即使没被采样也能在日志平台按 traceId 搜到。
