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


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


一、整體架構

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

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

  本方案中,我選取了兩個插件,node_exporter 監控系統指標,cAdvisor可監控容器指標。prometheus的圖標展示功能較弱,且告警功能較復雜,因此引入Granfa代替。

  influxdb是一個時序型數據庫,可以存儲以上兩個插件提供的數據,且存儲效果和查詢優於prometheus,但由於我的項目屬於小項目,因此不會用到。

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

二、各個組件介紹

  1、prometheus

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

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

    默認存儲時間15天

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

    因為采集到的數據會先寫入內存,為了防止prometheus運行失敗造成數據無法恢復,采用了WAL機制,當prometheus啟動時,會從寫入日志的WAL中進行重播,從而恢復數據,內存中的塊,使用checkpoint file去同步寫入數據。data目錄的數據結構:

每天的數據默認會寫一個塊,重啟也會重寫一個塊。這樣做可以提高查詢效率。

  

  2、node_exporter

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

  在默認情況下,會顯示所有收集到的指標,可以使用“collect[]”過濾指標,在prometheus的配置下使用詞語法。

  node_exporter會收集許多信息,但是默認情況下,由於內核的安全性設置,它不能收集linux上的perf,若要允許,需要開啟linux系統的sysctl配置

   sysctl -w kernel.perf_event_paranoid=X

  其中,

    2    允許用戶

    1    允許內核和用戶

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

    -1   無限制

 

  3、cAdvisor

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

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

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

 

  4、grafana  

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

 

以上組件默認情況下,均不是加密傳輸,因此需要利用stunnel對上述各個組件進行加密傳輸。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM