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

最近在團隊中給大家做了一個分享,泛泛地聊了一些有關「監控」的話題。
其實做分享對分享者的作用往往大于參與者。
這是一次將自己知識的梳理的過程,于是我將這次分享整理成這篇文章。

201706/stock-exchange.png

目的 ??

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

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

通過一些手段和工具,關注運行中的硬件、軟件、用戶體驗的關鍵數據,將其暴露出來。
當關鍵數據出現異常時候發出警告,進行人工或者自動的響應。

我們平時看到的最常見的監控系統,比如 Zabbix,提供了豐富的模板,
可以監控服務器的 Load / CPU Usage / Alive 這些常規指標。
并在出現問題時候,對其進行報警通知。
隨后運維工程師們會上線進行應急操作,case by case 的處理故障。

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

  • 故障發生時提供數據報警
  • 提供歷史數據以供分析

故事到這里似乎可以結束了,可監控真的是這么簡單的么?
當然沒,隨著時代的進步,用戶對服務提出了更為嚴苛的要求,
同時我們也有能力進一步控制平均故障修復時間
MTBF),
上述描述的做法已經不能滿足我們了。

現在讓我們切換一下視角,從傳統的 OPS 的視角切換到 SRE
Site Reliability Engineering)的視角。
當我們在關注網站整體的可用性時,我們會發現:
故障警報處理當然很重要,但是我們根本上想減少甚至避免 MTBF。
我們有兩種手段:
一種是去除單點故障,讓問題自然發生,但是不對線上造成影響;
另一種是在問題出現的早期就發現并進行及時修復。
前者是高可用范疇,后者就是我們今天關注的「監控」了。

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

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

  1. 監控哪些對象?
  2. 如何識別故障?

對象 ????

我們說的監控對象,一般指的都是某個資源,
資源即持有某種其他方需要的某些屬性的載體,包括硬件、軟件。
除了資源這種類型,還有一種常見的監控對象是「體驗」,即終端用戶的訪問感受,
這塊內容我們暫時略去。

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

  • 硬件
    • 服務器
    • 網絡設備
  • 軟件
    • Application
    • Infrastructure

這個分類是粗粒度的描述,為了落地地描述監控對象對象的健康狀況,
我們還要進一步細化。以「服務器」為例,我們可以將其監控的內容細化為以下監控項:

  • CPU
  • Memory
  • Network interface
  • Storage devices
  • Controllers

如何評估這些監控項的健康狀況?我們使用
SLI(Service Level Indicator)
比如可用性就是一個最容易理解的 SLI。
這里我將資源歸為兩類,面向用戶提供服務的資源和面向存儲的資源,
以下是針對這兩類資源的常見 SLI:

  • User-facing Service
    • Availability
    • Latency
    • Throughput
  • Storage System
    • Latency
    • Throughput
    • durability

基于 SLI 建立的數字關鍵指標,稱之為
Service Level Objective
SLO 往往是一組數字范圍,比如 CPU 負載的 SLO 可以設置為 0.0-6.0(針對 8 核 CPU)。
不同的資源、不同的業務場景,會有不一樣的 SLO 設計。

看到這里,我們已經聊了要監控哪些指標,那么接下來我們聊聊如何用量化的思想,
幫助指標更易于識別、分析和決策。

量化的思想 ??

剛開始擔任線上救火隊成員時候,當有個系統出現問題時候,我經常聽到這樣的描述:
網站掛了、頁面打不開了,CPU 出問題了,內存爆了,線程池炸了等等。
這樣的表述雖然沒錯,但帶來的可用價值太少,信息熵太低。
這樣的說辭多了,就給人產生一種不靠譜,不科學的感覺。

那怎樣才能成為科學的描述?
古希臘哲學家在思考宇宙的時候,提出了一種心智能力,
從而打開了科學的窗子,這就是 Reasonable,中文名叫理智,這成為了自然科學的基石。
使用 Reasonable 探討意味著探討要深入問題的本質,不停留在表象,挖掘出真正有價值的內容。

但是光有 Reasonable 還不夠,B站粉絲建了一個微博,每天會檢查
今天B站炸了嗎
他只能告訴我們炸沒炸,不能給工程師帶來實際的用處。
在科學的發展歷史上,我們可以發現在亞里士多德的著作里沒有任何數據公式。
他對現象只有描述,只是定性分析,通過描述性狀來闡述定理。
這個定性的研究方式到了伽利略那里才出現了突破。
這里我們可以引入第二個關鍵詞是 Quantifier,量化。
伽利略率先使用定量分析的方法,并將其運用到動力學和天文學,從而開創了近代科學。

如果我們以定量的方式來描述網站掛沒掛,就會變成:網站的響應耗時在 30s,基本無法使用。
描述線程池出問題,就會變成:active 線程數量是 200,已經到達 maxCount 數量,無法進行分配。
你看,通過這樣的描述,我們一下子就能發現問題出在哪里。

USE ??

現在我們已經了解了「監控哪些對象?」,以及嘗試用「量化」這個法寶來「識別故障」。
那有沒有一些最佳實踐幫助大家高效的識別故障呢?這里我推薦 Brend Gregg 大神的 USE 方法
Brend Gregg 是 Netflix 的首席 SRE,著有 Systems Performance Book
目前已經出版中文版 性能之巔:洞悉系統、企業與云計算

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

  • Utilization:使用率,CPU running percent,硬盤的 IO
  • Saturation:飽和度,一般偏存儲型資源,內存使用,硬盤使用
  • Error:錯誤數

我們可以為每個資源找到各自的 USE 度量指標,具體的 Check List 清單可以參考
USE Method: Rosetta Stone of Performance Checklists

這里舉個例子,前段時間在設計 MySQL HA 方案時候,同時關注了 MySQL 的監控方案,
那么針對 MySQL,我們要做哪些監控呢?下面是使用 USE 方法設計出來的 SLI:

  • Business
    • Questions:語句計總,Throughput
    • Slow_queries:慢查詢計總,Error
    • Com_select:查詢語句計總,Throughput
    • Com_insert:插入語句計總,Throughput
    • Com_update:更新語句計總,Throughput
  • Threads & Connections
    • Threads_connected:當前連接數,Utilization
    • Threads_running:當前使用中連接數,Utilization
    • Aborted_connects:嘗試連接失敗數,Error
    • Connection_errors_max_connections:由于連接數超標從而失敗的連接數,Error
  • Buffer
    • Innodb_buffer_pool_pages_total:內存使用頁數,Utilization
    • Innodb_buffer_pool_read_requests:讀請求數計總,Utilization

完 ??

如果你對我上面描述的還意猶未盡,建議你可以看 Effective Monitoring and Alerting
雖然本書沒有中文版,但是關于監控、報警的原理解析很到位,值得一看。
另外還有一本 SRE: Google運維解密
里面有不少篇幅在講「SLA」,也是和監控、報警息息相關的。

這次講了一些概念性的內容,期望對大家有幫助,下一次我再分享一篇文章,聊聊 Metrics。


原文鏈接: https://blog.alswl.com/2017/06/monitoring-introducing/
歡迎關注我的微信公眾號:窺豹

3a1ff193cee606bd1e2ea554a16353ee

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容