[英]Is there a way to add Prometheus monitoring targets and alerts programmatically
我正在嘗試通過像Zabbix這樣的API以編程方式向Prometheus添加監視目標和警報。
例如,當我的cloud orchestrator軟件部署3個新虛擬機時,我還會將它們作為監控目標添加到具有一些預定義規則的Prometheus服務器。
在Zabbix中,我可以使用其API向服務器添加項目,模板,圖形等。 這樣我就可以通過監控功能自動化我的雲基礎架構。
如果您使用服務發現(SD)來控制虛擬機,那么Prometheus可以使用它來發現要抓取的主機。 部署的新主機將添加到SD中,Prometheus可以發現並抓取它們。
Prometheus支持各種SD系統,如Consul,DNS,EC2,Azure等。
如果您不使用任何本機支持的系統,那么您還可以使用基於文件的服務發現,並讓您的雲協調器創建和更新由Prometheus讀取的配置文件。
有兩種方法可以做到這一點
選項1:使用服務發現機制,prometheus將自動發現服務注冊表上的動態注冊服務即。 領事
- job_name: 'self'
consul_sd_configs:
- server: 'localhost:8080'
services: []
選項2:在prometheus配置中使用file_sd_configs
crape_configs:
- job_name: 'any_job_name'
file_sd_configs:
- files:
- target.json
target.json
[{
"targets": [ "endpoint1:8080", "endpoint1:8081" ],
"labels": {
"env": "stage",
"job": "boot-api"
}}]
在文件更改prometheus將自動重新讀取文件,您也可以在目錄中使用多個目標文件。
正如其他人所指出的那樣,普羅米修斯通過服務發現(SD)本身支持許多系統。 對於那些不直接支持的用戶,可以使用file_sd_configs。
步驟1:設置file_sd_config以添加目錄中文件中提到的所有節點。 例如。
prometheus.yaml
file_sd_configs:
- files:
- /etc/prometheus/targets/*.yaml
以上設置查找給定目錄中的所有yaml文件,並添加文件中提到的目標。
第2步:生成文件
對於自動發現,運行一個cron作業,該作業通過API提取節點列表,並更新已存在的文件或將文件添加到目錄。 json / yaml文件的格式應該如文檔中所述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.