联邦集群可以帮助用户根据不同的监控规模对集群的监控部署架构进行调整,其核心在于每一个集群都包含一个用于获取当前实例中监控样本的接口,可观测服务支持 /federate
接口来配置集群联邦。
Prometheus 集群联邦
对于 Prometheus Server 中心集群而言,可以同采集 Exporter 实例一样从其他集群的 Prometheus 实例获取指标数据。
中心集群配置示例如下:
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
# 用户名和密码请向云管或者技术支持人员获取
basic_auth:
username: 'your_username'
password: 'your_password'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
# 以下域名请向云管或者技术支持人员获取
static_configs:
- targets:
- 'ecms.web.test-1.easystack.io'
- 'ecms.web.test-2.easystack.io'
- 'ecms.web.test-3.easystack.io'
如果单个集群规模过大,比如超过500节点等,在进行指标拉取的时候,建议将指标分散,以防止因为指标过多而导致接口超时,如可根据节点来将指标分散,params 示例如下:
params: 'match[]': - '{job="kubelet",node=~"node-1[0-9]*"}' - '{job="kubelet",node=~"node-2[0-9]*"}' - '{job="kubelet",node=~"node-3[0-9]*"}' - ......
kubernetes 默认使用 ClusterFirst 的 dnspolicy,如您的集群无法解析 ecms.web.test-1.easystack.io 等域名,需要在 prometheus 启动时添加参数 hostAliases,以支持当前 Pod 可以访问在配置中定义的域名。
Thanos 集群联邦
对于 Thanos 而言,支持通过服务发现的方式在 Thanos Query 服务的启动参数中配置其他集群的 Thanos 地址来完成对接。
中心集群 Thanos Query 启动参数配置示例如下:
args:
- query
# 以下域名请向云管或者技术支持人员获取
- --endpoint=ecms.grpc.test-1.easystack.io:443
- --endpoint=ecms.grpc.test-2.easystack.io:443
- --endpoint=ecms.grpc.test-3.easystack.io:443
- --query.replica-label=prometheus_replica
- --query.replica-label=thanos_ruler_replica
- --log.level=info
# 证书认证内容请向云管或者技术支持人员获取
- --grpc-client-tls-secure
- --grpc-client-tls-skip-verify
- --grpc-client-tls-cert=/certs/tls.crt
- --grpc-client-tls-key=/certs/tls.key
- --grpc-client-tls-ca=/certs/ca.crt
kubernetes 默认使用 ClusterFirst 的 dnspolicy,如您的集群无法解析 ecms.grpc.test-1.easystack.io 等域名,需要在 thanos query 启动时添加参数 hostAliases,以支持当前 Pod 可以访问在启动参数中定义的域名。