首页 > 解决方案 > 远程管理正在运行的 Java 应用程序

问题描述

我们有几个 Java 独立应用程序(以 Jar 文件的形式)在多个服务器上运行。这些应用程序主要在系统之间读取和传输数据。我们主要在开发中使用 Java 8。我最近被任命为负责人。我的主要功能是管理和维护这些应用程序。

目前,我通过访问这些服务器手动检查这些应用程序,检查应用程序是否正在运行,有时运行一些数据库查询以查看应用程序是否开始提取数据。我的问题是,在许多情况下,其中一些应用程序由于数据问题或边缘情况而失败并关闭,而没有人注意到。我们需要一些监控和应用程序恢复。

我们没有 docker 基础设施。我们计划在未来实现 docker,但目前这不是一个选项。

经过研究,以下是我想到的选项或我尝试过的解决方案:

  1. 让应用程序创建一个套接字客户端,该客户端将心跳发送到监控应用程序(需要开发)。我把它作为我最后的选择。
  2. 我尝试使用 Eclipse Vertx 将应用程序包装到 Verticles 中。然后创建一个可以向我显示状态和其他信息的 Web 视图。经过几次尝试,应用程序无法正确解析数据(可能是由于我对 Vertx 库缺乏了解)。
  3. 有一个第三方解决方案可以做到这一点,但我不知道有什么解决方案。我愿意接受建议。

我的要求是:

  1. 正确监控正在运行的应用程序及其状态。
  2. 如果失败,应用程序应在通知管理员/开发人员的同时重新启动。

我愿意开发解决方案或实施第三方解决方案。我需要你的指导。

谢谢你。

标签: javamonitoringvert.x

解决方案


您可以使用spring-boot-actuator(请参阅健康)。它带有一个内置端点,该端点具有一些健康检查(取决于您的 spring-boot 项目),但您也可以创建自己的端点。

然后,向 http://{host}:{port}/{context}/actuator/health (替换为您的)发出 http 请求,您可以看到这些健康检查状态,还可以使用响应状态代码来监控您的应用程序.


推荐阅读