Health check for Cassandra connection (using hector)?

天涯浪子 提交于 2019-12-04 17:39:15

问题


For operations monitoring of my application, I am looking for something similar to the commonly used "SQL connection validation" query

SELECT 1;

in Cassandra, using the Hector driver. I have tried things like looking at Cluster.getKnownPoolHosts() and .getConnectionManager().getActivePools(). But it seems that their status is not continuously updated, only when I actually try to access Cassandra with a query.

I'd like my health check to be independent of any keyspaces or user CFs that need to exist, so just running a "dummy" query seems difficult (against what?). And of course it shouldn't take a lot of memory or generate any significant load.

Can I force Hector somehow to update its connection pool status without running a real query?

(BTW: CQL doesn't even accept "SELECT 1" as a valid query.)


回答1:


With CQL3, I'm using the following query:

SELECT now() FROM system.local;

It would be nice to get rid of the FROM clause altogther to make this generic, in case the user does not have access to the system keyspace or local column family for some reason. But as with the other answers, at least this should not give false positives.




回答2:


The solution I'm currently using, and which seems to be the most robust so far (tested with Cassandra 1.1 and 1.2) is a simple query on "system":

Query<String> query = Query.selectQuery("*", "system", null, 1, consistencyLevel, StringSerializer.get());

It's not exactly what I wanted since it's a "real" query, but on the other hand it doesn't give any false positives.



来源:https://stackoverflow.com/questions/10246287/health-check-for-cassandra-connection-using-hector

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!