Prometheus介紹

說起監控,第一時間會想到的就是zabbix,確實,zabbix在監控界有着不可撼動的地位,功能非常強大。但是對於容器的監控,卻顯得有點力不從心了。

爲了解決監控容器的問題,我們需要用到Prometheus。

一、什麼是prometheus

Prometheus是最初在SoundCloud上構建的開源監控和報警工具包。自2012年成立以來,許多公司和組織都採用了Prometheus,該項目擁有非常火雨的開發人員和用戶社區。現在,它是一個獨立的開源項目。目前已經被雲計算本地基金會(Cloud Native Computing Foundation)託管,這是繼Kubernetes之後的第二個託管項目。

二、優勢

  • 易於管理
  • 輕易獲取服務內部狀態
  • 高效靈活的查詢語句
  • 支持本地和遠程存儲
  • 採用http協議,默認pull模式拉取數據,也可以通過中間網關push數據
  • 支持自動發現
  • 可擴展
  • 易集成

三、常用組件

Prometheus Server

Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。
Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對採集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將採集到的監控數據按照時間序列的方式存儲在本地磁盤當中。最後Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。

Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。

Prometheus Server的聯邦集羣能力可以使其從其他的Prometheus Server實例中獲取數據,因此在大規模監控的情況下,可以通過聯邦集羣以及功能分區的方式對Prometheus Server進行擴展。

Exporters

Exporter將監控數據採集的端點通過HTTP服務的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的Endpoint端點,即可獲取到需要採集的監控數據。

一般來說可以將Exporter分爲2類:

  • 直接採集:這一類Exporter直接內置了對Prometheus監控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接內置了用於向Prometheus暴露監控數據的端點。
  • 間接採集:間接採集,原有監控目標並不直接支持Prometheus,因此我們需要通過Prometheus提供的Client Library編寫該監控目標的監控採集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

Alertmanager

在Prometheus Server中支持基於PromQL創建告警規則,如果滿足PromQL定義的規則,則會產生一條告警,而告警的後續處理流程則由AlertManager進行管理。在AlertManager中我們可以與郵件,Slack等等內置的通知方式進行集成,也可以通過Webhook自定義告警處理方式。AlertManager即Prometheus體系中的告警處理中心。

PushGateway

由於Prometheus數據採集基於Pull模型進行設計,因此在網絡環境的配置上必須要讓Prometheus Server能夠直接與Exporter進行通信。 當這種網絡需求無法直接滿足時,就可以利用PushGateway來進行中轉。可以通過PushGateway將內部網絡的監控數據主動Push到Gateway當中。而Prometheus Server則可以採用同樣Pull的方式從PushGateway中獲取到監控數據。

四、體系結構

在這裏插入圖片描述
大概的工作流程如下:

1、Prometheus server 定期從配置好的jobs或者exporters中拉metrics,或者接收來自Pushgateway發過來的metrics,或者從其他的Prometheus server 中拉metrics。

2、Prometheus server在本地存儲收集到的metrics,並運行已定義好的alert.rules,記錄新的時間序列或者向Alertmanager 推送報警。

3、Alertmanager根據配置文件,對接收到的報警進行處理,發出告警。

4、在圖形界面中,可視化採集數據

五、監控的目的

google指出,監控分爲白盒監控和黑盒監控。

白盒監控:通過監控內部的運行狀態及指標判斷可能會發生的問題,從而做出預判或對其進行優化。

黑盒監控:監控系統或服務,在發生異常時做出相應措施。

監控的目的如下:

  • 長期趨勢分析:通過對監控樣本數據的持續收集和統計,對監控指標進行長期趨勢分析。例如,通過對磁盤空間增長率的判斷,我們可以提前預測在未來什麼時間節點上需要對資源進行擴容。
  • 對照分析:兩個版本的系統運行資源使用情況的差異如何?在不同容量情況下系統的併發和負載變化如何?通過監控能夠方便的對系統進行跟蹤和比較。
  • 告警:當系統出現或者即將出現故障時,監控系統需要迅速反應並通知管理員,從而能夠對問題進行快速的處理或者提前預防問題的發生,避免出現對業務的影響。
  • 故障分析與定位:當問題發生後,需要對問題進行調查和處理。通過對不同監控監控以及歷史數據的分析,能夠找到並解決根源問題。
  • 數據可視化:通過可視化儀表盤能夠直接獲取系統的運行狀態、資源使用情況、以及服務運行狀態等直觀的信息。

參考文章:
https://prometheus.io/docs/introduction/overview/
https://www.cnblogs.com/zqj-blog/p/10871033.html
https://zhuanlan.zhihu.com/p/116899330
https://www.bookstack.cn/read/prometheus-book/quickstart-why-monitor.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章