Micrometer 和 Prometheus 具有无法公开 HTTP 的 Java 子进程

问题描述 投票:0回答:1

我有一个像这样运行的复杂产品。

  1. 公开 HTTP 服务的父 Java 进程。
  2. 父进程启动工作子进程(新JVM)并管理它们的生命周期。
  3. 工作进程不能有 HTTP 服务器(出于安全和许多其他原因),它们通过 TCP 连接与其他组件进行通信。一个父进程可以在很长一段时间内管理许多工作进程。
  4. 我们需要使用 Prometheus 来抓取指标。
  5. 父进程和工作进程都有千分尺观测仪器,但只有父进程暴露了HTTP服务器。
  6. 我们了解 Prometheus 推送网关的局限性,因此我们决定不使用它。

问题 1:在没有 HTTP 的情况下,我们如何配置 Prometheus 从工作线程中抓取指标。

问题2:如果Q1不可行,有没有办法可以将worker的所有指标发送给父级,并让父级导出这些指标?这应该如何运作?是否有现有的 Micrometer 工具可以通过 TCP 将整个注册表发送到另一个进程?一旦父进程从工作进程接收到注册表,父进程如何将其与自己的指标合并?

我试图找到一些示例,但网上的所有内容都表明每个 JVM 应该有自己的用于抓取的 HTTP 端点。

prometheus distributed-computing distributed-system micrometer
1个回答
0
投票

在没有 HTTP 的情况下,我们如何配置 Prometheus 从工作线程中获取指标。

查看 https://github.com/micrometer-metrics/prometheus-rsocket-proxy 它有一个服务器和一个客户端组件。您在基础设施中运行服务器并将客户端添加到您的应用程序中。客户端连接到服务器并向其发送指标数据。 Prometheus 后端抓取服务器而不是应用程序(不需要 HTTP)。

© www.soinside.com 2019 - 2024. All rights reserved.