LoginSignup
0
0

More than 5 years have passed since last update.

JMX + Jolokia + collectd で Casasndra をモニタリングする

Posted at

概要

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
# mv jolokia-jvm-1.2.0-agent.jar /usr/local/lib/

Cassandra に組み込む

# vi /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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0