本篇來回答 config 和初始化的問題。
由於 Prometheus Server 的模組彼此相依,所以在啓動時 main()
必須依序初始化。
Prometheus Server 的整個 main
函數超過 1000 行,大部分是在設定參數和初始化模組,還有設定 log 和 registry。
初始化的順序如下:
/data
路徑設定,建立 promql.Engine以下幾種情況會重載 config:
/api/v1/-/reload
重載時需觸發的函數都在 main.go
的 reloaders 變數中。
包括 localStoage, remoteStorage, webHandler, scrapeManager, discoveryManager, notifierManager
都會執行對應的 ApplyConfig
函數。
而 ruleManager
和 queryEngine
則取決於設定。