2

我已经到了需要将我的普罗米修斯拆分成更小部分的时刻。我一直在这里读到它,但它并没有说明在 kubernetes 中的扩展。以下是我的设置:

并且大约有 50 个命名空间会产生数千个指标,而当前使用一个 prometheus 的设置是不够的。所以我决定把它分成三个实例,比如:

但是不久之后,我意识到这些指标是由kubernetes_sd_config 抓取的,并且无法判断我想通过哪个普罗米修斯实例来抓取哪些指标,或者我错了。一种解决方案是将 Kubernetes 集群拆分为更小的集群,但目前工作量太大。

所以我的问题是,是否有可能告诉 prometheus 我只想抓取kube 状态指标节点导出器或原生 kubernetes 指标?

4

3 回答 3

2

另一种选择是采用水平可扩展的分布式 Prometheus 实现:https ://github.com/weaveworks/cortex (注意我写了这个。)

它还没有为黄金时段做好准备,但我们正在内部使用它并取得了不错的效果。与上游 Prometheus 相比,它的设置和操作会更加努力,但它应该几乎可以无限扩展——而且我们在 Kubernetes 上运行它,所以它真的很适合那里。

如果您有兴趣,请告诉我,我可以指导您进行设置。

于 2017-02-10T13:01:49.780 回答
1

Kubernetes 中的扩展与其他地方相同。这是一个使用服务发现和重新标记来挑选被监控的内容的问题。

例如,节点导出器的配置应该已经是一个单独的 scrape_config,因此通过拆分配置文件将其拆分为单独的 Prometheus 应该很简单。

于 2016-12-22T08:18:42.743 回答
0

我有一个类似的联邦任务。以下是我的做法,遵循@brian-brazil 的回答:

  • 使用配置设置master普罗米修斯:

scrape_configs: - job_name: dc_prometheus honor_labels: true metrics_path: /federate params: match[]: - '{job="my-kubernetes-job"}' static_configs: - targets: - prometheus-slaveA:9090 - prometheus-slaveB:9090 看看这里是如何声明奴隶的。它肯定是相当静态的。此外,match[]这里的参数告诉获取所有从属指标。当然,你必须比那更聪明。

  • 使用特定的重新标记进行设置slaves

relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_slave] action: keep regex: slaveA

和 slaveB 类似的等等。

现在对于每个 pod,prometheus.io/scrape: true|false您将拥有prometheus.io/slave: slaveA|slaveB.

我在这里详细描述了它:http ://devlog.qaraywa.net/?p=176

于 2017-12-07T18:09:38.087 回答