Supervisord:监视和交互正在运行的JVM应用程序

需要什么:

短:

在常规intervall中查询jvm进程的状态,如果不满足某些条件,则重新启动进程。

我们目前有一个长期运行的kotlin应用程序,它监视一个web套接字。 这个应用程序是通过在Linux上的supervisord启动的。

我们希望通过事件类型TICK_3600不时地使用Supervisord“Event Listeners”来查询正在运行的jvm应用程序的状态。

所以可以说,我们想检查,如果超过100个项目在最后一小时(TICK_3600)处理。 如果不是这种情况,我们希望平稳地重新启动应用程序,因为它会执行一些异步数据读写操作,并且随机关机可能会导致数据丢失。

什么是不需要的:

我们不需要应用程序的复杂度量,如Prometheus或Grafana出口商AppPerfect等。

理念:

启动应用程序时,使用java.nio.channels启动套接字观察器。 在常规的intervalls上,然后通过supervisord查询该socket观察器,然后检查条件是否满足,如果条件不满足,则重新启动应用程序。

问题:

如何通过supervisord监控正在运行的应用程序

- Does monitoring the application like this make sense at all? - Is it decent to good practice - If not: What would be alternatives 

安全问题

 - The Ports should only be accessible from localhost - Would it make more sense, to use Named Pipes? - Would it be better to use Java - RMI