さくらVPSでCassandra 0.7.4にjmxでアクセスする
Attach APIを調べながら、Javaクラス実行時に、MBeanServerにserviceを登録するやり方を調べてみました。*1
そのついでに、Cassandraの健康チェックもできないものかと思い、さくらVPSに設定してあるCassandraにJMXで繋げてみました。
iptablesの設定
本当は、sshトンネリングで試そうと思ったがどうやらjmxは、「-Dcom.sun.management.jmxremote.port=$JMX_PORT」で
指定したポート番号以外にも任意で、ポート番号を利用するみたいです。仕方ないので、以下の様に許可をだしました。
$vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s *.*.*.* --dport 8080:65535 -j ACCEPT
ーs にアクセス元のIPアドレスを指定します。
ーーdportは、jmxremote.portで許可したポート番号(8080)から65535までを利用する許可だと思います。*2
「/etc/rc.d/init.d/iptables restart」コマンドで設定を反映後、設定がされているか確認をします。
$/sbin/iptables -L ACCEPT tcp -- *.*.*.* anywhere state NEW tcp dpts:8080:65535
きちんと、設定内容が表示されていれば、問題はないと思います。
Cassandraの設定
cassandra-env.shにjmxの設定があるので、そこで、任意のポート番号を編集します。
86行目辺りに、以下の記述があるので、iptablesのルールで指定したポート番号とあわせておきます。*3
$vi conf/cassandra-env.sh JMX_PORT="8080"
設定後、Cassandraを再起動します。
ローカルPCからアクセスしてみる
ローカルPCにインストールしているJDKから、JMXアクセスをしてみます。
なお、ローカルPCとサーバ環境のJDKは、JDK6であることが、前提です。*4
リモートプロセスのサービス名は、次のような感じです。
service:jmx:rmi:///jndi/rmi://*.*.*.*:port/jmxrmi
「*.*.*.*」には、監視したいサーバのIPアドレス(Cassandraサービス)、port番号は、jmxremote.portで指定したポート番号(8080)を指定します。
jconsoleの概要は、以下のような感じで表示がされます。
jconsoleのMBean情報は、以下のような感じで表示がされます。
Cassandraが利用しているJVMの状態がわかるようになったので、いろいろ操作をしながら負荷状況を確認したいと思います。