我正试图通过像Zabbix这样的API以编程方式向Prometheus添加监控目标和警报。
例如,当我的cloud orchestrator软件部署3个新虚拟机时,我还会将它们作为监控目标添加到Prometheus服务器并使用一些预定义的规则。
在Zabbix中,我可以使用其API向服务器添加项目,模板,图形等。通过这种方式,我可以使用监控功能自动化我的云基础架构。
答案 0 :(得分:3)
如果您使用服务发现(SD)来控制虚拟机,那么Prometheus可以使用它来发现要抓取的主机。部署的新主机将添加到SD中,Prometheus可以发现并抓取它们。
Prometheus支持各种SD系统,如Consul,DNS,EC2,Azure等 如果您不使用任何本机支持的系统,那么您也可以使用file-based service discovery并让您的云协调器创建并更新由Prometheus读取的配置文件。
答案 1 :(得分:0)
有两种方法
选项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将自动重新读取文件,您也可以在一个目录中使用多个目标文件。
答案 2 :(得分:0)
就像其他人指出的那样,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文件的格式应与docs中所述。