当前位置: 首页 > 知识库问答 >
问题:

远程管理正在运行的Java应用程序

萧心远
2023-03-14

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

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

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

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

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

我的要求是:

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

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

谢谢你。

共有2个答案

高正初
2023-03-14

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

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

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

端木高卓
2023-03-14

您可以使用Spring启动执行器(请参阅运行状况)。它附带了一个内置endpoint,该endpoint具有一些运行状况检查(取决于您的spring boot项目),但您也可以创建自己的endpoint。

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

 类似资料:
  • 问题内容: 我正在用Java编写安装程序,因此将需要提升的权限才能访问Program Files目录。根据我在网上找到的信息,我编写了如下的实现: 我用来检查特权的测试与此处找到的答案略有不同,看起来像这样: 当我运行它时,它没有按预期方式进行特权测试,并调用了exec。通过查看来检查该呼叫是否有效,表明该过程实际上仍然有效。但是,我没有看到任何有关新过程的证据,Windows也没有提示我授予权限

  • 问题内容: 我通常使用VisualVM对运行的Java应用程序进行概要分析,但它需要X才能在计算机上运行。 我知道我可以通过管理端口进行连接,但这将是一个脱机的概要分析,对我来说还不够。 因此,我正在寻找一种解决方案,可以通过命令行分析正在运行的Java应用程序方法的CPU使用率。对于我来说,在服务器上收集数据就足够了,然后可以在另一台计算机上分析收集的数据。 更新: 看来我需要更具体。我想从命令

  • 我正在以独立模式运行Spark群集。 我已使用以下选项提交了群集模式下的Spark应用程序: 使作业具有容错性。 现在我需要保持集群运行但停止应用程序运行。 我尝试过的事情: 停止集群并重新启动它。但是当我这样做时,应用程序会恢复执行。 使用了名为DriverWrapper的守护进程的Kill-9,但之后工作再次恢复。 我还删除了临时文件和目录并重新启动了集群,但作业再次恢复。 所以正在运行的应用

  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运

  • Windows NT Option Pack 提供了在 Web 服务器上的 ASP 应用程序管理服务。例如,Internet 服务管理器为应用程序开发人员提供了一个使用简便的管理工具来设置应用程序的属性。另外,Active Server Pages 提供了允许用户的应用程序存储全局数据的脚本功能。本主题简要介绍部分应用程序管理功能,并提供到详细信息的链接。 启动和结束应用程序 当 Web 服务器第

  • 问题内容: 我有一个在Linux机器上运行的Java应用程序。我使用以下命令运行Java应用程序: 我已经在此Linux机器上为TCP打开了端口4000。我使用Windows XP计算机上的eclipse,并尝试连接到此应用程序。我也在Windows中打开了端口。 这两台机器都在LAN上,但是我似乎无法将调试器连接到Java应用程序。我究竟做错了什么? 问题答案: 我注意到有些人在这里剪切和粘贴该