如果站长实用软件的采样间隔是5分钟,而异常只持续40秒,那么监控面板上很可能什么都不显示,或者只留下一个被平均掉的轻微波动。要补捉这类短时异常,不能只靠调低全局采样频率,而应该先判断异常属于哪一类,再决定用高频短时采样、事件触发采样,还是从访问日志和系统日志里做离线核对。
采样频率太低时,最容易犯的错误是把“没看到”直接当成“没发生”。假设某站点在每天固定时段出现一次短暂卡顿,持续约30秒,但站长实用软件的采样间隔是5分钟,那么一天最多只有288个采样点,30秒的异常落在两个采样点之间,很可能完全不被记录。
这时需要先区分两种解释:
区分方法不是继续盯着同一个低频面板,而是找一个独立证据源。例如,把同一时间段的Web访问日志按秒或按分钟聚合,看请求耗时、状态码或连接数是否出现尖峰。如果日志里也没有对应波动,那么更可能是客户端侧问题;如果日志里有尖峰,而监控面板没有,才说明是采样间隔偏长导致的漏报。
把全局采样间隔从5分钟改成10秒,看起来很直接,但代价是数据量、存储和查询压力都会成倍上升。对多数站长实用软件来说,更现实的做法是保留低频基线采样,同时增加事件触发采样。
事件触发采样的核心是:平时按低频记录,只有满足某个条件时才临时提高采样频率。例如:
这样做的结果是:低频基线仍然可用于看长期趋势,高频片段则用于还原短时异常。下一步要做的,是核对触发条件是否合理。如果阈值设得太低,会频繁触发,数据量仍然很大;如果设得太高,短时异常又会被漏掉。可以用一段已知异常的日志做回放,调整阈值,直到触发次数和漏报次数都落在可接受范围内。
很多站长实用软件的实时面板是按固定间隔聚合的,短时异常一旦被平均,就很难再还原。此时更可靠的办法是回到原始日志,按更细的时间粒度重新聚合。
假设某天下午用户反馈“网站有几秒钟打不开”,但监控面板显示一切正常。可以这样做:
如果按秒聚合后能看到一个明显的尖峰,而按5分钟聚合时被平均掉了,就说明问题出在采样粒度,而不是异常不存在。这个结论会直接影响下一步:如果异常确实存在,就需要调整触发采样规则;如果按秒聚合后仍然没有尖峰,就要转向排查客户端或第三方依赖。
短时高频采样不是越多越好。假设每次触发都记录5秒粒度的数据,持续2分钟,那么一次触发会产生24条记录。如果一天触发200次,就是4800条额外记录。这个量本身不大,但如果触发条件设置不当,导致全天持续触发,数据量就会迅速接近全局高频采样。
因此需要给短时高频采样设三个边界:
这些边界的具体数值需要根据站点规模、日志量和查询习惯来定,不能直接照搬。可以先在一个非核心指标上试运行一周,观察触发次数、数据增量和查询耗时,再决定是否推广到核心指标。
采样频率低时,最危险的不是漏掉一次异常,而是把漏掉当成正常。一个可操作的判断顺序是:先用独立日志确认异常是否存在;如果存在,再用事件触发采样补捉;如果不存在,就转向客户端或第三方排查。
假设某站长实用软件的采样间隔是5分钟,某次短时异常持续约40秒。按这个顺序,先查日志,发现日志中有对应尖峰,于是给该接口增加“响应时间超过阈值时降为5秒采样”的规则。下一次同类异常发生时,面板上就能看到一段短时高频记录,而不是一个被平均掉的平滑曲线。这个动作的结果,决定了后续是继续调整阈值,还是把排查方向转向网络或客户端。
需要核对具体工具是否支持事件触发采样、日志回放和自定义保留周期时,应以该工具当前版本的说明为准,因为不同工具的触发条件、数据粒度和保留策略并不相同。