5

我们有几个 K8S 集群,我们需要从一个操作员集群(集群 A)监控我们在每个集群上使用 Prometheus 来监控集群本身,现在我们还想从应用程序的特定 api 监控,它会告诉我们是否集群(根据我们的具体服务)是否有功能,我不是在谈论监控集群,我们希望操作员在每个集群上监控 3 个应用程序(所有 3 个应用程序都部署在所有被监控的集群上)

集群 A(操作员)应监控集群 B、C、D 等上的服务/应用程序

例如,运营商集群将调用clusterA中已部署的应用程序 host://app1/status来获取0或1的状态,并将状态保存在某个数据库中。(可能是 prometehusDB)并在集群外报告它们。

目前,经过一番搜索,我找到了这个选项,但也许还有更多我不知道的选项

  1. 使用黑盒导出器 - https://github.com/prometheus/blackbox_exporter

  2. 创建我自己的程序(在 golang 中),它将像一个 cronjob 并且将使用 prom lib 在操作员集群中运行。

https://github.com/prometheus/client_golang

我的意思是运行一个休息调用并使用 Prometheus apitsdb通过 go "github.com/prometheus/client_golang/prometheus/promhttp" 代码将状态存储在 Prometheus 中。但不确定如何..

  1. 联邦??

此外,如果我能够将集群中的所有数据收集到 operator 集群中,我应该如何以及在哪里保存它?在普罗米修斯数据库 tsdb 中?另一种方式 ?

支持我们的案例的最佳实践应该是什么?我们应该怎么做?

4

2 回答 2

1

我已经看到你虽然关于使用灭霸,但它还不错,我们已经在生产中运行了一段时间。但它不符合我们的要求,你的看起来对我们很熟悉,所以我建议你看看 VictoriaMetrics 你在这里有一篇不错的文章:https ://medium.com/faun/comparing-thanos-to- victoriametrics-cluster-b193bea1683

他们对 Slack 的支持也是一大亮点!祝你好运!

于 2020-09-07T18:55:32.190 回答
1

理想情况下,您将检测您的代码并公开 Prometheus 兼容的指标以满足监控的任何需求。但是,对于黑盒和/或第 3 方监控/烟雾测试,有一些话要说。

Blackbox Exporter 中的 http 模块可能是您想要的(我之前也使用过类似的)。如果这对于您需要进行的测试不够灵活,我喜欢在 Lambda 中运行自定义测试脚本,将结果记录在 Cloudwatch 中(如果在 AWS 中运行,否则在您的环境中使用等效的脚本)。如果您以前没有这样做过,那么会有一些学习曲线,但值得付出努力。

如果 API 可以从外部访问,Pingdom 和 Site24x7 等服务会提供灵活的测试选项(收费),并且通常建议在整个环境出现故障的情况下至少使用第 3 方进行基本的正常运行时间测试 - - 连同你所有的监控!

但是,听起来您只是想做一些 Blackbox Exporter 非常适合的基本黑盒样式监控。它需要一个主机来运行,然后你需要为它添加一个作业到 Prometheus 的抓取配置中。最佳实践是将每个主机用于单一目的,因此我会为运行 blackbox exporter 提供一个特定的主机(即使它只是集群中的另一个容器)。

于 2020-09-10T09:22:55.557 回答