足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

運維自動化重點解讀之監(jiān)控系統(tǒng)(三):架構(1)
2016-02-20 19:33:33   來源: Reboot運維開發(fā) 51CTO博客    評論:0 點擊:

架構這個詞太大了,這里我們縮小一下,只來談談宏觀的監(jiān)控系統(tǒng)整體架構。在這個范圍里面,web由于負責統(tǒng)一的系統(tǒng)管理和操作功能,縮減為一個模塊。監(jiān)控系統(tǒng)第一層的架構最粗粒度的幾個模塊就是這三個:web、數據采集、數據處理。

幾個開源監(jiān)控系統(tǒng)的PUSH、PULL選擇

zabbix:帶agent方式。agent主動推送數據到服務端。 從client的角度看,是PUSH數據到Server。

Cacti:SNMP協(xié)議,無Client,或者說Client是SNMP Client。從Client角度看,是PULL。

ganglia:從Client角度看,是PUSH。

在我過去生產環(huán)境所構造的監(jiān)控系統(tǒng)里面,我們采用了PUSH和PULL結合的方式來達到及時性、到達率的同時解決。我們站在Client的角度來描述這個解決方案。對于監(jiān)控項的生效,Web端變更之后立即使用PUSH的方式來通知Client。但這里一定有達到率的問題。比如Client所在服務器死機了、重啟了、當時網絡有問題不可達等等。所以我們在Client端,支持定時PULL。定時去主動聯系Server端,獲取自己應該生效的監(jiān)控內容。

HASH

怎么突然又說到HASH了呢?HASH先來個概念普及吧!看完概念還是不了解的同學,自行面壁去,你計算機數據結構一定沒好好學。

我說HASH是因為要為后面介紹高可用性架構有關系的。

HASH你別直接拿去搜,用百度的結果就是哈士奇。

關鍵詞可以是哈希。

Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

Hash在算法里面是很基礎但使用非常廣泛的。特別是在大數據量的情況下。

我這里強調Hash,是想說它的一個作用之一就是散列。把輸入散列到幾個地方去。提到Hash不得不提一個詞叫做一致性Hash,這個算法對于解決緩存命中率有很大好處。在內存緩存、CDN等存儲系統(tǒng)中經常使用。

Hash的精髓之一就是按照某種計算規(guī)則,把輸入散列到不同的輸出通道上去。

無狀態(tài)和有狀態(tài)

我們拿無狀態(tài)協(xié)議來體驗一下無狀態(tài)是個什么概念。

協(xié)議的狀態(tài)是指下一次傳輸可以“記住”這次傳輸信息的能力。典型的如HTTP協(xié)議是不會為了下一次連接而維護這次連接所傳輸的信息,由于Web服務器要面對很多瀏覽器的并發(fā)訪問,為了提高Web服務器對并發(fā)訪問的處理能力,在設計HTTP協(xié)議時規(guī)定Web服務器發(fā)送HTTP應答報文和文檔時,不保存發(fā)出請求的Web瀏覽器進程的任何狀態(tài)信息。這有可能出現一個瀏覽器在短短幾秒之內兩次訪問同一對象時,服務器進程不會因為已經給它發(fā)過應答報文而不接受第二期服務請求。由于Web服務器不保存發(fā)送請求的Web瀏覽器進程的任何信息,因此HTTP協(xié)議屬于無狀態(tài)協(xié)議(Stateless Protocol)。

監(jiān)控系統(tǒng)里面的HASH和狀態(tài)

監(jiān)控系統(tǒng)對數據的處理,主要是過濾異常數據出來并報警。比如某個服務器的CPU利用率超過了95%,需要報警。但這個時候突然數據處理模塊所在服務器宕機了。那么,這個異常數據很有可能就丟掉了。

監(jiān)控系統(tǒng)常見的報警條件是: CPU利用率超過95%,算一次異常。如果5分鐘內有3次異常,報警給運維。

這里就有幾個數字需要處理,5分鐘,3次。前面提到的宕機,會導致一次異常數據丟掉了。假設5分鐘內出現了3次,丟掉了一次,那自然不會報警出來。這就是一個有狀態(tài)的場景。

有狀態(tài)的情況下,做自動切換或者負載均衡,需要把狀態(tài)也帶過去才行。

比較典型的還有session的問題。如果web是多臺主機負載均衡的時候,session存本地是會出問題的。因為用戶有可能通過負載均衡的調度,多次請求落在不同的主機上。 本來HTTP協(xié)議是無狀態(tài)的,支持負載均衡的調度。但因為session這個有狀態(tài)的產物,必須要把session放在公共存儲上才行。

結合前面提到的那個架構圖。數據進入到了數據計算和報警模塊。我們如何保證這個數據計算和報警模塊是個高可用的架構。

答案是,把輸入的監(jiān)控數據Hash到不同的數據計算和報警模塊實例上去,并且最好是無狀態(tài)或者弱狀態(tài)的計算過程。(未完待續(xù))

【編輯推薦】

  1. 公有云運維自動化:怎么讓系統(tǒng)具備可部署性?
  2. 新浪、萬網前系統(tǒng)架構師高俊峰:統(tǒng)一監(jiān)控報警平臺架構設計思路
  3. Linux中通過命令行監(jiān)控股票報價
  4. 運維自動化重點解讀之監(jiān)控系統(tǒng)(一):可擴展性
  5. 運維自動化重點解讀之監(jiān)控系統(tǒng)(二):高可用
【責任編輯:火鳳凰 TEL:(010)68476606】

相關熱詞搜索:架構 監(jiān)控 運維自動化

上一篇:Office 2016正式發(fā)布!新功能詳細解讀(1)
下一篇:新浪微博王傳鵬:微博推薦架構的演進(1)

分享到: 收藏