可(ke)觀(guan)測性(xing)體系建設五(wu)步(bu)心法:明業務、立規范(fan)、采數據、顯特征(zheng)、獲洞見
筆者做監控 11 年,在可(ke)(ke)觀測(ce)性領(ling)域創(chuang)業 4 年,與各類客(ke)戶溝通較多,發(fa)現很多企業想要建設可(ke)(ke)觀測(ce)性體(ti)系,但是不得章法,我把整個建設過程做了一個簡(jian)單總結,梳理一下其中(zhong)的脈(mo)絡,希(xi)望對你(ni)有所(suo)啟發(fa)。
整個可觀測(ce)性體(ti)系建(jian)設(she),我(wo)總結為五個步驟:
- 明業務
- 立規范
- 采數據
- 顯特征
- 獲洞見
下(xia)面挨個說明,可觀測性體系涉(she)及到(dao)的(de)內容(rong)太過駁(bo)雜龐大,本文更多是說明思(si)路,不涉(she)及實操(cao)。
明業務
首(shou)先,要(yao)把您的業(ye)務(wu)梳(shu)理(li)明(ming)白。理(li)清(qing)楚您的最終業(ye)務(wu)目(mu)標和指標,通常(chang)稱為北(bei)極星指標,舉(ju)例(li):
- 電商系統:訂單量、訂單金額等
- 游戲:在線人數、交易金額等
- 視頻播放:點擊 Play 的次數等
簡單而言,就是(shi)把老板層(ceng)面(全公司(si)層(ceng)面)關注的指(zhi)標理(li)清楚,如(ru)果(guo)這(zhe)些指(zhi)標出現異常(比(bi)如(ru)下跌),可能就是(shi)重(zhong)大業務(wu)故障(zhang),SRE、DEV 都要及(ji)時(shi)介入處理(li)。
北極(ji)星指(zhi)標(biao)通常是一(yi)些結果性質(zhi)的指(zhi)標(biao),如果要做的更精細化,還應(ying)該拆(chai)解(jie)出過程(cheng)指(zhi)標(biao),比如電商系(xi)統的訂(ding)單量,我們就要分析,哪些關鍵環節影響訂(ding)單量,哪些過程(cheng)指(zhi)標(biao)可以衡量客(ke)戶主流程(cheng)(下訂(ding)單)健康與否,比如:
- 客戶登錄次數、登錄失敗次數
- 瀏覽商品的次數、瀏覽商品的響應速度
- 添加購物車的次數、成功率、延遲
- 結算次數、結算失敗次數、結算延遲
- 等等
理清楚這(zhe)些(xie)(xie)關鍵的結果指(zhi)(zhi)標和過(guo)程指(zhi)(zhi)標之后,進而從技術角度,就(jiu)要梳理看哪些(xie)(xie)系(xi)統(tong)(tong)、模塊影(ying)響了這(zhe)些(xie)(xie)指(zhi)(zhi)標,這(zhe)些(xie)(xie)系(xi)統(tong)(tong)就(jiu)應(ying)該定義為 P1 級(ji)別的系(xi)統(tong)(tong),重點保(bao)障。這(zhe)些(xie)(xie) P1 級(ji)別的系(xi)統(tong)(tong)的 SLI、SLO 數據(ju)就(jiu)要重點管理起來。
立規范
如(ru)果(guo)公司較小,微服務數(shu)量(liang) 20 個以下,機器只有幾十臺(tai),規范(fan)與(yu)否(fou)大家(jia)感受不深。如(ru)果(guo)微服務上千、機器過(guo)萬,那感受就(jiu)深了(le)。如(ru)果(guo)規范(fan)做得好,就(jiu)可以批量(liang)干很多事情,很多知識也都是復用的。
從可(ke)觀(guan)測性(xing)角(jiao)度,可(ke)能需(xu)要立(li)規范的一些點:
- 統一使用哪個指標、日志、鏈路追蹤的系統
- 日志打印方式
- 各類觀測數據的標簽
- 微服務自身暴露哪些可觀測性數據,以及如何暴露
- 變更事件如何統一收集呈現
- SLI、SLO 數據統一梳理、呈現、告警
- 告警規則的制定原則、分派規則
- 數據協議規范格式
- 等等
立規范(fan)這個事情(qing),做(zuo)得越(yue)靠前,后面越(yue)省(sheng)事,高階架構師(shi)做(zuo)過很多橫向的(de)體系設計,通(tong)常會(hui)把可(ke)觀測性這攤事做(zuo)得比較靠前,因為系統的(de)可(ke)觀測性和系統的(de)可(ke)用性、魯棒性類似,都是(shi)系統必須(xu)要關注的(de)特性之(zhi)一。
采數據
各類觀測數(shu)據(ju)(指(zhi)標、日(ri)志(zhi)(zhi)、鏈路(lu)、事(shi)件(jian)、Profiling)的(de)采(cai)(cai)集,要按照前面制定的(de)規范走(zou),要考慮(lv)成本、考慮(lv)數(shu)據(ju)未來(lai)的(de)價(jia)值(zhi)。對于各類中間(jian)件(jian)、數(shu)據(ju)庫,因為都是(shi)通(tong)用產品,采(cai)(cai)集哪(na)些(xie)指(zhi)標、日(ri)志(zhi)(zhi),重點關(guan)注(zhu)哪(na)些(xie)數(shu)據(ju),在業內通(tong)常可(ke)以找到最佳實踐(jian),而(er)對于公(gong)司自研的(de)那些(xie)微服務(wu),就(jiu)稍(shao)微麻煩(fan)一(yi)些(xie)了。需要:
- 梳理自身業務,確定暴露哪些數據才能方便未來排查問題
- 從上到下推動埋點,否則難以落地
顯特征
這里的(de)(de)特(te)征,指的(de)(de)是(shi)數(shu)據(ju)(ju)(ju)特(te)征。海量的(de)(de)零散的(de)(de)觀(guan)測數(shu)據(ju)(ju)(ju),人類(lei)是(shi)沒法(fa)一(yi)條(tiao)一(yi)條(tiao)查看的(de)(de),要想從(cong)數(shu)據(ju)(ju)(ju)中(zhong)獲取有(you)價值的(de)(de)信息,很難。需(xu)要我們有(you)效組織數(shu)據(ju)(ju)(ju),從(cong)中(zhong)發現一(yi)些(xie)特(te)征規(gui)律。舉一(yi)些(xie)例子:
- 把指標數據放到折線圖里,可以看到趨勢特征,可以看到最大最小值,可以看到哪個時間有突變,就是典型的從數據中提取特征
- 把較大量的日志,通過聚類算法計算日志 pattern,比如 10000 條日志,最終提取出 20 條 pattern,這樣用戶更容易理解分析
- 把告警事件按照標簽做聚合,通常是按照告警規則標題做聚合,或者按照 region、severity、env、service 等做聚合
- 把近期的變更事件和關鍵告警放在一個圖上,可以從時間維度較為容易分析告警和變更的關系
- 把微服務按照層級聚合為子系統,然后聚合為系統,發生故障之后,就可以方便知道哪些系統受到影響,確認影響范圍
- 等等
從具(ju)(ju)體工具(ju)(ju)上(shang)來(lai)看,比如(ru) Grafana、Flashcat 等,都是有力工具(ju)(ju),幫助用戶快速發現(xian)數據特(te)征。
獲洞見
可觀測性體(ti)系要解決(jue)的(de)最大的(de)場景需(xu)求,就是(shi)故障定位,進(jin)而(er)執行(xing)止(zhi)損動作(zuo)。通(tong)過(guo)數據(ju)特征,我們最終要得到(dao)的(de)洞見,就是(shi)“止(zhi)損依據(ju)”!用(yong)戶通(tong)常需(xu)要建立各種視圖,通(tong)過(guo)視圖分析(xi)數據(ju)特征,進(jin)而(er)綜合分析(xi),得到(dao)“止(zhi)損依據(ju)”。
比(bi)如(ru)用戶訪(fang)問電商(shang) App 延遲較高,我(wo)們可能(neng)要分析:
- 容量水位數據
- 變更數據
- 依賴的服務的健康狀況
- 基礎網絡
- 等等
通過特征(zheng)分析(xi)(xi),來確認對應(ying)的(de)方(fang)向是(shi)否有問題,綜(zong)合多個方(fang)向的(de)分析(xi)(xi)結論,最終得到故障(zhang)的(de)原因(yin),知(zhi)道原因(yin)了也就(jiu)知(zhi)道如何止損了。
總結
本文提(ti)綱挈領梳理了整個(ge)可觀測(ce)性體系(xi)的(de)建(jian)設的(de)五步(bu)法(fa)。只能算是一個(ge)梗概,希(xi)望對你有(you)所幫助(zhu)。我們創業這(zhe)些年(nian),一直(zhi)聚焦在監控、可觀測(ce)性領域,深知這(zhe)個(ge)領域的(de)駁雜,如(ru)果你需(xu)要(yao)乙方協助(zhu)構建(jian)整套體系(xi),歡迎(ying)。
本文作(zuo)(zuo)者秦(qin)曉輝,監控(kong)(kong)領(ling)域從業 11 年(nian),Open-Falcon、Nightingale 開源項目創始人(ren),極客時間專欄《運維監控(kong)(kong)系統實戰筆記》作(zuo)(zuo)者,現為 Flashcat 聯合創始人(ren),創業中(zhong)。
