一千萬個為什麽

搜索

不使用GET檢查對網頁進行健康監控



我正在尋找一種方法來監控我的網頁的健康狀況( DOWNUP )。 假設我有三項服務,

site.com/data
site.com/user
site.com/id

現在,我能做的是我可以創建一個 GET 請求,每秒都會提供一次請求,並檢查響應狀態代碼是否 200 OK 。如果它不是 200 OK ,那麽它將觸發警報。但是,我不想連續點擊服務器,因為它會創建不必要的日誌。我正在使用 mongodb logger 。推薦的方法是什麽?

轉載註明原文: 不使用GET檢查對網頁進行健康監控

一共有 5 個回答:

我看到兩種解決這個問題的方法:

  1. Check your logs often and ensure there was an access with code 200 in the last N seconds/minutes and no code 5xx meaning there's a server side error. (the often should be coherent with how long you are ok with no entries)

  2. Keep an active check but:

    • use a HEAD request (so there's less data to return by the server)
    • use a custom user agent for the check
    • configure your log exporter to ignore this user agent.
    • take a larger check interval, 1 second is probably over obsessive

根據您的網站被調用的頻率,您可能希望混合使用這兩種方法進行適當的檢查,即使沒有來自真實客戶的流量也是如此。

雖然我喜歡這裏已有的其他優秀答案,但我想補充一下:

對另一個端口使用GET

您可以讓您的應用程序偵聽未記錄的其他端口。 haproxy 等很高興在端口A上檢查端口B上是否存在的服務。

不要記錄金絲雀檢查

您可以指定某些數據項用於監視和其他測試以檢索而不是針對這些指定項記錄請求。

為金絲雀條目設置較低的TTL

切斷日誌記錄有點可怕,所以也許你可以刪除與日誌記錄相關的條目,因為它進入數據庫?這樣可以避免在用戶體驗失敗時檢查未失敗的代碼路徑。

端到端檢查非常重要

有能力的東西

  • 看看能不能找到你
  • 以及你的事情是否正在做其事
  • 以及你的東西能否與所需的一切相提並論

通過關註任何一部分,通常最終會發現你不會發現的問題非常重要。與您從端到端檢查獲得的價值和安心相比,支付記錄的價格通常可以忽略不計。

一種可能性是監視對來自其他站點用戶的請求的響應。例如,我檢查是否有 200 OK 響應並跳過命中服務器是這樣的響應是在最近的X分鐘內發送的(由您決定哪個時間間隔最適合您的應用程序) )。

如果檢測到錯誤發生率的突然變化,也可以檢查(服務器端)錯誤並點擊服務器 - 只是為了確定。

您可以使用正常運行時機器人,它提供了一個非常好的免費圖層(最多50個免費網站)。

您可以通過多種方式配置站點(它們稱為監視器)。一個簡單的 GET (你的情況), ping 等等。如果您想要一個想法,添加監視器的屏幕如下所示:

enter image description here

您還可以配置您的電子郵件以接收警報,它有更多的選項,但我沒有探討其中哪一個在免費套餐,但在其他選項,您可以找到短信,閑暇,時尚和更多。

它有一個非常好的儀表板(我從不使用它,我只是收到電子郵件通知),您可以在其中查看運行狀況檢查的狀態和錯誤類型(如果是這種情況)。

enter image description here

enter image description here

免費等級的唯一缺點是五分鐘間隔,我寧願使用兩到三分鐘的間隔,但大多數網站無論如何都不需要一秒鐘的健康檢查準確性。

一種方法是您只進行TCP監控。在這種情況下,您建立三向握手(或使用tcp-half-open監控,其中沒有建立連接 - 您只需要[syn,ack]查找[syn],而不是[ack] [syn,ack]返回)然後關閉連接,假設它是在該端口上偵聽的Web服務器。

然而,更好的選擇是弄清楚如何排除你的健康監控來自日誌記錄的流量,但我無法通過rails/mongodb記錄器詳細說明。