max_over_time(node_cpu_seconds_total{mode="user"}[1m])
quantile_over_time(0.95, http_request_duration_seconds[5m])

用户反馈每小时有两次卡顿,每次持续 30 秒。Grafana 上 CPU 使用率那条线一直在 40% 上下,拉长到 6 小时看不到任何凸起。同一时段应用的 P99 耗时确实到了 3 秒。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,面板用的是 avg_over_time 加 5 分钟窗口,30 秒的峰值被摊到 300 秒里,涨幅只剩六分之一。采集间隔 15 秒,短尖刺本来就只落两三个点。平均值这条线天生不适合看突发。

「聚合窗口掩盖尖刺」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:改用 max_over_time 或直接看原始采集点;把 step 调到和抓取间隔一致 保住分辨率;给关键指标加一条 P95 和峰值的曲线 分开展示;用压测造一次 30 秒尖峰 验证面板能看到。

改完只确认一件事:压测造出的 30 秒尖峰在面板上能看到明显凸起,峰值接近 95%。

作者 9823189