14

アプリケーションの運用監視のために、一般的に使用される「SQL接続検証」クエリに似たものを探しています

SELECT 1;

Cassandraで、Hectorドライバーを使用します。Cluster.getKnownPoolHosts()や.getConnectionManager()。getActivePools()を見てみました。しかし、実際にクエリでCassandraにアクセスしようとした場合にのみ、ステータスが継続的に更新されないようです。

ヘルスチェックを、存在する必要のあるキースペースやユーザーCFから独立させたいので、「ダミー」クエリを実行するだけでは難しいようです(何に対して?)。そしてもちろん、それは多くのメモリを消費したり、大きな負荷を生成したりするべきではありません。

実際のクエリを実行せずに、Hectorに接続プールのステータスを更新させることはできますか?

(BTW:CQLは「SELECT1」を有効なクエリとしても受け入れません。)

4

3 に答える 3

18

CQL3では、次のクエリを使用しています。

SELECT now() FROM system.local;

ユーザーが何らかの理由でsystemキースペースまたは列ファミリーにアクセスできない場合に備えて、FROM句を完全に削除して、これを汎用化すると便利です。localしかし、他の回答と同様に、少なくともこれは誤検知を与えるべきではありません。

于 2013-12-03T12:00:47.230 に答える
4

私が現在使用しているソリューションで、これまでで最も堅牢であると思われるもの(Cassandra 1.1および1.2でテスト済み)は、「システム」に対する単純なクエリです。

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

これは「実際の」クエリであるため、正確には私が望んでいたものではありませんが、一方で、誤検知は発生しません。

于 2013-04-11T05:40:52.357 に答える
0

Eemeli Kantolaのクエリはタイムスタンプを返しますが、これをJavaタイプに変換することはできませんでした。私のために機能し、文字列を返す代替クエリはSELECT release_version FROM system.local;

于 2020-09-01T04:23:27.897 に答える