Prometheus for k8s 多集群

You*_*ati 4 kubernetes prometheus

我有 3 个 kubernetes 集群(生产、测试​​、监控)。我是普罗米修斯的新手,所以我通过使用 Helm Chart 将其安装在我的测试环境中来测试它:

# https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack
Run Code Online (Sandbox Code Playgroud)

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

我找到了这个链接,讲述了普罗米修斯联邦:

https://prometheus.io/docs/prometheus/latest/federation/
Run Code Online (Sandbox Code Playgroud)

如果安装 helm 图表“kube-prometheus-stack”并摆脱另外 2 个集群上的 grafana,我怎样才能使第三个集群上的第三个“kube-prometheus-stack”从另外 2 个集群中抓取指标?
谢谢

Mar*_* K. 6

您必须修改 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'
Run Code Online (Sandbox Code Playgroud)

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

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

您可以查看以下文章来进一步了解 Prometheus Federation:

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

  2. Kubernetes 中的 Prometheus 联盟

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

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