JMX + Jolokia + collectd で Cassandra をモニタリングする
概要
Cassandra の 各メトリクスの値を collectd で取得する際の設定メモ。
設定手順
Jolokia を Cassandra に設定
まずは Jolokia のライブラリをダウンロードして適当な場所に配置
$ wget http://labs.consol.de/maven/repository/org/jolokia/jolokia-jvm/1.2.0/jolokia-jvm-1.2.0-agent.jar
$ sudo mv jolokia-jvm-1.2.0-agent.jar /usr/local/lib/
Cassandra に組み込む
/etc/cassandra/conf/cassandra-env.sh
JVM_OPTS="$JVM_OPTS -javaagent:/usr/local/lib/jolokia-jvm-1.2.0-agent.jar=config=/etc/cassandra/jolokia/jolokia.properties"
/etc/cassandra/jolokia/jolokia.policy
<?xml version="1.0" encoding="utf-8"?>
<restrict>
<http>
<method>get</method>
<method>post</method>
</http>
<commands>
<command>read</command>
<command>list</command>
<command>version</command>
<command>search</command>
</commands>
</restrict>
/etc/cassandra/jolokia/jolokia.properties
host=0.0.0.0
port=7777
agentContext=/jolokia
backlog=100
# executor=fixed
# nrThreads=5
# user=bragg
# password=secret
policyLocation=file:///etc/cassandra/jolokia/jolokia.policy
historyMaxEntries=10
debug=false
debugMaxEntries=100
maxDepth=15
maxCollectionSize=1000
maxObjects=0
設定反映したら http でメトリクス取得できるか確認
$ curl http://localhost:7777/jolokia/read/org.apache.cassandra.metrics:type=Storage,name=Load
{"request":{"mbean":"org.apache.cassandra.metrics:name=Load,type=Storage","type":"read"},"value":{"Count":147127},"timestamp":1451887795,"status":200}
※Load 値取得する場合
collectd 側の設定
プラグインは curl_json を使用
(Load値を取得する場合の例)
/etc/collectd.conf
LoadPlugin curl_json
<Plugin curl_json>
<URL "http://localhost:7777/jolokia/read/org.apache.cassandra.metrics:type=Storage,name=Load">
Instance "cassandra"
<Key "value">
Type "frequency"
</Key>
</URL>
</Plugin>
その他監視例
metrics | JMX パス | Attribute |
---|---|---|
Latency(read) | org.apache.cassandra.metrics:type=ClientRequest,scope=Read,name=Latency | OneMinuteRate |
Latency(write) | org.apache.cassandra.metrics:type=ClientRequest,scope=Write,name=Latency | OneMinuteRate |
Load | org.apache.cassandra.metrics:type=Storage,name=Load | Count |
TotalDiskSpaceUsed | org.apache.cassandra.metrics:type=ColumnFamily,keyspace={Keyspace名},scope={ColumnFamily名},name=TotalDiskSpaceUsed | Count |
Pending tasks(各Stage) | org.apache.cassandra.metrics:type=ThreadPools,path=request,scope=CounterMutationStage,name=PendingTasks | Value |
取得できる JMX の一覧は Command-line JMX Client を利用すると便利
使用例
$ wget http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar
$ java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:7199
$ java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:7199 org.apache.cassandra.metrics:type=Storage,name=Load