【這是一猿小講的第 54 篇原創分享】
先大緻認識認識普羅米修斯 —— Prometheus。依據官方文檔https://prometheus.io/docs/introduction/overview/ 大概能夠了解到 Prometheus 是一個開源系統監控和報警工具包,通過基于 Http 的 pull 方式采集時序資料,支援多種多樣的圖表和界面展示。

如上面官方架構圖所示,能看出 Prometheus 的生态中主要是由 exporters、Pushgateway、Prometheus server、AlertManager、Prometheus web UI 幾個套件組成。
我感覺如果要一直這麼聊下去,估計你會選擇灰溜溜的走開,是以要細說每個套件都是幹啥用的,那不妨在官方架構圖的基礎之上,再為你們上一圖。
如上圖所示,我簡單把 Prometheus 的生态劃分為資料源、資料歸集處理、資料應用三大層。
資料源層,主要是通過兩種形式生産資料。
- 一種是通過讓應用加入Clinet lib類庫內建 Prometheus,然後向PushGateway推送監控名額的資料。例如 Prometheus 對 flink 監控時,需要加入 flink-metrics-prometheus_xxxx.jar 類庫進行支援;
- 另一種則是直接通過 Prometheus 提供的系列 xx_exporter 完成監控名額資料的收集,例如 node_exporter 可以用來收集伺服器的 CPU、記憶體、磁盤、I/O 等資訊,(這就是上期分享中的 PGOne 中的 One Exporter)
資料歸集處理層,主要是 Prometheus server 通過 Http 的 pull 方式從資料源層拉取并存儲監控的名額資料;然後運作已定義好的告警規則,向資料應用層的 Alertmanager 推送警報。思考 Prometheus server 背後,肯定要維護一份監控的目标對象 targets,不然怎麼知道從哪兒拉取資料呢?實踐中再進行體會吧,先知道這層是幹啥的就行了。
資料應用層,我粗略的把這塊劃分為報警管理和監控資料展示兩大應用。其中報警管理,是指 Alertmanager 依據配置,對接收到的 alerts 進行處理,發出告警;監控資料展示主要是進行監控名額資料的展示,常用的元件是 Grafana(這又是個啥玩意?放心,Grafana 後面會聊)。
到這應該對監控一哥普羅米修斯有了全新的認識,以後在技術選型的時候不妨也稍微考慮一下他,本次主要是搞懂理念,關于實戰部分咱們單獨開篇去講。