Metrics are now also available via JMX directly
[demos/kafka/monitoring] / mbeans / src / main / java / de / juplo / monitoring / ListMBeans.java
1 package de.juplo.monitoring;
2
3 import javax.management.MBeanAttributeInfo;
4 import javax.management.MBeanOperationInfo;
5 import javax.management.MBeanServerConnection;
6 import javax.management.ObjectName;
7 import javax.management.remote.JMXConnector;
8 import javax.management.remote.JMXConnectorFactory;
9 import javax.management.remote.JMXServiceURL;
10 import java.util.Iterator;
11 import java.util.Set;
12
13
14 public class ListMBeans
15 {
16     public static void main(String[] args)
17     {
18         String url = args.length > 0 ? args[0] : "service:jmx:rmi:///jndi/rmi://:7001/jmxrmi";
19         System.out.println("-------------------------------------------------");
20         try {
21             JMXServiceURL jmxServiceURL = new JMXServiceURL(url);
22             JMXConnector jmxConnector = JMXConnectorFactory.connect(jmxServiceURL, null);
23
24             MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
25
26             Set result = connection.queryNames(new ObjectName("*:*"), null);
27             Iterator it = result.iterator();
28
29             while (it.hasNext())
30             {
31                 ObjectName objectName = (ObjectName) it.next();
32
33                 try
34                 {
35                     System.out.println("--> " + objectName.getCanonicalName());
36                     MBeanAttributeInfo[] attributes = connection.getMBeanInfo(objectName).getAttributes();
37
38                     for (int i = 0; i < attributes.length; i++)
39                     {
40                         System.out.println("         Attribute: " + attributes[i].getName() + "   of Type : " + attributes[i].getType());
41                     }
42
43                     MBeanOperationInfo[] operations = connection.getMBeanInfo(objectName).getOperations();
44
45                     for (int i = 0; i < operations.length; i++)
46                     {
47                         System.out.print("         Operation: " + operations[i].getReturnType() + "  " + operations[i].getName() + "(");
48                         for (int j = 0; j < operations[i].getSignature().length;j++)
49                         {
50                           System.out.print(operations[i].getSignature()[j].getName() +
51                             ":" +
52                             operations[i].getSignature()[j].getType() +
53                             "  ");
54                         }
55                         System.out.println(")");
56                     }
57                 } catch (Exception e)
58                 {
59                     e.printStackTrace();
60                 }
61             }
62
63             jmxConnector.close();
64         }
65         catch (Exception e)
66         {
67             e.printStackTrace();
68         }
69         System.out.println("-------------------------------------------------");
70     }
71 }