联邦集群
假设有三组项目,A组项目是web,B组项目是数据库,C组项目是业务,可以在每一组项目下部署一个prometheus server实例,然后由一个中心prometheus server负责收集各个组下的监控数据,具有这种特性的称为prometheus联邦集群。
联邦集群配置
monitor namespace下面的prometheus server当成是中心节点:
[root@master ~]# kubectl get pod -n monitor
NAME READY STATUS RESTARTS AGE
prometheus-server-5775f99578-mc7fw 1/1 Running 0 6m18s
monitoring namespace当成是各项目组下收集数据的prometheus server
[root@master ~]# kubectl get pod -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-inst-0 2/2 Running 8 5d6h
alertmanager-inst-1 2/2 Running 8 5d6h
prometheus-k8s-0 3/3 Running 21 15d
prometheus-operator-7d6496d74b-vrjcj 1/1 Running 11 19d
修改monitor namespace的prometheus server的prometheus.yml文件
- job_name: 'federate'honor_labels: truemetrics_path: '/federate'params:'match[]':- '{job="example-app"}'- '{__name__=~"job:.*"}'- '{__name__=~"node.*"}'static_configs:- targets:- '192.168.100.5:30372'
参数解释:
通过params参数可以用于指定只获取某些时间序列的样本数据,如下:
http://192.168.124.26:9090/federate?match%5B%5D=%7Bjob%3D%22prometheus%22%7D&match%5B%5D=%7B__name__%3D~%22job%3A.%2A%22%7D&match%5B%5D=%7B__name__%3D~%22node.%2A%22%7D
通过URL中的match[]参数指定我们可以指定需要获取的时间序列。match[]参数必须是一个瞬时向量选择器,例如up或者{job="api-server"}。配置多个match[]参数,用于获取多组时间序列的监控数据。
horbor_labels配置true可以确保当采集到的监控指标冲突时,能够自动忽略冲突的监控数据。如果为false时,prometheus会自动将冲突的标签替换为”exported_“的形式。
在任何给定的Prometheus服务器上,/ federate端点都可以为该服务器中选定的时间序列集检索当前值。 必须至少指定一个match [] URL参数以选择要公开的系列。 每个match []参数都需要指定一个即时矢量选择器,例如up或{job =“ api-server”}。 如果提供了多个match []参数,则将选择所有匹配系列的并集。