當我們在聊監控,我們在聊什麼?

2021-09-11 12:51:21 字數 2926 閱讀 9420

最近在團隊中給大家做了乙個分享,泛泛地聊了一些有關「監控」的話題。

其實做分享對分享者的作用往往大於參與者。

這是一次將自己知識的梳理的過程,於是我將這次分享整理成這篇文章。

201706/stock-exchange.png

我們先來聊聊,什麼是「監控」,以及我們期望通過「監控」完成哪些目的?

傳統意義上的監控,是指:

通過一些手段和工具,關注執行中的硬體、軟體、使用者體驗的關鍵資料,將其暴露出來。

當關鍵資料出現異常時候發出警告,進行人工或者自動的響應。

我們平時看到的最常見的監控系統,比如 zabbix,提供了豐富的模板,

可以監控伺服器的 load / cpu usage / alive 這些常規指標。

並在出現問題時候,對其進行報警通知。

隨後運維工程師們會上線進行應急操作,case by case 的處理故障。

我將上面的使用目的歸納為:

故事到這裡似乎可以結束了,可監控真的是這麼簡單的麼?

當然沒,隨著時代的進步,使用者對服務提出了更為嚴苛的要求,

同時我們也有能力進一步控制平均故障修復時間

(mtbf),

上述描述的做法已經不能滿足我們了。

現在讓我們切換一下視角,從傳統的 ops 的視角切換到 sre

(site reliability engineering)的視角。

當我們在關注**整體的可用性時,我們會發現:

故障警報處理當然很重要,但是我們根本上想減少甚至避免 mtbf。

我們有兩種手段:

一種是去除單點故障,讓問題自然發生,但是不對線上造成影響;

另一種是在問題出現的早期就發現並進行及時修復。

前者是高可用範疇,後者就是我們今天關注的「監控」了。

監控的目的是要將災難消滅在襁褓裡;在災難即將出現或者發生問題時,
給大家展示直接的原因

那為了達成這兩個目標,我們需要回到問題的本質,重新思考兩個問題:

監控哪些物件?

如何識別故障?

我們說的監控物件,一般指的都是某個資源,

資源即持有某種其他方需要的某些屬性的載體,包括硬體、軟體。

除了資源這種型別,還有一種常見的監控物件是「體驗」,即終端使用者的訪問感受,

這塊內容我們暫時略去。

讓我們來先看一下常見的資源:

軟體infrastructure

這個分類是粗粒度的描述,為了落地地描述監控物件物件的健康狀況,

我們還要進一步細化。以「伺服器」為例,我們可以將其監控的內容細化為以下監控項:

如何評估這些監控項的健康狀況?我們使用

sli(service level indicator)。

比如可用性就是乙個最容易理解的 sli。

這裡我將資源歸為兩類,面向使用者提供服務的資源和面向儲存的資源,

以下是針對這兩類資源的常見 sli:

storage system

基於 sli 建立的數字關鍵指標,稱之為

service level objective。

slo 往往是一組數字範圍,比如 cpu 負載的 slo 可以設定為 0.0-6.0(針對 8 核 cpu)。

不同的資源、不同的業務場景,會有不一樣的 slo 設計。

看到這裡,我們已經聊了要監控哪些指標,那麼接下來我們聊聊如何用量化的思想,

幫助指標更易於識別、分析和決策。

剛開始擔任線上救火隊成員時候,當有個系統出現問題時候,我經常聽到這樣的描述:

**掛了、頁面打不開了,cpu 出問題了,記憶體爆了,執行緒池炸了等等。

這樣的表述雖然沒錯,但帶來的可用價值太少,資訊熵太低。

這樣的說辭多了,就給人產生一種不靠譜,不科學的感覺。

那怎樣才能成為科學的描述?

古希臘哲學家在思考宇宙的時候,提出了一種心智能力,

從而開啟了科學的窗子,這就是 reasonable,中文名叫理智,這成為了自然科學的基石。

使用 reasonable **意味著**要深入問題的本質,不停留在表象,挖掘出真正有價值的內容。

如果我們以定量的方式來描述**掛沒掛,就會變成:**的響應耗時在 30s,基本無法使用。

描述執行緒池出問題,就會變成:active 執行緒數量是 200,已經到達 maxcount 數量,無法進行分配。

你看,通過這樣的描述,我們一下子就能發現問題出在**。

現在我們已經了解了「監控哪些物件?」,以及嘗試用「量化」這個法寶來「識別故障」。

那有沒有一些最佳實踐幫助大家高效的識別故障呢?這裡我推薦 brend gregg 大神的 use 方法。

brend gregg 是 netflix 的首席 sre,著有 systems performance book,

目前已經出版中文版 效能之巔:洞悉系統、企業與雲計算。

use 分別是三個單詞的首字母縮寫:

我們可以為每個資源找到各自的 use 度量指標,具體的 check list 清單可以參考

use method: rosetta stone of performance checklists。

這裡舉個例子,前段時間在設計 mysql ha 方案時候,同時關注了 mysql 的監控方案,

那麼針對 mysql,我們要做哪些監控呢?下面是使用 use 方法設計出來的 sli:

threads & connections

buffer

如果你對我上面描述的還意猶未盡,建議你可以看 effective monitoring and alerting。

雖然本書沒有中文版,但是關於監控、報警的原理解析很到位,值得一看。

另外還有一本 sre: google運維解密,

裡面有不少篇幅在講「sla」,也是和監控、報警息息相關的。

3a1ff193cee606bd1e2ea554a16353ee

當我們聊資料質量的時候,我們在聊些什麼?

隨著大資料行業的深入發展,資料質量越來越成為乙個繞不開的話題,那當大家在聊資料質量的時候,通常會聊什麼呢?從什麼是資料質量開始。什麼是資料質量 資料質量 乙個評估規則維度提供一種測量與管理資訊和資料的方式。區分規則維度有助於 資料質量檢核主要分為以下規則維度 每一規則維度可能需要不同的度量方法 時機...

當我們放棄時,我們想些什麼

當我們放棄時,我們想些什麼 放棄這種事,在有些人的眼裡,似乎與我不太沾邊,大概因為留下了很多執拗這樣的表面印象。我所放棄之多,放棄時所經歷的痛苦,與你一般無異。最終,我也沒能學會打三角洲部隊這個遊戲。當年大哥連忽悠帶嘲笑想讓我迷上這個遊戲,但是我是切切實實地吐了幾頓。聽到機箱風扇的聲音都受不了,連多...

力壓華為,鎖喉蘋果,我們聊一聊高通憑什麼?

愛因斯坦曾經說過,想象力比知識更重要,高通在通訊行業的地位,遠超你的想象。高通就是這麼一家有想象力的公司,你沒有見過它的產品,但是你幾乎每天都在付錢給它,它是通訊行業的 公敵 讓眾多公司對其又愛又恨。它不是在打官司,就是在準備打官司的路上。沒錯,它,就是高通。全球最大的移動晶元 商,cdma技術商用...