我们有几个运行应用程序的集群。我们希望建立一个中央监视群集,该群集可以使用Prometheus Federation从其余群集中抓取指标。
为此,我需要在每个集群中安装Prometheus服务器,并通过联合在中央集群中安装Prometheus服务器。我还将在中央集群中也安装Grafana,以可视化我们从其他Prometheus服务器收集的指标。
问题是;
我应该在哪里设置警报管理器?仅对于中央群集还是每个群集都必须同时是警报管理器?
使用联合身份验证时的最佳做法是什么?
尽管我可以使用入口控制器公开每个Prometheus服务器?在k8s中提供Prometheus服务器与联盟之间的通信的最佳实践是什么?
答案 0 :(得分:0)
基于此blog
我应该在哪里设置警报管理器?仅对于中央群集还是每个群集都必须同时是警报管理器?
使用联合身份验证时的最佳做法是什么?
答案是在每个群集上执行该操作。
如果您需要进行警报的数据从一个Prometheus移至另一个,则您添加了另一个故障点。当涉及互联网等WAN链接时,这尤其具有风险。您应尽可能尝试将警报推送到尽可能深的联盟层次结构中。例如,应该在Prometheus抓取该目标的警报上设置有关该目标已关闭的警报,而不是全局Prometheus,因为可以将其删除几步。
我虽然ı可以使用入口控制器公开每个Prometheus服务器?在Prometheus服务器和k8s中的联盟之间提供通信的最佳实践是什么?
我认为这取决于用例,在我检查的每个文档中,他们只是使用prometheus.yml中scrape_configs.static_configs
中的目标
像here
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'
OR
像here
prometheus.yml:
rule_files:
- /etc/config/rules
- /etc/config/alerts
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- 'prometheus-server:80'
此外,值得一提的是,他们在tutorial中是如何使用helm在两个集群上构建带有两个Prometheus服务器的中央监视集群的。