在运行时远程探测Scala / Java应用程序

最近,我觉得需要在我的应用程序中打开一个可以远程登录的端口,并探测一些东西,比如特定结构的内存消耗,打印List的内容等等……这极大地方便了部署的探测运行时解决方案。

但突然之间,我有这种奇怪的感觉,这种远程探测的通用框架应该已经存在。 所以,这里有一个问题:是否有任何库已经为Scala / Java提供了这些function? 我不是在寻找“完全远程调试”解决方案,而是一种简约的方法,可以轻松扩展和探测。

您可以将ostrich嵌入到您的应用程序中。 与标准监控工具不同,它具有轻量且可读的数据表示。 而且您不仅可以看到系统指标,还可以看到任何可能的计算指标。

你试过jvisualvm吗?

它配备了jdk。 尝试运行它,看看它是否符合您的要求……

从那个页面:

Java VisualVM对Java应用程序开发人员有用,可以对应用程序进行故障排除,并监视和改进应用程序的性能。 Java VisualVM可以允许开发人员生成和分析堆转储,跟踪内存泄漏,执行和监视垃圾收集,以及执行轻量级内存和CPU分析。 还存在扩展Java VisualVMfunction的插件。 例如,JConsole工具的大多数function都可以通过MBeans选项卡和JConsole Plug-in Wrapper插件获得。 您可以通过选择“工具”|来选择标准Java VisualVM插件的目录 Java VisualVM菜单中的“插件”。

如果您真的希望在生产中的运行时探测值,那么您可以在调试模式下启动jvm,并附加一个Eclipse进程,它允许您设置断点并检查变量。 但是,您可能会遇到性能问题。 请参阅使用Eclipse进行远程调试

JMX是目前最好的选择。 它允许监视一堆标准内容,并允许您通过创建和发布它称为“MBean”的内容来扩展您可以监视的数据。 最重要的是,如果你正在运行JDK 6或更高版本,那么你已经准备好运行它了(至少在本地模式下)。 在JDK安装中,您将找到名为“jconsole”的应用程序。 运行它,您将看到对您计算机上运行的任何Java进程的监视。

也许你可以在该控制台上使用一些JavaScript? 它是可扩展且易于实现的。

我使用Apache Minajavax.script : 如何将远程JS控制台添加到Scala服务器

基本上,它与您在问题中描述的相同 – 您将telnet指向端口,并键入命令(几乎所有命令)。