我一直使用DataStax OpsCenter(Enterprise)5.0.0 REST API和DSE 4.5.1(Cassandra 2.0.9)来查询/ $ cluster_name / nodes端点,并在last_seen字段中查看每个给定节点后的秒数看到我是否可以通过DataStax OpsCenter的API检测到节点。
对于正在运行的节点,last_seen为0.当closuresCassandra进程时,last_seen开始递增,当进程恢复时重置为0。
但是,我注意到,如果DataStax OpsCenter在某个节点发生故障时停机,则在发生故障后,last_seen将保持为0,这意味着您不能分辨节点是否启动或者是否已closures。
如果DataStax OpsCenter代理发生故障,则会发生同样的问题。 如果Cassandra进程继续下去,last_seen也保持为0。
我已经在带有DSC Cassandra 2.0.1的旧版3.2.2 OpsCenter(社区)上对此进行了testing,并且它似乎仍然检测到Cassandra进程已closures,并且即使在首先closuresDataStax OpsCenter代理时也开始递增last_seen。
现在为了健壮性,我实际上使用了nodetool的Cassandra节点可用性视图,但是当然,DataStax OpsCenter方法在区分上下节点/进程时应该更强大?
这是DataStax OpsCenter中的一个错误吗?
是否有另一种方法通过DataStax OpsCenter REST API确定节点是否正在运行?
PS。 我写了很多Cassandra和DataStax OpsCenter Nagios插件,这就是为什么我碰到这个,find他们在我的github https://github.com/harisekhon/nagios-plugins 。
从纯粹的经验观察来看,如果节点不可用,那么API“… / nodes / <node_ip> / mode”将返回null,否则返回string“normal”(或者可能是其他适当的string)。 从“nodes / all / mode”解释所有节点状态的JSON。
请注意,在“模式”API更改和OpsCenter显示节点状态更改之间有一段时间(几秒),但这可能只是我的环境; 因人而异。