java - 远程管理正在运行的 Java 应用程序
问题描述
我们有几个 Java 独立应用程序(以 Jar 文件的形式)在多个服务器上运行。这些应用程序主要在系统之间读取和传输数据。我们主要在开发中使用 Java 8。我最近被任命为负责人。我的主要功能是管理和维护这些应用程序。
目前,我通过访问这些服务器手动检查这些应用程序,检查应用程序是否正在运行,有时运行一些数据库查询以查看应用程序是否开始提取数据。我的问题是,在许多情况下,其中一些应用程序由于数据问题或边缘情况而失败并关闭,而没有人注意到。我们需要一些监控和应用程序恢复。
我们没有 docker 基础设施。我们计划在未来实现 docker,但目前这不是一个选项。
经过研究,以下是我想到的选项或我尝试过的解决方案:
- 让应用程序创建一个套接字客户端,该客户端将心跳发送到监控应用程序(需要开发)。我把它作为我最后的选择。
- 我尝试使用 Eclipse Vertx 将应用程序包装到 Verticles 中。然后创建一个可以向我显示状态和其他信息的 Web 视图。经过几次尝试,应用程序无法正确解析数据(可能是由于我对 Vertx 库缺乏了解)。
- 有一个第三方解决方案可以做到这一点,但我不知道有什么解决方案。我愿意接受建议。
我的要求是:
- 正确监控正在运行的应用程序及其状态。
- 如果失败,应用程序应在通知管理员/开发人员的同时重新启动。
我愿意开发解决方案或实施第三方解决方案。我需要你的指导。
谢谢你。
解决方案
您可以使用spring-boot-actuator(请参阅健康)。它带有一个内置端点,该端点具有一些健康检查(取决于您的 spring-boot 项目),但您也可以创建自己的端点。
然后,向 http://{host}:{port}/{context}/actuator/health (替换为您的)发出 http 请求,您可以看到这些健康检查状态,还可以使用响应状态代码来监控您的应用程序.
推荐阅读
- html - 在小屏幕上分成两行
- java - 从 NetBeans 内部运行 RapidMiner 进程
- c# - 在 xamarin 表单 iOS 应用程序中使用 Acr.UserDialogs 的进度对话框出现问题
- django - Django SAML 集成
- c# - 如何使用 iTextSharp 将 TIFF 字节数组转换为 PDF 字节数组?
- kendo-ui - 如何在 Kendo AutoComple 中使用通配符查找项目
- wpf - 如何在 WPF 中的 Metro 窗口底部创建菜单
- node.js - 每日或每月间隔的交易总额
- python - 如何使用元组键操作字典以输出熊猫数据框
- gerrit - Gerrit 到 Gerrit 复制无法查看参考/更改