基于Gitlab實現Prometheus告警規則熱更新
Prometheus的告警規則一般都是在服務器中進行編輯修改,然后在重載prometheus,全程需要命令行敲代碼進行操作,這些操作對于運維來說沒有什么難度,但對于研發或者不清楚告警部署的人來說,還是會有一些不方面,因此本文通過gitlab代碼管理平臺的流水線來實現prometheus告警規則的現在編輯,主要分以下步驟:
- 在gitlab中創建項目和prometheus的告警規則
- 為項目創建runner并進行注冊
- 創建流水線
1.在gitlab中創建項目和prometheus的告警規則
圖片
圖片
創建項目,并將所有告警規則放在main分支下
2.為項目創建runner并進行注冊
創建runner
圖片
在項目設置的CI/CD中創建runner,注意runner的標簽需要設為空并勾選上允許運行未打標簽的作業或在后面的流水線中設置相同的標簽
注冊runner
圖片
根據步驟在服務器上注冊runner,建議將runner部署到gitlab服務器
3.創建流水線并執行驗證
創建流水線
在項目構建的流水線編輯器中編寫流水線,設置為只有當分支中的yaml文件有更新才執行,執行內容為遠程到prometheus服務器上,下載gitlab倉庫中的告警規則,替換告警規則文件并重載pronetheus
示例:
deploy-job:
stage: deploy
environment: production
script:
- echo "Deploying application..."
- ssh -v root@192.168.118.12 -p58422 "cd /data/apps/prometheus;rm -rf alert;git clone ssh://git@192.168.180.171:9922/ops/alert.git;time=\$(date +\"%Y%m%d\");mv alter_rules alter_rules_bak\${time};mkdir alter_rules;cp -a alert/* alter_rules;curl -X POST http://localhost:9090/-/reload"
- echo "Application successfully deployed."
only:
changes:
- "*.yaml"
驗證
圖片
圖片
圖片
修改告警規則后可在構建的作業匯總查看流水線運行情況
注意,prometheus需要開啟熱加載web.enable-lifecycle