2 分鐘,搞懂 SLO 最佳實(shí)踐
本文是《SRE,Google運(yùn)維解密》讀書(shū)筆記,連載第三篇。微信公眾號(hào)修改了推文邏輯,尤其是 iOS,建議對(duì)本公眾號(hào) SRETalk 加星標(biāo),以免錯(cuò)過(guò)后續(xù)系列推文。
本文介紹 SLO,曾經(jīng)我發(fā)過(guò)一個(gè)短時(shí)間講解我們做監(jiān)控最應(yīng)該監(jiān)控的是什么,短視頻講了上篇,這篇算是下篇。當(dāng)時(shí)的短視頻可以在這里查閱:

SLI、SLO、SLA
先拎清楚幾個(gè)概念:
SLI:服務(wù)質(zhì)量指標(biāo),比如 99 分位的響應(yīng)時(shí)間、99 分位的響應(yīng)時(shí)間、錯(cuò)誤率等
SLO:服務(wù)質(zhì)量目標(biāo),所謂的幾個(gè) 9 的目標(biāo),比如 99 分位的響應(yīng)時(shí)間小于 200 毫秒,比如錯(cuò)誤率小于 0.1%
SLA:服務(wù)質(zhì)量協(xié)議,是個(gè)承諾,是個(gè)合同,比如公有云就會(huì)提供 SLA,不達(dá)標(biāo)就會(huì)有賠付
SRE 在制定 SLx 時(shí)的職責(zé)
SRE 不參與構(gòu)建 SLA,因?yàn)檫@通常涉及退款賠付之類的,是個(gè)商業(yè)行為,但是 SRE 要幫助業(yè)務(wù)確立 SLI,幫助業(yè)務(wù)達(dá)成 SLO。
SLI 相關(guān)的一些實(shí)踐
首先,千萬(wàn)不要把能監(jiān)控到的一坨指標(biāo)都確立為 SLI,SLI 一般也就是四五個(gè),再多就有問(wèn)題了。不同的服務(wù)的 SLI 舉例:
用戶可見(jiàn)的服務(wù)系統(tǒng):可用性、延遲、吞吐。即:是否能正常處理請(qǐng)求?每個(gè)請(qǐng)求花費(fèi)的時(shí)間是多少?多少請(qǐng)求可以被處理?
存儲(chǔ)系統(tǒng):延遲、可用性、數(shù)據(jù)持久性。即:讀寫(xiě)數(shù)據(jù)需要多少時(shí)間?我們是否可以隨時(shí)訪問(wèn)數(shù)據(jù)?一段時(shí)間之后數(shù)據(jù)是否還能被讀???
大數(shù)據(jù)系統(tǒng):比如數(shù)據(jù)處理流水線系統(tǒng),關(guān)注吞吐量和端到端延遲。即:處理了多少數(shù)據(jù)?數(shù)據(jù)從進(jìn)來(lái)到產(chǎn)出需要多少時(shí)間?
所有系統(tǒng)都應(yīng)該關(guān)注:正確性。比如是否返回了正確的結(jié)果?當(dāng)然,正確性更關(guān)注系統(tǒng)內(nèi)部的數(shù)據(jù)而非系統(tǒng)本身,所以SRE通常不會(huì)關(guān)注這塊。
總結(jié):SLI 應(yīng)該是一些上層業(yè)務(wù)或用戶關(guān)注的體驗(yàn)指標(biāo),這些指標(biāo)如果出問(wèn)題了,一定是服務(wù)出了大問(wèn)題了。
另外,一般 SLI 都是分鐘級(jí)的匯總,比如成功率是每分鐘產(chǎn)出一個(gè)值,延遲也是,延遲盡量不要用平均延遲和50分位,會(huì)掩蓋一些長(zhǎng)尾問(wèn)題,比如下圖:

50th, 85th, 95th, and 99th percentile latencies for a system. Note that the Y-axis has a logarithmic scale.
從 10:30 開(kāi)始,長(zhǎng)尾請(qǐng)求的延遲變得頻繁了,尤其是 99 分位和 95 分位,但是 50 分位的值,幾乎不變,如果我們只關(guān)注 50 分位的值,就沒(méi)法發(fā)現(xiàn)這個(gè)問(wèn)題了!
定義 SLO 的一些建議
實(shí)際制定 SLO 的時(shí)候,對(duì)內(nèi)對(duì)外通常是兩個(gè)值,對(duì)內(nèi)更嚴(yán)格,對(duì)外更寬松。而且,即使有能力達(dá)成 SLO,也不要做的過(guò)高,適當(dāng)?shù)母銙煲幌路浅S斜匾?/strong>。比如某個(gè)服務(wù)當(dāng)前季度(SLO 一般按季度統(tǒng)計(jì))的 SLO 是 99.95%,季度末了,100% 可用,此時(shí)建議做個(gè)放火演練之類的,即使搞出紕漏,對(duì) SLO 的影響也不會(huì)太大。其次,上層業(yè)務(wù)也會(huì)充分認(rèn)識(shí)到你這個(gè)下游服務(wù)不是 100% 可靠的,會(huì)有針對(duì)性的增強(qiáng)冗余設(shè)計(jì)。
大部分公司都做錯(cuò)了
大部分公司的穩(wěn)定性體系都是從指標(biāo)監(jiān)控開(kāi)始的,這個(gè)沒(méi)問(wèn)題,但是完成了機(jī)器、中間件的監(jiān)控就認(rèn)為基本完活了,就是大錯(cuò)特錯(cuò)。實(shí)際還有兩個(gè)東西必須要做好監(jiān)控,一個(gè)是短視頻里提到的業(yè)務(wù)北極星指標(biāo)的監(jiān)控,另一個(gè)是本文提到的 SLO 的監(jiān)控。
擴(kuò)展閱讀
面向故障定位止損、穩(wěn)定性治理的可觀測(cè)性體系建設(shè)( https://mp.weixin.qq.com/s/FOwnnGPkRao2ZDV574EHrw )
夜鶯專業(yè)版,提供增強(qiáng)監(jiān)控的能力,提供可觀測(cè)性專家經(jīng)驗(yàn)(?https://mp.weixin.qq.com/s/uM2a8QUDJEYwdBpjkbQDxA?)
告警事件統(tǒng)一OnCall中心,解決告警降噪、排班、認(rèn)領(lǐng)、升級(jí)、協(xié)同的需求( https://mp.weixin.qq.com/s/oFwOv8yoiVA6Plq3OOVn5A?)
可觀測(cè)性、穩(wěn)定性體系建設(shè)相關(guān)的白皮書(shū),免費(fèi)查閱(?https://mp.weixin.qq.com/s/UqUIdTq-QH9wN5mzECXAtQ?)