容器監控部署 -- 總體架構

上一節梳理了一下prometheus的簡介,接下來的將重心放到環境的搭建。搭建好環境以後再配置具體的監控內容。node


1、總體架構

  在容器監控的這套系統中,prometheus是一個重要的組件,它能夠完成監控指標的收集、存儲以及報警,但因爲prometheus自身功能不夠強大,所以須要結合其餘組件來構成一個完成容器監控體系。linux

  prometheus有許多許多的第三方插件,這些插件各司其職,有各類數據庫的監控插件、硬件監控插件、系統消息插件、存儲插件、HTTP相關插件、容器插件、雲平臺插件等等許多插件。官方文檔提供的第三方插件就有一百多個,這些插件的輸出格式都按照prometheus的要求輸出,因此你本身也能夠寫插件供prometheus來使用。Export列表docker

  本方案中,我選取了兩個插件,node_exporter 監控系統指標,cAdvisor可監控容器指標。prometheus的圖標展現功能較弱,且告警功能較複雜,所以引入Granfa代替。數據庫

  influxdb是一個時序型數據庫,能夠存儲以上兩個插件提供的數據,且存儲效果和查詢優於prometheus,但因爲個人項目屬於小項目,所以不會用到。安全

  上圖是這次項目的架構圖,cadvisor從不一樣的虛機獲取docker容器的指標,node_exporter從虛機獲取系統相關的指標,prometheus會定時從以上節點PULL取數據,最後將prometheus數據接入granfa以圖標形式展現和報警。數據結構

2、各個組件介紹架構

  一、prometheus性能

    已經在前一節中作了簡單的介紹,接下來接收一下prometheus的存儲加密

    prometheus有這一個複雜的本地存儲系統,它首先會將全部當前使用的塊保留在內存中(每一個塊的大小是1k),並將最新使用的塊保留在內存中。默認prometheus使用1048576字節(1G)操作系統

    默認存儲時間15天

    每1k是一個塊,向這個塊中寫數據,寫滿後,再生成新的塊,按期將這些塊中的數據寫入磁盤

    由於採集到的數據會先寫入內存,爲了防止prometheus運行失敗形成數據沒法恢復,採用了WAL機制,當prometheus啓動時,會從寫入日誌的WAL中進行重播,從而恢復數據,內存中的塊,使用checkpoint file去同步寫入數據。data目錄的數據結構:

天天的數據默認會寫一個塊,重啓也會重寫一個塊。這樣作能夠提升查詢效率。

  

  二、node_exporter

  一個linux系統下的採集硬件和操做系統指標的組件,由Go語言編寫。

  在默認狀況下,會顯示全部收集到的指標,可使用「collect[]」過濾指標,在prometheus的配置下使用詞語法。

  node_exporter會收集許多信息,可是默認狀況下,因爲內核的安全性設置,它不能收集linux上的perf,若要容許,須要開啓linux系統的sysctl配置

   sysctl -w kernel.perf_event_paranoid=X

  其中,

    2    容許用戶

    1    容許內核和用戶

    0 容許訪問特定的CPU,但不容許訪問原始跟蹤點

    -1   無限制

 

  三、cAdvisor

  以上的組件既提供二進制安裝方法,也可提供容器安裝方法,可是cAdvisor只能經過容器的方式安裝,

  cAdvisor做用是監控容器內的指標,可對容器的資源使用。容器其餘特性進行收集、聚合、處理和導出。

  根據收集到的指標咱們能夠調整容器的性能,監控容器運行狀態。

 

  四、grafana  

  將prometheus的數據接入grafana,進行圖表展現以及報警功能

 

以上組件默認狀況下,均不是加密傳輸,所以須要利用stunnel對上述各個組件進行加密傳輸。

相關文章
相關標籤/搜索