概要

Cassandra の 各メトリクスの値を collectd で取得する際の設定メモ。

  • Jolokia : HTTP 経由で JMX にアクセスできるようにする
  • collectd : Jolokia より cassandra の各メトリクス値を取得する

設定手順

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