Adding basic JMX support

This commit is contained in:
Michael Nitschinger
2013-05-28 14:54:43 +02:00
parent 6e04c9edc3
commit dfb19ea7f7
3 changed files with 88 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
package com.couchbase.spring.monitor;
import com.couchbase.client.CouchbaseClient;
import java.net.SocketAddress;
import java.util.Map;
/**
* Base class to encapsulate common configuration settings.
*/
public abstract class AbstractMonitor {
private CouchbaseClient client;
protected AbstractMonitor(final CouchbaseClient client) {
this.client = client;
}
public CouchbaseClient getClient() {
return client;
}
/**
* Fetches stats for all nodes.
*
* @return stats for each node
*/
protected Map<SocketAddress,Map<String,String>> getStats() {
return client.getStats();
}
/**
* Returns stats for an individual node.
*
* @param node
* @return
*/
protected Map<String, String> getStats(SocketAddress node) {
return getStats().get(node);
}
}

View File

@@ -0,0 +1,33 @@
package com.couchbase.spring.monitor;
import com.couchbase.client.CouchbaseClient;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;
import java.net.SocketAddress;
/**
* Exposes basic cluster information.
*/
@ManagedResource(description = "Cluster Information")
public class ClusterInfo extends AbstractMonitor {
public ClusterInfo(final CouchbaseClient client) {
super(client);
}
@ManagedOperation(description = "Cluster Hostnames")
public String getHostNames() {
StringBuilder result = new StringBuilder();
for (SocketAddress node : getStats().keySet()) {
result.append(node.toString()).append(",");
}
return result.toString();
}
@ManagedOperation(description = "Number of Nodes")
public int getNumberOfNodes() {
return getStats().keySet().size();
}
}