1. 程式人生 > >你需要精通一種監控-Prometheus核心元件

你需要精通一種監控-Prometheus核心元件

下圖展示Prometheus的基本架構:

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中獲取到監控資料。

補充說明:Prometheus抓取資料的兩種模式 (1) push 模式(2)pull模式

                 push 模式 :這種模式我們可以靈活的zai被監控端使用各種語言編寫資料採集指令碼,通過PushGateway傳輸給Prometheus,傳輸方式為http

                 pull  模式 :我們直接使用採集資料客戶端xxx_exporters將資料傳輸給Prometheus,已經有很多xxx_exporters詳見官