老張,你的服務是不是掛了?論全域性 SLI 的重要性

SRETalk發表於2024-03-28

場景再現

20240321153320

你正在午休,正夢見中了彩票,突然收到電話告警,說服務對外介面 95 分位延遲突增,驚出一身冷汗,睡意全無,抓緊開啟監控系統,檢視服務的 SLI 指標,發現確實有問題,已經持續 1 分鐘,這服務我剛接手沒多久,怎麼辦?怎麼辦??對了,告警詳情裡有 SOP 預案手冊,趕緊開啟看看。

SOP 預案手冊裡寫著:

  • 1.研發運維群裡確認是否有人剛有上線,如果有該服務的變更,及時回滾
  • 2.該服務沒有多活架構,無法切流,需要找到詳細原因再針對性處理
  • 3.登入 s 連結,可以檢視該服務的 SLI(Service Level Indicator,反應服務健康狀況的最重要的幾個黃金指標)
  • 4.登入 x 系統,找到 a 索引,可以檢視本服務的日誌
  • 5.開啟 y 連結,可以開啟儀表盤,展示該服務所在機器的各項效能指標

於是,你急吼吼的在群裡詢問大家是否有變更,同時,抓緊檢視服務的 SLI 指標和日誌,日誌裡有個很關鍵的線索:

請求某個依賴的下游服務(假設其名字是 a),發現超時了,列印了超時日誌,但是無法區分是網路的問題導致的,還是就是 a 服務返回的慢了。此時,你肯定很想知道 a 服務當前是否健康,a 服務的各項 SLI 是否正常,如果 a 服務的 SLI 都正常,可能就是網路鏈路問題,如果 a 服務的 SLI 也不正常,那很可能就是 a 服務的問題了。

但是,TMD,我不知道去哪裡看 a 服務的 SLI 啊…我甚至都不知道 a 服務是否對外暴露了 SLI 指標!!!

這個問題很常見,很多公司都建設了 Zabbix、Prometheus、Nightingale 等監控系統,但是卻沒有一個統一的地方檢視各個服務的 SLI,其實,服務的 SLI 指標遠比機器的 CPU、記憶體等指標來得重要。最佳實踐是什麼?

SLI 最佳實踐

之前我翻譯過一篇文章,介紹 Facebook 的 SLICK:《Facebook 基於 SLO 的可靠性保障實踐》。SLICK 其實就是一個公司級全域性的服務 SLI 匯聚之地,工程師可以在這裡檢視依賴的其他服務的健康狀況,這對於故障的快速定位起到了關鍵作用。

20240321170057

20240321170309

SLICK 雖然已經很大程度上解決了一些問題,但也有兩個典型問題:

  • 你必須知道你依賴的其他服務叫什麼,如果你是個新手,可能未必知道
  • 所有服務的所有 SLI 都在這裡平鋪,沒有層級組織,資訊過載,對於關注全域性的人來講,一下子看不過來

故而,我們希望這些服務之間有橫向依賴關係,通常可以從 tracing 系統自動獲取,如果沒有 tracing 系統,也可以用 eBPF 或手工建立這個關係,手工建立其實也不麻煩,你對你的服務熟悉,你只需要配置你自己的服務即可,全公司可能 500 個微服務,最終是由 200 多個人分別去建立,每個人配置一兩個微服務,也不是很難。除了橫向依賴關係,還希望建立縱向層級關係,比如建立一個 系統-子系統-服務 的三層關係,底層服務如果出問題,問題上浮,在最終的系統層面畫個紅 x 之類的,首頁只展示各個系統的健康狀況,系統的數量通常不會特別多,就可以做到一目瞭然。這個縱向層級關係,是沒法從某個資料自動生成的,通常都是需要手工配置,假設你是某個微服務的維護人員,相當於你要配置一下自己這個微服務的分組關係,應該歸屬到哪個系統或者哪個子系統。

有些朋友聽到需要手工配置可能就望而卻步了,大可不必,讓微服務負責人配置自己的服務,分散式分擔這個工作,每個人就比較輕鬆了。而且這個資訊改動極少,一般只有新服務上線或者服務下線才會改動,不會頻繁改動。另外,這屬於穩定性治理層面的工作,資料經過治理才能更有價值,才能更好的服務於故障發現和定位,才能更好的反向驅動各個微服務建立這些關鍵資料,讓整體穩定性提升。治理工作是工程工作的放大器和矯正器。

依據這個思路,我們創業建立了一個叫做滅火圖的產品,來幫助公司建立這種全域性 SLI 的治理。當然,滅火圖除了建立上面講到的這個能力,還可以串聯 metrics、logs、traces、events 等各類可觀測性資料,作為一個資料的全域性入口,可以有效提升故障發現和定位的效率。如果您有興趣,歡迎聯絡我們交流,聯絡我們的郵箱即可:contact-us@flashcat.cloud ,或者到下面的網址提交一個申請,我同事會聯絡您約時間交流:

  • https://flashcat.cloud/contact/

🎯 關於快貓星雲

快貓星雲是一家雲原生智慧運維科技公司,由知名開源專案“夜鶯(Nightingale)”的核心開發團隊組成,創始團隊均來⾃阿⾥、百度、滴滴等互聯⽹公司。夜鶯是一款開源雲原生監控工具,是中國計算機學會接受捐贈並託管的第一個開源專案,在GitHub上有超過8000顆星,迭代釋出了超過100多個版本,上百位社群貢獻者,是國內領先的開源可觀測性解決方案。

快貓星雲以開源夜鶯為核心打造的“Flashcat平臺”,是國內頂級互聯⽹公司可觀測性實踐的產品化落地,致力於讓可觀測性技術更好的服務企業,保障服務穩定性。Flashcat 平臺具有以下特點:

  • 統一採集:採用外掛化思路,內建整合上百種採集外掛,伺服器、網路裝置、中介軟體、資料庫、應用、業務,均可監控,開箱即用。
  • 統一告警:支援幾十種資料來源對接,收集各類監控系統的告警事件,進行統一的告警收斂、降噪、排班、認領、升級、協同,大幅提升告警處理效率。
  • 統一觀測:將 Metrics、Logs、Traces、Events、Profiling 等多種可觀測性資料融會貫通,並預置行業最佳實踐,既提供全域性業務視角、技術視角的駕駛艙,也提供層層下鑽的故障定位能力,有效縮短故障發現和定位時間。

快貓星雲,讓可觀測性資料更有價值!
https://flashcat.cloud/

相關文章