Apache Cassandra monitoring through Hyperic HQ

For monitoring Cassandra through Hyperic HQ server you need to write hyperic JMX plugin as well as you need to change java opts in the Cassandra server.

Follow following steps to monitor Cassandra through hyperic HQ:

1. Modify Cassandra  server JVM opts

1.1 For linux

->For Cassandra 0.6.x

Add parameter -Dproc.java.home=$JAVA_HOME in  the file  $CASSANDRA_HOME/bin/ cassandra.in.sh

->For Cassandra 0.7.x

Add parameter -Dproc.java.home=$JAVA_HOME in  the file  $CASSANDRA_HOME/conf/cassandra-env.sh

1.2 For windows:
Add parameter -Dproc.java.home=$JAVA_HOME in  the file  $CASSANDRA_HOME/bin/cassandra.bat

Default Cassandra server JMX port is 8080. JMX port is required in the plugin config for monitoring.

2.       I assume that you have Cassandra server setup done and for example following is the details of Cassandra storage configuration.

Keyspace: test

Column family: employee

Column family: department

 

3.       Writing Cassandra Hyperic Plugin:

Let me give brief about Hyperic JMX Plugin: – JMX plugins target remote JMX-enabled applications. They extract metrics from the Java services via MBeans. One of the main tasks of writing a JMX plugin is determining which metrics to monitor via those MBeans. JMX plugins are templatized and so you will not need to write any Java code. All you need to do is write an XML descriptor.

For more details follow http://support.hyperic.com/display/DOC/JMX+Plugin+Tutorial

 

In Cassandra we usually monitor column family specific parameters. Following are the metrics of Cassandra column families those are need to monitor.

I. TotalDiskSpaceUsed

II. LiveDiskSpaceUsed

III. LiveSSTableCount

IV. PendingTasks

V. WriteCount

VI. ReadCount

VII. MemtableColumnsCount

VIII. MemtableDataSize

IX. MemtableSwitchCount

X. TotalWriteLatencyMicros

XI. TotalReadLatencyMicros

 

 

3.1 To monitor all the column families of Cassandra key space you need to make services in the Cassandra hyperic plugin for each column family. To get metrics of particular column family you need to give keyspace name and column family name to MBean ColumnFamilyStores.

Find below sample services for column families:-

<service name=” employee “>

<property name=”PROC_HOME_PROPERTY” value=”proc.java.home”/>

<plugin type=”measurement”/>

<plugin type=”autoinventory”/>

<property name=”OBJECT_NAME” value=”org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=employee“/>

<metrics include=”cassandraCFMetrics”/>

</service>

 

 

<service name=” department“>

<property name=”PROC_HOME_PROPERTY” value=”proc.java.home”/>

<plugin type=”measurement”/>

<plugin type=”autoinventory”/>

<property name=”OBJECT_NAME” value=”org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily= department “/>

<metrics include=”cassandraCFMetrics”/>

</service>

 

Similar services you need to create for each column families of a keyspace of Cassandra .
Note: Replace org.apache.cassandra.db:type=ColumnFamilyStores with org.apache.cassandra.db:type=ColumnFamilies for cassandra 0.7.x for above services of column families.
4.  Download cassandra-plugin and save as cassandra-plugin.xml. Add service according to yours storage configuration of cassanda server database. And  Change JMX port in the cassandra-plugin.xml in the config section.

<option name=”jmx.url” description=”JMX URL to MBeanServer”  default=”service:jmx:rmi:///jndi/rmi://localhost:8080/jmxrmi”/>

And save the file.

5. Now deploy cassandra-plugin.xml file into the server and all agents which need to monitor the Cassandra server.

Step 1: Stop the HQ Server and Agents

Step 2: Copy the plugin file to the respective plugin directory

HQ-Server:

cp cassandra-plugin.xml <hq installation dir>/server-4.4.x/hq-engine/server/default/deploy/hq.ear/hq-plugins

HQ-Agent:

cp cassandra-plugin.xml <hq installation dir>/agent-4.4.x/pdk/plugins

Step 3: Start the HQ Server and the HQ Agents

 

 

 

About suniluiit

Technical Architect working in Big data and Cloud technologies for the last 5 years with overall software industry experience of around 9 years. Architected and Working on Impetus Workload Migration Product which allows organizations to saves 50%-80% manual offloading time and cost. It provides faster parallel & scalable data migration to Hadoop along with incremental data options. It also maximize the existing investments in code and reuse of SQL scripts. Architected and Developed cloud agnostic application for deployment and configuration management of the enterprise application including technologies stacks like CQ5, Cassandra, Solr, Application Server, Web server, Haproxy, F5 and messaging server. Experienced in working and leading R&D teams for building new expertise in fields such as Big data, ETL offloading to Big Data and Cloud computing. Worked on some of the impetus open source product around Big Data and Social Media http://code.google.com/p/hadoop-toolkit/ http://code.google.com/p/zing https://github.com/impetus-opensource Specialties: Big data, Hadoop, HIve, Sqoop, Spark, J2EE/ SOA, NoSQL, Cassandra, HBase, Cloud Computing (Private/Hybrid/Public- AWS, Google, Azure, Rackspace, Openstack, VMWare, Terremark, RabbitMQ, Kafka, Memcached, Puppet, HypericHQ, Splunk etc.
This entry was posted in Uncategorized. Bookmark the permalink.

12 Responses to Apache Cassandra monitoring through Hyperic HQ

  1. Al Sargent says:

    Thanks for putting this together! Would you be open to publishing this on Hyperforge, http://support.hyperic.com/display/hypcomm/HyperFORGE, perhaps as a contributed document?

  2. sanjiv singh says:

    well done sunil !!

  3. Claudia says:

    Thanks for the post..- the information is excellent but most of all accurate.

  4. Pingback: Monitoring Java Webapp with Hyperic HQ: Send Email When Too Many Errors in Logs « The Holy Java

  5. gary says:

    The link to your plugin is broken:
    https://suniluiit.files.wordpress.com/2011/02/cassandra-plugin.doc

    Will this still work in cassandra 2.0.6 and hyperic 5.8.0?

    • suniluiit says:

      There are few changes in the JMX beans of cassandra you might need to changes the JMX been classes. But procedure will remain same.

  6. suniluiit says:

    Hi gary
    Not sure there might be some problem with wordpress i have done some changes now click on cassandra-plugin hyperlink.

    • gary says:

      Thanks. I was able to download the plugin now. But, as you said, it doesn’t work with the latest version of cassandra and hyperic. I’m not sure what needs to change yet.

Leave a reply to suniluiit Cancel reply