联邦集群:
假设有三组项目,A组项目是web,B组项目是数据库,C组项目是业务,可以在每一组项目下部署一个prometheus server实例,然后由一个中心prometheus server负责收集各个组下的监控数据,具有这种特性的称为prometheus联邦集群
联邦集群配置:
master1的prometheus server当成是中心节点:
master2和node1当成是各项目组下收集数据的prometheus server
修改master1上的prometheus server的prometheus.yml文件
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "down.yml"
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'federate'
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
- '{__name__=~"node.*"}'
static_configs:
- targets:
- '192.168.124.26:9090'
- '192.168.124.56:9090'
- job_name: 'node'
scrape_interval: 8s
static_configs:
- targets: ['192.168.124.16:9100']
docker restart prometheus
参数解释:
通过params参数可以用于指定只获取某些时间序列的样本数据,如下:
通过URL中的match[]参数指定我们可以指定需要获取的时间序列。match[]参数必须是一个瞬时向量选择器,例如up或者{job="api-server"}。配置多个match[]参数,用于获取多组时间序列的监控数据。
horbor_labels配置true可以确保当采集到的监控指标冲突时,能够自动忽略冲突的监控数据。如果为false时,prometheus会自动将冲突的标签替换为”exported_“的形式。
在任何给定的Prometheus服务器上,/ federate端点都可以为该服务器中选定的时间序列集检索当前值。 必须至少指定一个match [] URL参数以选择要公开的系列。 每个match []参数都需要指定一个即时矢量选择器,例如up或{job =“ api-server”}。 如果提供了多个match []参数,则将选择所有匹配系列的并集。