检测悬而未决的OpenStack / Linux服务的其他方法?

我注意到在我的一些Linux服务器上,Linux服务将被挂起。 我知道它挂起的唯一方法是依赖于服务失败的操作,当我重新启动服务时,它无法停止,但它开始罚款。

如果我service <servicename> status它说它正在运行,如果我做一个ps -ef | grep <servicename> ps -ef | grep <servicename>它只显示正在运行的那个服务的一个进程。

还有什么我可以检查,知道它是否挂起? 我试图积极主动地提供这些服务,并确定为什么他们会被挂起。

作为参考,服务主要是openstack-nova-compute和openstack-cinder-volume。 我可以用rabbitMQ检测到的cinder卷服务开始build立,但nova-compute不会发生同样的情况。

这是很难testing,因为就像我说的我知道的唯一方法是,如果我试图在OpenStack的节点上做一些事情,它失败或挂起,然后我重新启动服务。 我有一个脚本运行来testing一些OpenStack服务,但是使用nova s​​cheduler,它可能需要一段时间才能在该主机上放置一个实例,或者主机可能已满,所以它永远不会在该主机上放置另一个实例。

使用像Zabbix或Nagios这样的监控解决scheme,为服务编写脚本/检查,包括监控进程存在,进程cpu使用情况,进程内存使用情况,API响应等

您可以编写一个脚本(cron job?)来检查您要监控的OpenStack服务日志的时间戳。 我认为大部分服务都会进行某种审计并logging下来。 另外任何操作都应该生成日志。 这样,如果日志不会在一段时间后更新,您可以尝试重新启动服务。

正如你所说,确定为什么他们挂起应该是至关重要的。