阿里雲Service MeshASM提供了開箱即用的基於服務等級目標SLO(Service Level Objectives)的監控和警示能力,能夠監控應用服務之間調用的延遲和錯誤率特徵等。本文介紹SLO的相關概念。
SLO是什嗎?
服務等級指標SLI(Service Level Indicator)是衡量服務健康情況的指標。SLO是指服務等級的目標值或範圍值,由一個或多個服務等級指標SLI組成。
SLO提供了一種形式化的方式來描述、衡量和監控微服務應用程式的效能、品質和可靠性。SLO為應用開發和平台團隊、營運團隊提供了一個共用的品質基準,可作為衡量服務水平品質以及持續改進的參考。使用SLI組合定義的SLO能夠協助團隊以更精確的方式描述服務健康情況。
SLO樣本如下:
每分鐘平均QPS > 100,000/s
99%訪問延遲 < 500ms
99%每分鐘頻寬 > 200 MB/s
SLI類型和合規目標
ASM支援的SLI類型如下:
服務可用性:服務成功響應的時間比例,對應的SLI外掛程式類型為availability。HTTP響應碼為429或以5XX(以5開頭的狀態代碼)會被判斷為不可用。
延遲時間:服務返回請求的響應所需的時間(單位為毫秒),對應的SLI外掛程式類型為lantency。您可自訂延遲上限,高於上限的響應會被判斷為不合格。
除了定義SLI之外,您還需要定義希望從服務中實現的合規目標。一般來說,合規目標需設定在合理範圍內。例如,如果您的使用者無法分辨服務的延遲時間是200毫秒還是600毫秒,請使用更高的值作為SLO中的延遲時間閾值。
設定合規目標時,也需要考慮服務的終端使用者要求。不同的應用服務所需的目標也會不同,主要取決於使用者對應用服務本身的實際可用性訴求。例如,有些非關鍵業務系統的目標可用性為99%(每年大約3天的停機時間),而關鍵服務的系統可能需要99.999%的可用性(每年約5分鐘的停機時間)。
合規期
除了為SLI定義目標之外,SLO還指定衡量SLI的時間段。例如,某一天內的99%可用性與一個月內的99%可用性不同。第一個SLO不允許14分鐘以上的連續停機時間(24小時 * 1%),第二個SLO允許連續停機時間長達約7小時(30天 * 1%)。
為簡化定義,目前支援的時間段有7、14、28和30天。
錯誤預算
SLO的錯誤預算表示服務在不違反SLO的情況下,還能夠承受的故障餘量。因此,錯誤預算可以表示為:1 - SLO。
SLO樣本如下:
SLI錯誤:請求狀態碼
期限:30天
SLO:99.9%
錯誤預算:(100% - 99.9%) = 0.1%
30天內的總請求數:10000
允許的錯誤請求數:(10000 * 0.1%) = 10
若要滿足SLO的要求,每30天最多允許的錯誤請求數為10個。設定錯誤預算,可以協助您更好地規劃和管理工作。例如,部署一個新版本時:
當錯誤預算即將消耗殆盡時,應避免更新。
當合規期即將結束、錯誤預算充足時,進行更新。此時違反SLO的機率較低。
錯誤預算將會按照滾動視窗進行更新,滾動視窗時間跨度和合規期相同。
錯誤預算≥0:表示滾動視窗內SLO合規。
錯誤預算<0:表示滾動視窗內SLO不合規。
燃燒率
燃燒率是錯誤預算的消耗速度。燃燒率等於當前錯誤率和期望的最大錯誤率的比值。燃燒率越高表示故障越嚴重。燃燒率對應制定警示規則至關重要,警示規則將基於燃燒率來觸發警示。
計算公式為:燃燒率=錯誤率 ÷ (1 - SLO)
假設合規期為30天:
燃燒率為1:如果維持當前的錯誤率,整個合規期將消耗100%的錯誤預算(30天消耗全部錯誤預算)。
燃燒率為2:如果維持當前的錯誤率,整個合規期將消耗200%的錯誤預算(15天消耗全部錯誤預算)。
燃燒率為60:如果維持當前的錯誤率,整個合規期將消耗6000%的錯誤預算(12個小時消耗全部錯誤預算)。
警示規則
警示規則能夠根據故障的嚴重程度,在故障發生時及時發出不同等級的提醒,協助您在錯誤預算被過多消耗之前及時響應。
ASM基於“多視窗多燃燒率警示策略”產生警示規則,適用於大多數情境。多燃燒率策略下,短時間內的高故障率或期間較長的低故障率,都會觸發警示。短時間內的高故障率和低故障率且期間較長的故障才能觸發警示,避免不必要的警示分散營運人員的精力從而錯過真正關鍵的問題。多視窗能夠在計算一段時間的故障率時同時設定一個短時間視窗,當短時間視窗內的故障率低於閾值時結束警示。設定短時間視窗可以保障故障處理後,及時解除警示。
以設定30天的SLO為例:
當1小時內錯誤預算消耗2%(即該小時內錯誤率高於閾值的14.4倍)或6小時內消耗5%(閾值的6倍)時,會觸發一個Page層級的警示;1天內錯誤預算消耗10%(閾值的3倍)或3天內錯誤預算消耗10%(閾值)時,會觸發一個Ticket層級的警示。
短時間視窗設定為1/12。
假設在3天內錯誤率保持為閾值的兩倍,在第三天故障解除。短時間視窗能夠使警示在6小時後解除。若無短時間視窗,即使不存在故障,警示也會持續3天。