基于Gitlab實(shí)現(xiàn)Prometheus告警規(guī)則熱更新
Prometheus的告警規(guī)則一般都是在服務(wù)器中進(jìn)行編輯修改,然后在重載prometheus,全程需要命令行敲代碼進(jìn)行操作,這些操作對(duì)于運(yùn)維來說沒有什么難度,但對(duì)于研發(fā)或者不清楚告警部署的人來說,還是會(huì)有一些不方面,因此本文通過gitlab代碼管理平臺(tái)的流水線來實(shí)現(xiàn)prometheus告警規(guī)則的現(xiàn)在編輯,主要分以下步驟:
- 在gitlab中創(chuàng)建項(xiàng)目和prometheus的告警規(guī)則
- 為項(xiàng)目創(chuàng)建runner并進(jìn)行注冊(cè)
- 創(chuàng)建流水線
1.在gitlab中創(chuàng)建項(xiàng)目和prometheus的告警規(guī)則
圖片
圖片
創(chuàng)建項(xiàng)目,并將所有告警規(guī)則放在main分支下
2.為項(xiàng)目創(chuàng)建runner并進(jìn)行注冊(cè)
創(chuàng)建runner
圖片
在項(xiàng)目設(shè)置的CI/CD中創(chuàng)建runner,注意runner的標(biāo)簽需要設(shè)為空并勾選上允許運(yùn)行未打標(biāo)簽的作業(yè)或在后面的流水線中設(shè)置相同的標(biāo)簽
注冊(cè)runner
圖片
根據(jù)步驟在服務(wù)器上注冊(cè)runner,建議將runner部署到gitlab服務(wù)器
3.創(chuàng)建流水線并執(zhí)行驗(yàn)證
創(chuàng)建流水線
在項(xiàng)目構(gòu)建的流水線編輯器中編寫流水線,設(shè)置為只有當(dāng)分支中的yaml文件有更新才執(zhí)行,執(zhí)行內(nèi)容為遠(yuǎn)程到prometheus服務(wù)器上,下載gitlab倉庫中的告警規(guī)則,替換告警規(guī)則文件并重載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"
驗(yàn)證
圖片
圖片
圖片
修改告警規(guī)則后可在構(gòu)建的作業(yè)匯總查看流水線運(yùn)行情況
注意,prometheus需要開啟熱加載web.enable-lifecycle