Prometheus監(jiān)控教程:初識Prometheus

?本章作為Prometheus監(jiān)控教程的開篇,我們會帶讀者了解Prometheus的前世今生,Prometheus是如何從眾多的監(jiān)控平臺中脫穎而出成為下一代監(jiān)控系統(tǒng)的首選。同時通過一個簡單的例子帶領讀者快速了解Prometheus是如何工作的,從而了解Prometheus中的一些概念以及架構模式。
一、Prometheus簡介
Prometheus受啟發(fā)于Google的Brogmon監(jiān)控系統(tǒng)(相似的Kubernetes是從Google的Brog系統(tǒng)演變而來),從2012年開始由前Google工程師在Soundcloud以開源軟件的形式進行研發(fā),并且于2015年早期對外發(fā)布早期版本。
2016年5月繼Kubernetes之后成為第二個正式加入CNCF基金會的項目,同年6月正式發(fā)布1.0版本。2017年底發(fā)布了基于全新存儲層的2.0版本,能更好地與容器平臺、云平臺配合。
Prometheus作為新一代的云原生監(jiān)控系統(tǒng),目前已經有超過650+位貢獻者參與到Prometheus的研發(fā)工作上,并且超過120+項的第三方集成。
二、Prometheus的特點
1. 多維度數據模型
2. 靈活的查詢語言
3. 不依賴分布式存儲,單個服務器節(jié)點是自主的
4. 以HTTP方式,通過pull模型拉去時間序列數據
5. 也通過中間網關支持push模型
6. 通過服務發(fā)現或者靜態(tài)配置,來發(fā)現目標服務對象
7. 支持多種多樣的圖表和界面展示,grafana也支持它
三、Prometheus的組件
Prometheus生態(tài)包括了很多組件,它們中的一些是可選的:
1. 主服務Prometheus Server負責抓取和存儲時間序列數據
2. 客戶庫負責檢測應用程序代碼
3. 支持短生命周期的PUSH網關
4. 基于Rails/SQL儀表盤構建器的GUI
5. 多種導出工具,可以支持Prometheus存儲數據轉化為HAProxy、StatsD、Graphite等工具所需要的數據存儲格式
6. 警告管理器
7. 命令行查詢工具
8. 其他各種支撐工具
多數Prometheus組件是Go語言寫的,這使得這些組件很容易編譯和部署。
四、Prometheus的架構圖
下面這張圖說明了Prometheus的整體架構,以及生態(tài)中的一些組件作用:

Prometheus服務,可以直接通過目標拉取數據,或者間接地通過中間網關拉取數據。它在本地存儲抓取的所有數據,并通過一定規(guī)則進行清理和整理數據,并把得到的結果存儲到新的時間序列中,PromQL和其他API可視化地展示收集的數據。
五、Prometheus的適用場景
Prometheus在記錄純數字時間序列方面表現非常好。它既適用于面向服務器等硬件指標的監(jiān)控,也適用于高動態(tài)的面向服務架構的監(jiān)控。對于現在流行的微服務,Prometheus的多維度數據收集和數據篩選查詢語言也是非常的強大。
Prometheus是為服務的可靠性而設計的,當服務出現故障時,它可以使你快速定位和診斷問題。它的搭建過程對硬件和服務沒有很強的依賴關系。
六、Prometheus的不適用場景
?Prometheus,它的價值在于可靠性,甚至在很惡劣的環(huán)境下,你都可以隨時訪問它和查看系統(tǒng)服務各種指標的統(tǒng)計信息。如果你對統(tǒng)計數據需要100%的精確,它并不適用,例如:它不適用于實時計費系統(tǒng)。
更多內容,關注IT運維先森微信公眾號,將為你分享更多技術內容。