我有许多后台进程(java应用程序),运行24/7。为了监视这些后端(即检查进程是否没有响应并通过SMS/电子邮件通知),我编写了另一个应用程序。
旧的后端现在在正常的时间间隔记录心跳,这个新应用程序检查它们是否定期执行,并在必要时通知。
现在,我们有两个选择
我们现在可以预见的问题是,如果这个监视器应用程序进入无响应状态,该怎么办?那么,我的问题是,这两种情况是否有区别,还是两者是相同的?什么样的选择更适合我的案子?
请注意,这是一个特殊情况,与或不一样。
环境: Java,托管在LINUX服务器上
发布于 2012-04-16 10:32:00
所谓调度任务,是指由系统调度程序触发,还是作为现有后端进程中的调度线程触发?
要捕获意外的终止或无响应状态,最好是运行单独的进程,而不是线程。但是,一个计划好的线程将为您提供更紧密的与拥有进程的交互,而IPC开销则更少。
我会实现这两个目标。在每个后端进程中维护本地状态的记录,每个进程中有一个预定任务触发一个线程来更新该节点的当前状态。此更新可能相当频繁,因为它将比与单独的进程通信成本更低。
使用单独的“监控应用程序”流程定期收集有关所有后端进程的信息。这种情况不应该经常发生--无论进程是一直在运行,还是由cron作业调度,都是无关紧要的,因为状态保存在每个后端进程中。如果其中一个后端没有响应,此监控应用程序将能够确定响应不足,并执行一些有意义的探测,以确定问题所在。该组件将通知您的SMS/电子邮件实用程序发送报告。
发布于 2012-04-16 09:52:40
我会选择后端进程,因为它可以维护状态,请看一下来自terracotta http://terracotta.org/products/quartz-scheduler的石英调度程序。
它可以适应短暂的情况,您只需要提供一个简单的包装,因此,只要您在quartz.properties文件中正确使用线程,监视器应用程序就应该是健壮的。
发布于 2017-08-24 06:59:34
您可以使用nagios核心作为核心和Naptor来监视应用程序。它很容易设置和嵌入到您的应用程序开发。
您可以在以下链接上查看:https://github.com/agunghakase/Naptor/tree/ver1.0.0
https://stackoverflow.com/questions/10171793
复制相似问题