在管理網際網路內容時,一個小的技術故障和重大事件之間的區別往往是速度問題。主動提醒起著至關重要的作用,這就是我們今天非常開心地推出 HTTP 錯誤率通知的原因——它讓管理員能夠在終端使用者遇到錯誤時及時知曉。
但是,對於那些不會顯示為錯誤的問題(比如流量突然下降或激增),該怎麼辦?
今天,我們很高興地宣佈向企業方案客戶提供流量異常通知。當 Cloudflare 偵測到流量發生意外變化時,這些通知就會觸發,為您提供瞭解系統健康情況的另一個寶貴視角。
流量的意外變化可能預示著很多事情。如果您經營的是一個電子商務網站,看到流量激增,這可能是個好訊息——也許是客戶蜂擁而至,也許是您剛剛在一個熱門電視節目上投放了廣告。不過,這也可能意味著出了問題:也許有人不小心關閉了一條防火牆規則,現在您看到了更多的惡意流量。無論是哪一種情況,您可能都想知道具體發生了什麼變化。
同樣,流量突然下降也可能意味著很多事情。也許現在是週五下午,所有員工都已下班,不再存取公司網站。又或者,您網站的連結被破壞了,現在潛在客戶無法存取您的網站。流量低的每一分鐘都可能使您損失潛在的收入,因此您會想要儘快瞭解情況並進行調查。
如何判斷何時發出提醒?
計算時間序列資料集的異常是很困難的。最簡單的方法是使用基本閾值。然而,正如我們之前在部落格中提到的,當試圖確定事情何時真正出錯時,簡單的閾值並不是很準確。邊緣情況太多,它們無法有效運作。
計算 HTTP 錯誤中的異常情況相對容易。我們知道,一般來說,錯誤數量應該非常低,因此任何峰值都是不好的,都是值得警惕的。這就是為什麼我們使用服務級別目標 (SLO) 來計算 HTTP 錯誤率通知的異常情況。
然而,分析總體 HTTP 流量的行為與 Cloudflare Security Events 更相似:有一些根據歷史趨勢計算的一般事件基線。與該基線的任何偏差都是值得警惕的。由於這些相似之處,我們決定,對於流量異常通知,也採用之前用於安全事件通知的相同計算方式:Z 值 (z-score)。這涉及到將當前值與平均值進行比較。當前值與平均值之間有多少個標準差,即為 Z 值。
HTTP 流量與 Z 值的關係圖。藍色為 HTTP 流量,紫色為流量的正 Z 值邊界,綠色為流量的負 Z 值邊界。
對於流量異常通知,我們將過去 5 分鐘(短時間段)的流量與過去 4 小時(長時間段)的平均流量進行比較。Z 值為正數時,表示激增;Z 值為負數時,表示下降。如果當前值與平均值的偏差超過 3.5 個標準差,我們就會發出提醒。我們每 5 分鐘測量一次,因此可以及時對任何流量激增或下降發出提醒。
綠色部分為長時間段,紅色部分為短時間段。
雖然我們的安全事件通知僅在安全事件出現激增時才會觸發(下降幾乎總是一件好事),但對於流量異常,我們會針對激增_和_下降都發送通知。這是因為 HTTP 流量下降可能表明存在問題,而流量激增可能是好事,也可能是壞事。
與安全事件一樣,流量異常通知也支援最小閾值。這意味著,即使我們確定某個事件超出了 3.5 個標準差的範圍,但如果事件數量微不足道,我們也不會發出提醒。激增必須至少達到 200 個請求,下降也必須至少達到 200 個請求。這樣可以減少通知的噪音,因為我們不會對小的增長和下降發出提醒。
深入挖掘
Cloudflare 在 Clickhouse 中儲存通過其網路的請求的採樣統計資料。每分鐘,我們都會從 Clickhouse 獲取 HTTP 流量並將其儲存在 VictoriaMetrics(一個時間序列資料儲存解決方案)的執行個體中。VictoriaMetrics 免費為我們提供現成可用的演算法函數,它非常適合我們的使用案例。我們選擇 VictoriaMetrics 有幾個原因。
首先,它易於設定和操作。作為一個團隊,我們希望透過最佳化來降低營運負擔,VictoriaMetrics 到目前為止一直非常出色。其次,VictoriaMetrics 具有橫向擴展能力,這意味著我們可以在高可用模式下執行它。對於這樣的系統,我們需要可靠的東西來為客戶計算時間敏感資訊,高可用性要求至關重要。最後,在我們的測試中,我們發現 VictoriaMetrics 使用的記憶體約為 Prometheus(一款類似的替代產品)的 ⅓。
當我們在 VictoriaMetrics 中儲存資料後,我們就可以對其執行查詢,並根據客戶提前建立的通知設定確定是否需要提醒客戶。為此,我們利用了現有的警示通知系統,我們最初於 2019 年在部落格中介紹了該系統。我們知道,我們可以依靠當前的通知系統在最後一英里向客戶傳遞這些重要通知。
從 HTTP 要求到通知的資料流程
設定通知
要設定此通知,請瀏覽至儀表板的「通知」索引標籤。選取「流量異常」作為通知類型。與所有 Cloudflare 通知一樣,您可以命名和描述通知,並選擇您想要接收通知的方式。
儀表板中的流量異常通知
您可以選擇要對哪些網域進行流量異常監控,是否要包括 Cloudflare DoS 或 WAF 產品已經緩解的流量,以及是否要包括或排除特定的狀態碼。您還可以選擇是在流量激增時發出提醒、在流量下降時發出提醒,還是對二者均發出提醒。
我們很高興能利用該系統為我們的企業方案客戶提供有關其系統總體健康情況的寶貴通知。前往儀表板中的「通知」索引標簽,立即查看此新通知!