什么是 Prometheus 联邦集群
?又是在什么样的场景下应用呢?首先,我们知道 Prometheus 是一个强大的监控平台,它是针对容器和微服务的开源监控预警工具,功能稳健,而且现在很多大厂都在使用一套监控系统(像网易、360等)。
一般地,对于初创型公司或中小型公司而言,单机部署基本上已经满足需求。而对于大规模监控而言,如:两个数据中心,其内部服务器的内网并不互通,此时单机部署的情景是无法满足我们需求的,而如果你每个数据中心都部署一套完整的监控体系,那你的数据很难进行集中管理。一般像这种夸机房、夸数据中心的情况我们就会采用 prometheus 的联邦集群模式,来进行数据集中管理、监控及告警。
本次我以两台 Prometheus 实例进行简单演示:
说明:实例 1 为主,实例2为从,实例 1 会从实例 2 采集数据,并最终在实例 1 进行整合。
实例 1、2 均安装 Prometheus 服务(实例)
这里安装过程省略,我之前的文章已经有介绍,没必要重复同样工作。
需要注意的是,实例 1 我认为你已经是安装好了 Prometheus 的整个系统(包括 alertmanaget、钉钉/微信等接口),实例 2 只需要安装一个 Prometheus 实例即可,无需再安装任何插件。
1、实例 1 配置
在 Prometheus 实例(主)配置 Prometheus 实例(从)
vim prometheus.yml
...
- job_name: 'prometheus-federate-xahmat'
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job=~".*"}'
static_configs:
- targets: ["公网IP:9090"]
...
配置说明:
{job=~".*"}
采集所有来自实例 2 的指标数据,根据实际情况自定义即可;2、实例 2 配置
实例 2 就是正常的配置,如在实例 2 内网下的各 Host 中部署 export 数据采集插件等,不做演示,我前面也有提到。
如:我这里安装 node_export 插件来采集 Hos 基本数据,如下编写动态主机发现文件
vim ./node_file/node_xahmat_discovery.json
[{
"targets": ["172.xxx.xxx.250:9100"],
"labels": {
"instance": "172.xxx.xxx.250",
"server_type": "test",
"Hostname": "Test-XahmatCMS"
}
},{
"targets": ["172.xxx.xxx.251:9100"],
"labels": {
"instance": "172.xxx.xxx.251",
"server_type": "produce",
"Hostname": "Produce-Xahmatserver"
}
},{
"targets": ["172.xxx.xxx.249:9100"],
"labels": {
"instance": "172.xxx.xxx.249",
"server_type": "test",
"Hostname": "Test-Xahmatserver"
}
}]
注意1:Prometheus 主配置文件中的动态主机发现路径必须与你上面编写的文件路径保持一致(如下),否则无法获取数据。
...
- job_name: 'xahmat项目'
file_sd_configs:
- files:
- ./node_file/node_xahmat_discovery.json
...
注意2:如果你修改了 Prometheus 主配置文件,你需要重启 Prometheus 服务或热加载一下 Prometheus 服务(如下)使生效。
curl -X POST http://localhost:9090/-/reload
1、数据验证
在实例 1(主)上验证实例 2 的数据是否已经采集:
2、面板展示
数据无误后可在 Grafana 面板进行数据展示:
至此,Prometheus 的联邦配置已完成!
—END