有没有办法以编程方式添加Prometheus监控目标和警报

时间:2018-02-24 18:16:28

标签: api monitoring prometheus

我正试图通过像Zabbix这样的API以编程方式向Prometheus添加监控目标和警报。

例如,当我的cloud orchestrator软件部署3个新虚拟机时,我还会将它们作为监控目标添加到Prometheus服务器并使用一些预定义的规则。

在Zabbix中,我可以使用其API向服务器添加项目,模板,图形等。通过这种方式,我可以使用监控功能自动化我的云基础架构。

3 个答案:

答案 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中所述。