当前位置: 代码迷 >> 综合 >> Prometheus 联邦集群
  详细解决方案

Prometheus 联邦集群

热度:107   发布时间:2023-09-30 10:25:02.0

联邦集群


假设有三组项目,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'

Prometheus 联邦集群

Prometheus 联邦集群

Prometheus 联邦集群 参数解释:

通过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 []参数,则将选择所有匹配系列的并集。