Kubernetes 从“监控k8s应用程序”;“操作员”;簇

Kubernetes 从“监控k8s应用程序”;“操作员”;簇,kubernetes,prometheus,prometheus-operator,prometheus-blackbox-exporter,Kubernetes,Prometheus,Prometheus Operator,Prometheus Blackbox Exporter,我们有几个K8S集群,需要从一个操作员集群(集群A)进行监控 我们在每个集群上使用Prometheus来监控集群本身,现在我们还想从应用程序的特定api进行监控,该api将告诉我们集群(根据我们的特定服务)是否正常,我不是说监控集群,我们希望运营商监控每个集群上的3个应用程序(所有3个应用程序都部署在所有受监控的群集上) 集群A(运营商)应监控集群B、C、D等上的服务/应用程序 e、 g.运营商集群将调用集群中的deplyed应用程序,如host://app1/status获取状态(如果为0或1

我们有几个K8S集群,需要从一个操作员集群(集群A)进行监控 我们在每个集群上使用Prometheus来监控集群本身,现在我们还想从应用程序的特定api进行监控,该api将告诉我们集群(根据我们的特定服务)是否正常,我不是说监控集群,我们希望运营商监控每个集群上的3个应用程序(所有3个应用程序都部署在所有受监控的群集上)

集群A(运营商)应监控集群B、C、D等上的服务/应用程序

e、 g.运营商集群将调用集群中的deplyed应用程序,如
host://app1/status
获取状态(如果为0或1),并将状态保存在某些数据库中。(可能是prometehusDB)并在集群外报告它们

目前,经过一些搜索,我发现了这个选项,但可能还有更多,我不知道

  • 使用黑盒导出器-

  • 创建我自己的程序(在golang中),该程序类似于cronjob,并将使用prom库在操作员集群中运行

  • 我的意思是运行rest调用并使用Prometheus api通过go“github.com/Prometheus/client_golang/Prometheus/promhttp”代码在Prometheus
    tsdb
    中存储状态。但不确定如何

  • 联邦
  • 此外,如果我能够将集群中的所有数据收集到操作员集群中,我应该如何以及在何处保存它?以Prometheus db tsdb?其他方式


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

    我已经看到您考虑过使用Thanos,它还不错,我们已经在生产中运行了一段时间。但是它不适合我们的要求,您的产品对我们来说很熟悉,所以我建议您看看VictoriaMetrics 这里有一篇很好的文章:

    另外一个大问题是他们对松弛的支持!
    祝您实现它好运!

    理想情况下,您可以为您的代码添加工具,并为任何监控需求公开与普罗米修斯兼容的度量标准。但是,对于blackbox和/或第三方监控/烟雾测试,有一些话要说

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

    如果API是外部可访问的,那么像Pingdom和Site24x7这样的服务提供了灵活的测试选项(收费),并且通常建议在整个环境发生故障的情况下,使用第三方至少进行基本的启动时间测试——以及所有的监控


    但是,听起来你只是想做一些基本的黑匣子风格的监控,黑匣子导出器将非常适合。它需要一个主机来运行,然后你需要为它添加一个作业到普罗米修斯的scrape配置中。最佳实践是将每个主机用于一个单一的目的,所以我会为ru配置一个特定的主机nning blackbox导出器(即使它只是集群中的另一个容器)“有没有理由使用正常的普罗米修斯联邦?”科德兰-感谢回放,我们已经考虑过了,我们想使用TANOSO,但是,既然我们有一些产科系统将数据发送到PREM系统,我们将在稍后的时间做,现在我们需要使用一些内部监控系统,对于两个选项,您建议什么?我刚才提到的?