站点运营

站点运营:可用性监控自查,別等蜘蛛先發現網站挂了

很多站点出事时,第一個發現者不是运维而是搜尋引擎蜘蛛。本文從可用性监控的角度,梳理该盯哪些指标、阈值怎么设、故障期間怎么處理维護頁,以及告警之後應该做的三件事,帮你把問题發現時間從几小时压缩到几分钟。

站点运营

站点运营:可用性监控自查,別等蜘蛛先發現網站挂了

很多站点出事的时候,第一個“發現者”不是运维,也不是用戶投诉,而是搜尋引擎蜘蛛。抓取日誌里突然一片 5xx,過几天收錄掉了一截,才回头去查,發現網站已经挂了小半天。可用性监控這件事,本质上就是把“發現問题的时刻”從故障發生几小时後,提前到几分钟内。

蜘蛛反馈太慢,不能当监控用

蜘蛛确實會持續訪問你的站点,但它的訪問是抽样式的、周期性的,而且反馈不會實时给到你。等它在日誌里留下大量失敗记錄,往往意味着:

  • 故障已经持續了一段時間,而不是刚刚開始;
  • 抓取频率可能已经被下調,恢复後需要一段時間才回到原来水平;
  • 你手上没有故障發生时刻的資料,排查只能靠猜。

所以监控要自己做,蜘蛛的日誌只作為參考,不作為报警来源。

该盯住哪几類指标

基础可用性

  • HTTP 狀態碼:重点看 5xx 和 3xx 異常跳轉,4xx 突然升高也要留意。
  • 响應時間:不只是平均值,更要看 P95 之類的分位值,平均值容易掩盖慢請求。
  • DNS 解析:解析失敗时,外部看起来就是整站不可達。
  • SSL 證书到期時間:證书過期等于整站訪問被拦,提前 30 天提醒比較稳妥。

與抓取相關的指标

  • 抓取成功率:日誌中 2xx 請求占蜘蛛總請求的比例。
  • robots.txt 與站点地图:這两個地址本身也要监控,它們不可訪問會直接影响蜘蛛判断。
  • 重要落地頁抽查:首頁、主要栏目頁、核心詳情頁各挑几個固定 URL 持續探测。

後端與依赖

頁面返回 200 不代表鏈路健康。資料库连接、缓存服務、搜尋服務、第三方接口,任何一环慢下来,前台响應時間都會跟着涨。有條件的话,把這些依赖也纳入监控項。

告警阈值怎么定

  1. 连續两次失敗再告警,避免偶發抖動把值班的人吵醒。
  2. 区分地域和线路,多节点探测能快速判断是全局故障還是局部網絡問题。
  3. 分时段設定,业務低峰期的短暂波動可以放宽一些。
  4. 告警要带上下文:具体 URL、狀態碼、响應時間、探测节点,一條说清楚,別只發一句“網站不可用”。

真出故障时,別让蜘蛛繼續抓

計划内的维護或短时故障,正确做法是返回 503 狀態碼,並在响應头里带上 Retry-After,告诉蜘蛛多久之後再来看。這是搜尋引擎明确支持的信号,通常不會因此把頁面判定為失效。

需要避免的是:维護頁返回 200,内容寫着“系統维護中,請稍後訪問”。這類頁面在抓取系統看来是正常内容,反复抓到之後,正常的頁面反而可能被替換掉。同样,也不要图省事直接返回 404,那等于告诉搜尋引擎這些地址永久消失了。

告警之後的三件事

  1. 先確認影响范围:多少頁面、哪些栏目、持續了多久。
  2. 记錄時間点:故障起止時間寫進日誌,之後對照抓取日誌看蜘蛛有没有受影响。
  3. 恢复後主動驗證:手動請求几個關键 URL,確認狀態碼和内容都正常,再观察一段時間抓取量是否回升。
监控的意义不是保證不出故障,而是让故障的持續時間可控。少挂一小时,對抓取和收錄的影响就小一分。

一個可以立刻执行的清單

  • 给首頁和 5 到 10 個核心頁面配上外部探测;
  • 加上證书到期、域名到期提醒;
  • 確認维護頁返回的是 503 而不是 200;
  • 把 robots.txt 和站点地图纳入探测列表;
  • 每季度回顾一次告警记錄,把誤报多的阈值調一調。

這些事都不复杂,加起来一两個小时就能配好,但省下的往往是几個小时的抓取损失和一场手忙脚乱的排查。