远程管理 运行 Java 个应用程序

Manage running Java apps remotely

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

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

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

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

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

我的要求是:

  1. 正确监控应用 运行ning 及其状态。
  2. 如果失败,应用程序应在通知 admin/developer 的同时重新启动。

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

谢谢。

您听说过 Java 服务包装器吗?不是一个完整的管理功能,但是它会监控 JVM 崩溃和内存不足的情况,并确保重新启动您的应用程序。警报也应该是可能的。

这里有个小比较table:https://yajsw.sourceforge.io/#mozTocId284533

所以一些基本的监控和管理已经包含在内。如果您需要更多,我建议使用 JMX (https://www.oracle.com/java/technologies/javase/javamanagement.html) or Prometheus (https://prometheus.io/ and https://github.com/prometheus/client_java)

您也可以使用 spring-boot-actuator (see health). It comes with a built-in endpoint that has some health checks(depending on your spring-boot project), but you can create your own

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