- 深入理解Prometheus監控系統
- 鮑光亞 張帆
- 868字
- 2024-12-16 17:00:36
1.3 Prometheus 2.0
2017年11月,Prometheus發布了2.0版本。在2.0版本中,Prometheus開始使用完全獨立的全新存儲引擎TSDB[1](不再依賴于LevelDB,與之前的版本不兼容)。新的存儲引擎的引入使得Prometheus的數據存儲性能大幅增強,為Prometheus的后續發展奠定了堅實基礎。此外,在該版本的遠程讀寫過程中,請求和響應消息開始使用snappy算法進行壓縮,從而提高了網絡I/O[2]吞吐量。同時遠程存儲使用的連接開始啟用HTTP keep-alive(在1.0版本中該模式是未啟用的),從而減少了應用層遠程連接方面的開銷。
[1]時間序列數據庫(Time Series Database,TSDB)
[2]輸入/輸出(input/output,IO)
除了存儲方面的升級,2.0版本還增加或者升級了其他方面的功能。自動發現功能支持的目標增加到11種,包括Kubernetes、Azure、Consul、ZooKeeper、File、DNS、EC2、GCE、Marathon、OpenStack、Triton等。其中,GCE、OpenStack和Triton為新增的功能。在Web API方面,2.0版本增加了監控目標數據查詢功能、Alertmanager查詢功能以及配置信息查詢功能,并且開始支持遠程讀取。
2.0版本的各個模塊在代碼文件中的分布如代碼清單1-3所示。
代碼清單1-3 Prometheus-2.0主要代碼文件目錄
. |-- cmd # 包含主程序,以及由工具箱發展而來的Promtool模塊 |-- config # YAML配置信息處理模塊,實現了配置信息的結構定義和編解碼,以及配置文件的加載等 |-- console_libraries # Web用戶界面所使用的模板定義,包含導航欄、菜單、通用函數等 |-- consoles # Web用戶界面使用的HTML文件 |-- discovery # 監控目標自動發現模塊,支持11種目標的自動發現 |-- docs # 說明文檔和用戶手冊 |-- documentation # 各種配置文件 |-- notifier # 通知器模塊 |-- pkg # 底層模塊,包含各種底層數據結構和底層函數 |-- prompb # 各種.proto文件 |-- promql # 數據查詢語言模塊 |-- relabel # 只有3個函數,實現標簽集的重新打標功能 |-- retrieval # 采樣管理器模塊和監控目標管理器模塊,監控目標自動發現模塊被拆分并轉移到
# discovery目錄中 |-- rules # 規則模塊,包含告警規則管理器模塊和轉錄規則管理器模塊 |-- scripts # 包含2個文件,用于檢查許可聲明,以及編譯.proto文件并生成Go代碼 |-- storage # 存儲模塊,本地存儲改為TSDB(以外部依賴包方式引入) |-- template # 底層模塊,用于增強監控數據的處理能力 |-- util # 底層數據結構模塊,包含緩存、文件操作、定時器、字符串處理和HTTP客戶端等 |-- vendor # 實現其他模塊功能所需的外部庫,包含自動發現功能所需的外部庫 `-- web # 該模塊包含Web API和Web用戶界面這2個模塊