日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

当我们在聊监控,我们在聊什么?

發布時間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当我们在聊监控,我们在聊什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

201706/stock-exchange.png

目的 ?

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

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

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

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

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

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

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

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

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

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

  • 監控哪些對象?
  • 如何識別故障?
  • 對象 ??

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

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

    • 硬件
      • 服務器
      • 網絡設備
    • 軟件
      • 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。


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

    3a1ff193cee606bd1e2ea554a16353ee

    總結

    以上是生活随笔為你收集整理的当我们在聊监控,我们在聊什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。