繁体   English   中英

使用千分尺发布 Spring 批量指标

[英]Publishing Spring Batch metrics using Micrometer

I have an app that contains 2 dozen of spring batch cron jobs.There is no rest controller as it is an analytics app and it runs daily and read data from db, process it, and then store aggregated data in another db.I want to在使用千分尺的作业上有 spring 内置指标并将它们推送到 Prometheus。由于我的应用程序不是网络服务器应用程序,所以千分尺仍然会在 HOST:8080 上发布结果吗? 执行器会自动在 HOST:8080 上启动新服务器吗?还是我们需要在 8080 上运行应用程序服务器?

我的理解是执行器和应用程序服务器可以运行不同的端口,因为它们是不同的进程?即使应用程序服务器存在与否,执行器应该能够使用与应用程序服务器端口相同的端口,还是可以使用不同的端口?

因此,如果我的应用程序不是基于网络服务器的应用程序,我仍然可以在 localhost:8080/actuator/ 访问指标并发布到 Prometheus?

Prometheus 是一个基于拉取的系统,这意味着你从正在运行的应用程序中给它一个 URL,它会 go 从中拉取指标。 如果您的应用程序是临时批处理应用程序,那么仅仅为了在短时间内公开 URL 而将其设为 webapp 是没有意义的。 这正是 Prometheus 人员创建推送网关的原因,请参阅何时使用推送网关

现在请记住,为了让您的批处理应用程序将指标发送到 Prometheus,您需要:

  • 普罗米修斯服务器
  • Pushgateway 服务器
  • 一个可选的指标仪表板(Grafana 或类似的,Prometheus 也提供了一个内置的 UI)
  • 让您的批处理应用程序将指标推送到网关

可以在使用 Micrometer 的批处理指标中找到有关此设置的完整示例。 此示例实际上与您的用例相似。 它显示了两个计划每隔几秒运行一次的作业,它们将指标存储在 Micrometer 的主注册表中,以及一个后台任务,该任务定期将指标从 Micrometer 的注册表推送到 Prometheus 的网关。

另一种选择是使用 RSocket 协议,如果您使用Spring Cloud Dataflow ,该协议是免费提供的。

对于 Spring Boot,没有 Spring Batch 的执行器端点,请参阅 Spring Batch 的执行器端点以了解有关此决定的原因的更多详细信息。

@Mahmoud 我认为有一些有效的用例可以选择性地公开健康端点。 要考虑的第一个问题是,当我们说批处理操作运行时间很短时,该时间有多短——几分钟? 我同意没有必要; 但是运行几个小时的作业呢? 对于某些作业,我们获得指标很重要,尤其是当此类作业受业务 SLA 约束并且操作员需要知道作业是否以每秒所需的操作进行处理时,是否具有正确的连接池大小等。

还有各种运行平台的实现细节——我们可以使用没有 SCDF 的 Spring Batch,不受 Prometheus 网关控制以能够使用推送,在 Istio 将自动拉取指标的云中运行等。

对于 OPs 问题,通常可以在 web 实例中运行 spring 批处理作业,并在作业完成通知后使用关闭端点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM