首页 > 解决方案 > 用于 k8s 多集群的 Prometheus

问题描述

我有 3 个 Kubernetes 集群(产品、测试、监控)。我是 prometheus 的新手,所以我通过在我的测试环境中使用 helm 图表安装它来测试它:

# https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack

但是,如果我想从 prod 和 test 集群中获取指标,我必须重复相同的 helm 安装,并且每个“kube-prometheus-stack”都将在其自己的集群中独立。这根本不理想。我试图找到一种方法来拥有一个单一的 prometheus/grafana,它将联合/聚合来自每个集群的 prometheus 服务器的指标。

我找到了这个链接,说的是普罗米修斯联盟:

https://prometheus.io/docs/prometheus/latest/federation/

如果安装掌舵图“kube-prometheus-stack”并在其他 2 个集群上摆脱 grafana,我怎样才能使第 3 个集群上的第 3 个“kube-prometheus-stack”从其他 2 个集群中刮取指标?
谢谢

标签: kubernetesprometheus

解决方案


您必须修改 prometheus federate 的配置,以便它可以从其他集群中抓取指标,如文档中所述:

scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{job="prometheus"}'
        - '{__name__=~"job:.*"}'

    static_configs:
      - targets:
        - 'source-prometheus-1:9090'
        - 'source-prometheus-2:9090'
        - 'source-prometheus-3:9090'

params现场检查作业以从中获取指标。在这个特定的例子中

它将从位于 source-prometheus-{1,2,3}:9090 的 Prometheus 服务器中抓取带有标签 job="prometheus" 或以 job: 开头的度量名称的任何系列

您可以查看以下文章,让您更深入地了解普罗米修斯联盟:

  1. 使用 Prometheus 监控 Kubernetes - 在集群外!

  2. Kubernetes 中的 Prometheus 联邦

  3. 使用 Prometheus 监控多个联合集群 - 安全的方式

  4. 使用 Prometheus Federation 和 Grafana 监控多集群环境


推荐阅读