Quantcast
Channel: VMware Communities : Popular Discussions - Hyperic User Forums
Viewing all articles
Browse latest Browse all 52618

Hard coding creating problem to build a Cassandra JMX Plugin?

$
0
0
Hi
I am trying to build a Hyperic HQ Plugin for Cassandra Data store. By default Cassandra gives very extensive JMX report for the all keyspace, Column families and cache etc. To show all the keyspaces and column families metrics current jmx plugin implementation leads to hard code all the Mbean corresponding to keyspaces and column families which is greate and not leading to general solution at all.
Please give suggesion for it??
Cassandra sample jmx report:---------------------------------------

MBean: org.apache.cassandra.db.ColumnFamilyStore
Name: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Employee
0. Attribute: PendingTasks = 0 (r)
1. Attribute: ColumnFamilyName = MailBoxFolder (r)
2. Attribute: MinRowCompactedSize = 0 (r)
3. Attribute: MaxRowCompactedSize = 0 (r)
4. Attribute: MeanRowCompactedSize = 0 (r)
5. Attribute: MemtableColumnsCount = 0 (r)
6. Attribute: MemtableDataSize = 0 (r)
7. Attribute: MemtableSwitchCount = 0 (r)
8. Attribute: ReadCount = 0 (r)
9. Attribute: RecentReadLatencyMicros = NaN (r)
10. Attribute: LifetimeReadLatencyHistogramMicros = ERROR (r)
11. Attribute: RecentReadLatencyHistogramMicros = ERROR (r)
12. Attribute: TotalReadLatencyMicros = 0 (r)
13. Attribute: WriteCount = 0 (r)
14. Attribute: TotalWriteLatencyMicros = 0 (r)
15. Attribute: RecentWriteLatencyMicros = NaN (r)
16. Attribute: LifetimeWriteLatencyHistogramMicros = ERROR (r)
17. Attribute: RecentWriteLatencyHistogramMicros = ERROR (r)
18. Attribute: TotalDiskSpaceUsed = 198735111 (r)
19. Attribute: LiveDiskSpaceUsed = 198735111 (r)
20. Attribute: LiveSSTableCount = 5 (r)
21. Attribute: BloomFilterFalsePositives = 0 (r)
22. Attribute: RecentBloomFilterFalsePositives = 0 (r)
23. Attribute: BloomFilterFalseRatio = 0.0 (r)
24. Attribute: RecentBloomFilterFalseRatio = 0.0 (r)
Operation: java.lang.Object forceFlush []
Operation: void forceMajorCompaction []
Operation: void invalidateRowCache []
MBean: org.apache.cassandra.db.ColumnFamilyStore
Name: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Departmert
0. Attribute: PendingTasks = 0 (r)
1. Attribute: ColumnFamilyName = MessageLogLayer (r)
2. Attribute: MinRowCompactedSize = 0 (r)
3. Attribute: MaxRowCompactedSize = 0 (r)
4. Attribute: MeanRowCompactedSize = 0 (r)
5. Attribute: MemtableColumnsCount = 0 (r)
6. Attribute: MemtableDataSize = 0 (r)
7. Attribute: MemtableSwitchCount = 0 (r)
8. Attribute: ReadCount = 0 (r)
9. Attribute: RecentReadLatencyMicros = NaN (r)
10. Attribute: LifetimeReadLatencyHistogramMicros = ERROR (r)
11. Attribute: RecentReadLatencyHistogramMicros = ERROR (r)
12. Attribute: TotalReadLatencyMicros = 0 (r)
13. Attribute: WriteCount = 0 (r)
14. Attribute: TotalWriteLatencyMicros = 0 (r)
15. Attribute: RecentWriteLatencyMicros = NaN (r)
16. Attribute: LifetimeWriteLatencyHistogramMicros = ERROR (r)
17. Attribute: RecentWriteLatencyHistogramMicros = ERROR (r)
18. Attribute: TotalDiskSpaceUsed = 0 (r)
19. Attribute: LiveDiskSpaceUsed = 0 (r)
20. Attribute: LiveSSTableCount = 0 (r)
21. Attribute: BloomFilterFalsePositives = 0 (r)
22. Attribute: RecentBloomFilterFalsePositives = 0 (r)
23. Attribute: BloomFilterFalseRatio = 0.0 (r)
24. Attribute: RecentBloomFilterFalseRatio = 0.0 (r)
Operation: java.lang.Object forceFlush []
Operation: void forceMajorCompaction []
Operation: void invalidateRowCache []

