适用于 k8s 多集群的 Prometheus
Prometheus for k8s multi clusters
我有 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
但是如果我想从生产集群和测试集群中获取指标,我必须重复相同的 helm 安装,并且每个“kube-prometheus-stack”在其自己的集群中都是独立的。这一点都不理想。我正在尝试找到一种方法来获得单个 prometheus/grafana,它将 federate/agregate 来自每个集群的普罗米修斯服务器的指标。
我发现这个link,关于普罗米修斯联邦的说法:
https://prometheus.io/docs/prometheus/latest/federation/
如果安装 helm chart“kube-prometheus-stack”并在另外 2 个集群上删除 grafana,我如何在第 3 个集群上创建第 3 个“kube-prometheus-stack”,从中抓取指标另外 2 个?
谢谢
你可以试试 Wavefront。它现在是一个商业工具,但你可以免费试用 30 天——而且,它理解 promQL。所以基本上,您可以在所有集群中使用相同的 prometheus 规则和配置,然后使用 wavefront 连接到所有这些舞会实例。
另一个选项可能是 Thanos,但我个人从未使用过它。
您必须修改 prometheus federate 的配置,以便它可以按照所述从其他集群抓取指标 in documentation:
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
字段检查 jobs to scrape 指标来自。在这个特定的例子中
It will scrape any series with the label job="prometheus" or a metric name starting
with job: from the Prometheus servers at
source-prometheus-{1,2,3}:9090
您可以查看以下文章,让您更深入地了解普罗米修斯联盟:
您在这里没有几个选择:
选项 1:
您可以在生产和测试集群中购买 vmagent or grafana-agent 并配置远程写入到您的监控集群。
但在这种情况下,您需要将 kube-state-metrics 和 node-exporter 分别安装到生产和测试集群中。
在将指标发送到远程写入之前为集群名称(或任何唯一标识符)添加额外标签也很重要,以确保来自“kube-prometheus-stack”的记录规则正常工作
diagram
选项 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 和抓取配置。
diagram
我有 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
但是如果我想从生产集群和测试集群中获取指标,我必须重复相同的 helm 安装,并且每个“kube-prometheus-stack”在其自己的集群中都是独立的。这一点都不理想。我正在尝试找到一种方法来获得单个 prometheus/grafana,它将 federate/agregate 来自每个集群的普罗米修斯服务器的指标。
我发现这个link,关于普罗米修斯联邦的说法:
https://prometheus.io/docs/prometheus/latest/federation/
如果安装 helm chart“kube-prometheus-stack”并在另外 2 个集群上删除 grafana,我如何在第 3 个集群上创建第 3 个“kube-prometheus-stack”,从中抓取指标另外 2 个?
谢谢
你可以试试 Wavefront。它现在是一个商业工具,但你可以免费试用 30 天——而且,它理解 promQL。所以基本上,您可以在所有集群中使用相同的 prometheus 规则和配置,然后使用 wavefront 连接到所有这些舞会实例。
另一个选项可能是 Thanos,但我个人从未使用过它。
您必须修改 prometheus federate 的配置,以便它可以按照所述从其他集群抓取指标 in documentation:
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
字段检查 jobs to scrape 指标来自。在这个特定的例子中
It will scrape any series with the label job="prometheus" or a metric name starting with job: from the Prometheus servers at source-prometheus-{1,2,3}:9090
您可以查看以下文章,让您更深入地了解普罗米修斯联盟:
您在这里没有几个选择:
选项 1:
您可以在生产和测试集群中购买 vmagent or grafana-agent 并配置远程写入到您的监控集群。
但在这种情况下,您需要将 kube-state-metrics 和 node-exporter 分别安装到生产和测试集群中。
在将指标发送到远程写入之前为集群名称(或任何唯一标识符)添加额外标签也很重要,以确保来自“kube-prometheus-stack”的记录规则正常工作
diagram
选项 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 和抓取配置。
diagram