如何理解監測應用程序的SLO
譯文【51CTO.com快譯】想適當地管理和監測應用程序,您需要一個目標來定義您所處的位置以及工作做得如何,以便您可以不斷調整和改進。這個參考點名為服務級別目標(SLO)?;〞r間定義明確的SLO將使服務所有者以及依賴您服務的內外用戶的日子過得更輕松。
然而在定義SLO之前,您需要一個客觀的量化指標,以便查看它以確定應用程序的性能或可靠性。這類指標就叫服務級別指標(SLI)。
服務級別指標(SLI)
要確定應使用什么指標用于SLI,一個好方法是從應用程序性能方面考慮什么直接影響用戶的滿意度。這可能包括應用程序的延遲、可用性和準確性等方面。另一方面,CPU利用率將是糟糕的SLI,因為您的用戶并不真正關心服務器CPU在如何運行,只要它不影響您使用應用程序的體驗。
此外,您選擇的SLI將取決于您所運行的應用程序類型。若是典型的請求/響應類型的應用程序,您可能會關注可用性、請求延遲和每秒成功請求的容量。您可能會查看用于數據存儲的數據的可用性和一致性。若是數據管道,您的SLI可能是否返回預期的數據以及處理數據需要多長時間,尤其是在最終一致性模型中。
服務級別目標(SLO)
SLO是在一段時間內為SLI測量的性能閾值。這是衡量SLI以確定性能是否符合預期的標準。良好的SLO將定義您應用程序所需的性能級別,但不會高于必要級別。這是一個關鍵點,需要隨著時間的推移進行一番測試。如果您的用戶對99%的可用性感到滿意,就沒有理由投入大量的資金以達到99.999%的可用性。
延遲的一些示例SLO可能是第95個百分位的延遲,它會告訴您用戶發出的最慢5%請求的延遲。這比可能很容易因異常值而偏離的簡單延遲平均值要好得多。
提供更細粒度的另一種選擇是測量請求總數和超過合理閾值(比如1秒)的請求數。超過基準線的請求百分比將有助于確定您的用戶不耐煩地等待數據返回、頁面呈現或操作完成有多頻繁。
一旦確定了實際的性能目標,您需要確定用于衡量的時間段。SLO的兩個常見時間段是基于日歷的度量,從一個設定的日期到另一個日期(比如一個月的開始和末尾)。另一種是滾動窗口,從當前日期回溯設定的天數。
服務級別協議(SLA)
服務級別協議(SLA)就是SLO,包含服務提供商和客戶之間的附加協議,如果SLO未得到滿足,就明確某種形式的后果。這通常出現在供應商和客戶這兩個不同的企業之間,違反SLA會面臨經濟后果。SLA也可以在公司內部使用,某些服務可能依賴由不同團隊控制的其他服務,以便產品正常運行。
為何使用SLO?
您已對什么是服務級別目標有了清楚的了解,可能想知道為什么要花時間來創建和使用SLO。最明顯的原因是,花時間弄清楚在性能方面真正重要的東西可以為您的團隊大大簡化工作,并在整個公司清楚地傳達標準。您可以通過多種不同的方式來跟蹤應用程序生成的指標,但如果您將其分解為什么對用戶有明顯的影響,就可以消除許多干擾和雜音。
在InfluxData,我們專注于時間序列數據。因此,我們擁有涵蓋我們系統各方面的大量數據。雖然高度細化的指標有運營價值,但這些指標并不能很好地反映客戶體驗,肯定讓服務所有者想要更多。因此,我們采取了檢查每個微服務及使用者的方法,并確立合理的成功標準和可實現的目標。
由此得到的結果是我們可以應用于整個車隊的一致測量,深入了解可用性和錯誤率,這充當客戶體驗的代理。這不僅有利于服務所有者,作為實現卓越運營和告知錯誤預算的一種手段,還便于深入了解我們在公司各層面的工程組織。
這些是我們運營的服務底層的儀表板背后的目標。您會看到很容易一目了然,提供了可用于警報和錯誤預算的實用指標,并表明該服務的目標是達到99.9%的可用性。通過在整個公司提供這些數據,我們可以加快服務的交付。反過來,這為在我們的平臺上開發應用程序的客戶帶來了高速的“精彩時間”。
需要注意的重要一點是,SLO不必在首次實現時就完美無缺。SLO始終在不斷完善中,隨著您獲得更多的數據,了解有關用戶需求和期望的更多信息,可進行迭代。切記:實施SLO最重要的方面是監測應用程序方面的總體觀念發生轉變。
原文標題:Understanding SLOs for monitoring applications,作者:Tim Yocum
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】