MBean: org.apache.cassandra.db.ColumnFamilyStore
Name: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Country
0. Attribute: PendingTasks = 0 (r)
1. Attribute: ColumnFamilyName = MailerSite (r)
2. Attribute: MinRowCompactedSize = 0 (r)
3. Attribute: MaxRowCompactedSize = 0 (r)
4. Attribute: MeanRowCompactedSize = 0 (r)
5. Attribute: MemtableColumnsCount = 0 (r)
6. Attribute: MemtableDataSize = 0 (r)
7. Attribute: MemtableSwitchCount = 0 (r)
8. Attribute: ReadCount = 0 (r)
9. Attribute: RecentReadLatencyMicros = NaN (r)
10. Attribute: LifetimeReadLatencyHistogramMicros = ERROR (r)
11. Attribute: RecentReadLatencyHistogramMicros = ERROR (r)
12. Attribute: TotalReadLatencyMicros = 0 (r)
13. Attribute: WriteCount = 0 (r)
14. Attribute: TotalWriteLatencyMicros = 0 (r)
15. Attribute: RecentWriteLatencyMicros = NaN (r)
16. Attribute: LifetimeWriteLatencyHistogramMicros = ERROR (r)
17. Attribute: RecentWriteLatencyHistogramMicros = ERROR (r)
18. Attribute: TotalDiskSpaceUsed = 3064 (r)
19. Attribute: LiveDiskSpaceUsed = 3064 (r)
20. Attribute: LiveSSTableCount = 2 (r)
21. Attribute: BloomFilterFalsePositives = 0 (r)
22. Attribute: RecentBloomFilterFalsePositives = 0 (r)
23. Attribute: BloomFilterFalseRatio = 0.0 (r)
24. Attribute: RecentBloomFilterFalseRatio = 0.0 (r)
Operation: java.lang.Object forceFlush []
Operation: void forceMajorCompaction []
Operation: void invalidateRowCache []
-------------------------------------------------------------------------------------------------------------------------------

I have defined some metrics in the jmx plug in that i want to access are
---------------------------------------------------------------
<metrics name="cassandraFamily">
<metric name="TotalDiskSpaceUsed" category="UTILIZATION" indicator="true"/>
<metric name="LiveDiskSpaceUsed" category="UTILIZATION" indicator="true"/>
<metric name="LiveSSTableCount" category="UTILIZATION" indicator="true"/>
</metrics>

-------------------------------------------------------------
To display metrics data for all the three column families i need to do hard coding like--
----------------
<property name="OBJECT_NAME" value="org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Employee"/>
<metrics include="cassandraFamily"/>

<property name="OBJECT_NAME" value="org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Departmert"/>
<metrics include="cassandraFamily"/>

<property name="OBJECT_NAME" value="org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=test,columnfamily=Country"/>
<metrics include="cassandraFamily"/>

-----------------------------------------------------------------
Above implementation is the problem not a generic solution. I want to work it should be like this

<property name="OBJECT_NAME" value="org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=*,columnfamily=*"/>
<metrics include="cassandraFamily"/>


But not working above soltion giving exception--
MetricNotFoundException: ObjectName not found [org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=%keyspace%,columnfamily=%columnfamily%]: javax.management.InstanceNotFoundException: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=%keyspace%,columnfamily=%columnfamily%
org.hyperic.hq.product.MetricNotFoundException: ObjectName not found [org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=%keyspace%,columnfamily=%columnfamily%]: javax.management.InstanceNotFoundException: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=%keyspace%,columnfamily=%columnfamily%
at org.hyperic.hq.product.jmx.MxUtil.objectNotFound(MxUtil.java:161)
at org.hyperic.hq.product.jmx.MxUtil.getValue(MxUtil.java:331)
at org.hyperic.hq.product.jmx.MxMeasurementPlugin.getValue(MxMeasurementPlugin.java:58)
at org.hyperic.hq.product.MeasurementPluginManager.getPluginValue(MeasurementPluginManager.java:176)
at org.hyperic.hq.product.MeasurementPluginManager.getValue(MeasurementPluginManager.java:274)
at org.hyperic.hq.product.MeasurementPluginManager.getValue(MeasurementPluginManager.java:135)
at org.hyperic.hq.product.MeasurementPluginManager.getValue(MeasurementPluginManager.java:127)
at org.hyperic.hq.product.util.PluginDumper.getValue(PluginDumper.java:653)
at org.hyperic.hq.product.util.PluginDumper.fetchMetrics(PluginDumper.java:796)
at org.hyperic.hq.product.util.PluginDiscoverer.dumpProperties(PluginDiscoverer.java:375)
at org.hyperic.hq.product.util.PluginDiscoverer.dumpProperties(PluginDiscoverer.java:424)
at org.hyperic.hq.product.util.PluginDiscoverer.dumpServer(PluginDiscoverer.java:488)
at org.hyperic.hq.product.util.PluginDiscoverer.runtimeScan(PluginDiscoverer.java:563)
at org.hyperic.hq.product.util.PluginDiscoverer.start(PluginDiscoverer.java:321)
at org.hyperic.hq.product.util.PluginDumper.testDiscovery(PluginDumper.java:1154)
at org.hyperic.hq.product.util.PluginDumper.invoke(PluginDumper.java:459)
at org.hyperic.hq.product.util.PluginMain.main(PluginMain.java:311)
Caused by: javax.management.InstanceNotFoundException: org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=%keyspace%,columnfamily=%columnfamily%
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:662)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1403)
at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1359)
at javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:600)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
at javax.management.remote.rmi.RMIConnectionImpl_Stub.getAttribute(Unknown Source)
at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getAttribute(RMIConnector.java:878)
at org.hyperic.hq.product.jmx.MxUtil.getValue(MxUtil.java:581)
at org.hyperic.hq.product.jmx.MxUtil.getValue(MxUtil.java:308)
... 15 more

Please give me suggestion ASAP

Message was edited by: suniluiit

Viewing all articles
Browse latest Browse all 52618

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>