有没有办法以编程方式添加普罗米修斯监控目标和警报
Is there a way to add Prometheus monitoring targets and alerts programmatically
我正在尝试寻找一种方法,通过像 Zabbix 这样的 API 以编程方式向 Prometheus 添加监控目标和警报。
例如,当我的云编排器软件部署了 3 个新的虚拟机时,我也会按照一些预定义的规则将它们作为监控目标添加到 Prometheus 服务器。
在 Zabbix 中,我可以使用 API 添加项目、模板、图表等到服务器。这样我就可以通过监控功能自动化我的云基础设施。
如果您使用服务发现 (SD) 来控制您的虚拟机,那么 Prometheus 可以使用它来发现要抓取的主机。部署的新主机将添加到 SD 中,Prometheus 可以发现并抓取它们。
Prometheus 支持各种 SD 系统,如 Consul、DNS、EC2、Azure 等
如果您不使用任何本机支持的系统,那么您也可以使用 file-based service discovery 并让您的云协调器创建和更新 Prometheus 读取的配置文件。
有两种方法可以做到这一点
方案一:使用服务发现机制。 Prometheus 将自动发现在您的服务注册表中动态注册的服务,即。领事
- job_name: 'self'
consul_sd_configs:
- server: 'localhost:8080'
services: []
选项 2: 在 prometheus 配置中使用 file_sd_configs
scrape_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 会自动重新读取文件,您也可以通过 globs 在一个目录中使用多个目标文件。
正如其他人指出的那样,Prometheus 通过服务发现 (SD) 固有地支持许多系统。对于那些不直接支持的,您可以使用 file_sd_configs.
第一步:设置file_sd_config将文件中提到的所有节点添加到目录中。例如
prometheus.yaml
file_sd_configs:
- files:
- /etc/prometheus/targets/*.yaml
以上设置查找给定目录中的所有 yaml 文件并添加文件中提到的目标。
第 2 步: 生成文件
对于自动发现,运行 一个 cron 作业,它通过 API 拉取节点列表并更新已经存在的文件或将文件添加到目录中。 json/yaml 文件的格式应如 docs.
中所述
我正在尝试寻找一种方法,通过像 Zabbix 这样的 API 以编程方式向 Prometheus 添加监控目标和警报。
例如,当我的云编排器软件部署了 3 个新的虚拟机时,我也会按照一些预定义的规则将它们作为监控目标添加到 Prometheus 服务器。
在 Zabbix 中,我可以使用 API 添加项目、模板、图表等到服务器。这样我就可以通过监控功能自动化我的云基础设施。
如果您使用服务发现 (SD) 来控制您的虚拟机,那么 Prometheus 可以使用它来发现要抓取的主机。部署的新主机将添加到 SD 中,Prometheus 可以发现并抓取它们。
Prometheus 支持各种 SD 系统,如 Consul、DNS、EC2、Azure 等
如果您不使用任何本机支持的系统,那么您也可以使用 file-based service discovery 并让您的云协调器创建和更新 Prometheus 读取的配置文件。
有两种方法可以做到这一点
方案一:使用服务发现机制。 Prometheus 将自动发现在您的服务注册表中动态注册的服务,即。领事
- job_name: 'self'
consul_sd_configs:
- server: 'localhost:8080'
services: []
选项 2: 在 prometheus 配置中使用 file_sd_configs
scrape_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 会自动重新读取文件,您也可以通过 globs 在一个目录中使用多个目标文件。
正如其他人指出的那样,Prometheus 通过服务发现 (SD) 固有地支持许多系统。对于那些不直接支持的,您可以使用 file_sd_configs.
第一步:设置file_sd_config将文件中提到的所有节点添加到目录中。例如
prometheus.yaml
file_sd_configs:
- files:
- /etc/prometheus/targets/*.yaml
以上设置查找给定目录中的所有 yaml 文件并添加文件中提到的目标。
第 2 步: 生成文件
对于自动发现,运行 一个 cron 作业,它通过 API 拉取节点列表并更新已经存在的文件或将文件添加到目录中。 json/yaml 文件的格式应如 docs.
中所述