kubernetes - 用于 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 个集群中刮取指标?
谢谢
解决方案
您必须修改 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: 开头的度量名称的任何系列
您可以查看以下文章,让您更深入地了解普罗米修斯联盟:
推荐阅读
- web-audio-api - Web Audio API 中的节点数量是否有任何实际限制?
- jdbc - 何时需要为 jdbc 驱动程序指定 Class.forName(driverName)?
- python - Django Rest Framework - 使用嵌套对象和相关模型上的 @property 优化序列化程序
- azure - Azure DevOps 发布管道 - 将环境变量传递给 docker 容器
- typescript - 通过装饰器使用 Typescript 快速访问模块
- python - 向列表中的每 30 个索引位置插入无或 0 值
- javascript - 打开和关闭时垂直菜单中的换行符
- rabbitmq - Rabbitmq:清除具有名称的队列和延迟队列中的所有消息
- c++ - 关于后跟分号的 throw 语句
- linux - 键盘布局在 Alpine Linux 的 tty 中是正确的,但在 XOrg 和 DWM 中不正确