簡體   English   中英

用於 k8s 多集群的 Prometheus

[英]Prometheus for k8s multi clusters

我有 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 個集群中刮取指標?
謝謝

您必須修改 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 監控多集群環境

你在這里有幾個選擇:

選項1:

您可以在 prod 和 test 集群中使用vmagentgrafana-agent來實現此購買,並在它們上配置遠程寫入到您的監控集群。

但在這種情況下,您需要將 kube-state-metrics 和 node-exporter 分別安裝到 prod 和 test 集群中。

此外,在將指標發送到遠程寫入之前,為集群名稱(或任何唯一標識符)添加額外標簽也很重要,以確保來自“kube-prometheus-stack”的記錄規則正常工作

圖表

選項 2:

您可以安裝victoria-metrics-k8s-stack圖表。 它具有與 kube-prometheus-stack 類似的功能——還安裝了許多記錄規則和儀表板的組件。

在這種情況下,您在每個集群中安裝victoria-metrics-k8s-stack ,但具有不同的值。 對於監控集群,您可以使用默認值,

grafana:
  sidecar:
    dashboards:
      multicluster: true

並為 vmsingle 正確配置入口

對於生產和測試集群,您需要禁用一堆組件

defaultRules:
  create: false

vmsingle:
  enabled: false
alertmanager:
  enabled: false
vmalert:
  enabled: false
vmagent:
  spec:
    remoteWrite:
      - url: "<vmsingle-ingress>/api/v1/write"
    externalLabels:
      cluster: <cluster-name>

grafana:
  enabled: false
  defaultDashboardsEnabled: false

在這種情況下,chart 將為 vmagent 部署 vmagent、kube-state-metrics、node-exporter 和 scrape 配置。

圖表

您可以嘗試查看 Wavefront。 它現在是一個商業工具,但您可以免費試用 30 天 - 而且,它還支持 promQL。 所以本質上,您可以在所有集群中使用相同的 prometheus 規則和配置,然后使用 wavefront 連接到所有這些 prom 實例。

另一個選擇可能是滅霸,但我從未親自使用過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM