Prometheus第一篇:Prometheus架構解析


Prometheus是新一代的監控系統解決方案,原生支持雲環境,和kubernetes無縫對接,的卻是容器化監控解決方案的不二之選。當然對傳統的監控方案也能夠兼容,通過自定義或是用開源社區提供的各種exporter無疑又為prometheus豐滿羽翼。那么從今天開始我將會持續更新我對prometheus使用過程中的了解和踩坑記錄,一是為了沉淀自己,二是為同學們提供個思路。

  • 1、架構介紹

上圖就是prometheus的一個整體的架構圖,這篇文章就圍繞這張圖展開,介紹prometheus的工作機制和各組件提供的功能。

  • 1.1 Prometheus server組件介紹
    a. Prometheus server:
    它是prometheus的主程序,本身也是一個時序數據庫,它來負責整個監控集群的數據拉取、處理、計算和存儲。和zabbix采取push監控數據的方式不同,
    1、prometheus的設計是使用pull方式由服務端主動拉取監控數據。關於push和pull兩種方式的優缺點爭論一直存在,這里不再過多贅述,只需知道即可。
    當prometheus拉取到數據之后首先進行的操作是數據的處理:根據配置的數據格式或者標簽轉換/刪除等操作。
    2、數據處理完成后是根據rule中配置的規則進行計算:比如CPU使用率達到80%是一條告警規則,則prometheus會對數據進行計算看是否命中規則,命中則發送消息給alertmanager組件,否則不做操作。
    3、完成上面的一些操作之后,prometheus會根據配置時間周期保存數據到本地或者是第三方存儲中
    以上便是prometheus server做的比較重要的事情(大致流程是這樣,細節方面未做探討。)

  • 1.2 Alertmanager 組件介紹
    b. Alertmanager:
    它是prometheus的告警組件,負責整個集群的告警發送、分組、調度、警告抑制等功能。
    需要知道的是alertmanager本身是不做告警規則計算的,簡單來說就是,alertmanager不去計算當前的監控取值是否達到我設定的閾值,上面已經提過該部分規則計算是prometheus server來計算的,alertmanager監聽prometheus server發來的消息,然后在結合自己的配置,比如等待周期,重復發送告警時間,路由匹配等配置項,然后把接收到的消息發送到指定的接收者。同時他還支持多種告警接收方式,常見的如郵件、企業微信、釘釘等。

  • 1.3 Pushgateway 組件介紹
    c. Pushgateway
    它是prometheus的一個中間網管組件,類似於zabbix的zabbix-proxy。它主要解決的問題是一些不支持pull方式獲取數據的場景,比如:自定義shell腳本來監控服務的健康狀態,這個就沒辦法直接讓prometheus來拉數據,這時就可以借助pushgateway,它是支持推送數據的,我們可以把對應的數據按照prometheus的格式推送到pushgateway,然后配置prometheus server拉取pushgateway即可。

  • 1.4 數據展示組件介紹
    上圖右下角的幾個組件,grafana、prometheus-ui是用來圖形化展示數據的組件,其中prometheus-ui是prometheus項目原生的ui界面,但是在數據展示方面不太好用,因此推薦grafana來展示你的數據,grafana支持prometheus的PromQL語法,能夠和prometheus數據庫交互,加上grafana強大的ui功能,我們可以很輕松的獲取到很多好看的界面,同時也有很多做好的模版可以使用。

  • 1.5 服務發現組件介紹
    對一個監控系統來說,自動發現肯定是一個最基礎的功能,試想如果沒有自動發現,添加10000台主機到監控系統該是中什么體驗?還好,prometheus是有該組件的,而且還很多,支持多種自動發現機制,比如基於文件、DNS、consul、zookeeper、etcd、kuberbetes等服務自動發現的方式,這些服務發現方式后面都會寫到。

本篇寫到這里就要結束了,主要是簡要介紹了下prometheus中各組件的大致功能,對prometheus又一個大致的了解。下一篇會寫幾種prometheus的安裝方式。


免責聲明!

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



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