- 深入理解Prometheus監控系統
- 鮑光亞 張帆
- 971字
- 2024-12-16 17:00:36
1.4 Prometheus 2.37(LTS版本)
Prometheus 2.37發布于2022年7月,是Prometheus的首個長期支持(long term support,LTS)版本。該版本在2.0版本的基礎上進行了多個方面的增強和完善。
在本地存儲方面,2.37版本的一項重要改進是增加了事務隔離功能,從而能夠更可靠地進行并發操作。本地存儲增加了快照功能,當系統重啟時能夠通過加載快照文件快速恢復內存狀態,減少啟動時間。2.37版本實現了以mmap方式訪問本地存儲的頭部塊,提高了監控數據的讀寫性能。此外,2.37版本采用snappy格式壓縮WAL文件,節約了存儲空間。
2.37版本中的PromQL模塊引入了多項改進:增加了@修飾符,從而能夠更準確、更靈活地控制查詢數據的時間;支持嵌套子查詢,從而能夠表示更復雜的查詢請求。
在服務自動發現方面,2.37版本新增了對多種目標的自動發現,包括DigitalOcean、Eureka、Hetzner、HTTP、IONOS、Linode、Moby、Nomad、PuppetDB、Scaleway、Uyuni、Vultr和XDS等。至此版本,Prometheus自動發現的目標達到24種。
2.37版本的Web API功能也得到大幅增強,除了支持對監控數據、監控項元數據和監控目標的查詢,還增加了遠程寫功能(可接收遠程寫入的數據)以及告警規則和警報消息的查詢功能等,支持通過API執行某些存儲管理操作(如快照生成、刪除數據等)。
2.37版本各個模塊在代碼文件中的分布如代碼清單1-4所示。
代碼清單1-4 Prometheus 2.37主要代碼文件目錄
. |-- cmd # 包含主程序以及Promtool模塊 |-- config # YAML配置信息處理模塊,實現了配置信息的結構定義和編解碼,以及配置文件的加載等 |-- console_libraries # Web用戶界面所使用的模板定義,包含導航欄、菜單、通用函數等 |-- consoles # Web用戶界面使用的HTML文件 |-- discovery # 監控目標自動發現模塊,支持24種目標的自動發現 |-- docs # 說明文檔和用戶手冊 |-- documentation # 各種配置文件 |-- model # 底層模塊,包含標簽處理、樣本數據解析和時間戳處理等功能 |-- notifier # 通知器模塊 |-- plugins # 用于管理自動發現功能而引入的外部庫 |-- prompb # 各種.proto文件 |-- promql # 數據查詢語言模塊 |-- rules # 規則模塊,包含告警規則管理器模塊和轉錄規則管理器模塊 |-- scrape #采樣管理器模塊和監控目標管理器模塊,監控目標自動發現模塊被拆分并轉移到discovery
#目錄中 |-- scripts # 包含2個文件,用于檢查許可聲明,以及編譯.proto文件并生成Go代碼 |-- storage # 存儲模塊,本地存儲改為TSDB(以外部依賴包方式引入) |-- template # 底層模塊,用于增強監控數據的處理能力 |-- tracing # 跟蹤器模塊 |-- tsdb # 本地存儲模塊,此前在2.0版本中該模塊以外部依賴包方式引入 |-- util # 底層數據結構模塊,包含緩存、文件操作、定時器、字符串處理、HTTP客戶端等 `-- web # 該模塊包含Web API和Web用戶界面這2個模塊