/src/com/googlecode/jmxtrans/example/ActiveMQ.java

http://jmxtrans.googlecode.com/ · Java · 155 lines · 119 code · 20 blank · 16 comment · 0 complexity · 0fdf5419741ac49aa3401c118a813bb9 MD5 · raw file

  1. package com.googlecode.jmxtrans.example;
  2. import com.googlecode.jmxtrans.JmxTransformer;
  3. import com.googlecode.jmxtrans.model.JmxProcess;
  4. import com.googlecode.jmxtrans.model.Query;
  5. import com.googlecode.jmxtrans.model.Server;
  6. import com.googlecode.jmxtrans.model.output.GraphiteWriter;
  7. import com.googlecode.jmxtrans.util.BaseOutputWriter;
  8. import com.googlecode.jmxtrans.util.JmxUtils;
  9. /**
  10. * This example shows how to query an ActiveMQ server for some information.
  11. *
  12. * The point of this example is to show that * works as part of the objectName.
  13. * It also shows that you don't have to set an attribute to get for a query.
  14. * jmxtrans will get all attributes on an object if you don't specify any.
  15. *
  16. * @author jon
  17. */
  18. public class ActiveMQ {
  19. private static final String GW_HOST = "192.168.192.133";
  20. /** */
  21. public static void main(String[] args) throws Exception {
  22. Server server = new Server("w2", "1105");
  23. server.setAlias("w2_activemq_1105");
  24. GraphiteWriter gw = new GraphiteWriter();
  25. gw.addSetting(BaseOutputWriter.HOST, GW_HOST);
  26. // gw.addSetting(GraphiteWriter.HOST, "localhost");
  27. gw.addSetting(BaseOutputWriter.PORT, 2003);
  28. // use this to add data to GW path
  29. gw.addTypeName("destinationName");
  30. gw.addTypeName("Destination");
  31. gw.addSetting(BaseOutputWriter.DEBUG, true);
  32. Query q = new Query();
  33. q.setObj("org.apache.activemq:BrokerName=localhost,Type=Subscription,clientId=*,consumerId=*,destinationName=*,destinationType=Queue,persistentMode=Non-Durable");
  34. q.addAttr("PendingQueueSize");
  35. q.addAttr("DispatchedQueueSize");
  36. q.addAttr("EnqueueCounter");
  37. q.addAttr("DequeueCounter");
  38. q.addAttr("MessageCountAwaitingAcknowledge");
  39. q.addAttr("DispachedCounter");
  40. q.addOutputWriter(gw);
  41. server.addQuery(q);
  42. Query q2 = new Query();
  43. q2.setObj("org.apache.activemq:BrokerName=localhost,Destination=ActiveMQ.Advisory.Consumer.Queue.*,Type=Topic");
  44. q2.addAttr("QueueSize");
  45. q2.addAttr("MaxEnqueueTime");
  46. q2.addAttr("MinEnqueueTime");
  47. q2.addAttr("AverageEnqueueTime");
  48. q2.addAttr("InFlightCount");
  49. q2.addAttr("ConsumerCount");
  50. q2.addAttr("ProducerCount");
  51. q2.addAttr("DispatchCount");
  52. q2.addAttr("DequeueCount");
  53. q2.addAttr("EnqueueCount");
  54. q2.addAttr("Subscriptions");
  55. q2.addOutputWriter(gw);
  56. server.addQuery(q2);
  57. Query q3 = new Query();
  58. q3.setObj("org.apache.activemq:BrokerName=localhost,Destination=*,Type=Queue");
  59. q3.addAttr("QueueSize");
  60. q3.addAttr("MaxEnqueueTime");
  61. q3.addAttr("MinEnqueueTime");
  62. q3.addAttr("AverageEnqueueTime");
  63. q3.addAttr("InFlightCount");
  64. q3.addAttr("ConsumerCount");
  65. q3.addAttr("ProducerCount");
  66. q3.addAttr("DispatchCount");
  67. q3.addAttr("DequeueCount");
  68. q3.addAttr("EnqueueCount");
  69. q3.addAttr("Subscriptions");
  70. q3.addOutputWriter(gw);
  71. server.addQuery(q3);
  72. Query q4 = new Query();
  73. q4.setObj("org.apache.activemq:BrokerName=localhost,Destination=*,Type=Topic");
  74. q4.addAttr("QueueSize");
  75. q4.addAttr("MaxEnqueueTime");
  76. q4.addAttr("MinEnqueueTime");
  77. q4.addAttr("AverageEnqueueTime");
  78. q4.addAttr("InFlightCount");
  79. q4.addAttr("ConsumerCount");
  80. q4.addAttr("ProducerCount");
  81. q4.addAttr("DispatchCount");
  82. q4.addAttr("DequeueCount");
  83. q4.addAttr("EnqueueCount");
  84. q4.addAttr("Subscriptions");
  85. q4.addOutputWriter(gw);
  86. server.addQuery(q4);
  87. Query q5 = new Query();
  88. q5.setObj("org.apache.activemq:BrokerName=localhost,Type=Broker");
  89. q5.addOutputWriter(gw);
  90. server.addQuery(q5);
  91. Query q6 = new Query();
  92. q6.setObj("java.lang:type=Memory");
  93. q6.addAttr("HeapMemoryUsage");
  94. q6.addAttr("NonHeapMemoryUsage");
  95. q6.addOutputWriter(gw);
  96. server.addQuery(q6);
  97. Query q7 = new Query("java.lang:type=Threading");
  98. q7.addAttr("DaemonThreadCount");
  99. q7.addAttr("PeakThreadCount");
  100. q7.addAttr("ThreadCount");
  101. q7.addAttr("CurrentThreadCpuTime");
  102. q7.addAttr("CurrentThreadUserTime");
  103. q7.addAttr("TotalStartedThreadCount");
  104. q7.addOutputWriter(gw);
  105. server.addQuery(q7);
  106. Query q8 = new Query();
  107. q8.setObj("java.lang:name=*,type=GarbageCollector");
  108. q8.addKey("committed");
  109. q8.addKey("init");
  110. q8.addKey("max");
  111. q8.addKey("used");
  112. q8.addKey("duration");
  113. q8.addKey("CollectionCount");
  114. q8.addKey("CollectionTime");
  115. q8.addOutputWriter(gw);
  116. server.addQuery(q8);
  117. GraphiteWriter gw2 = new GraphiteWriter();
  118. gw2.addSetting(BaseOutputWriter.HOST, GW_HOST);
  119. gw2.addSetting(BaseOutputWriter.PORT, 2003);
  120. gw2.addTypeName("name");
  121. gw2.addSetting(BaseOutputWriter.DEBUG, true);
  122. Query q9 = new Query();
  123. q9.setObj("java.lang:type=MemoryPool,name=*");
  124. q9.addOutputWriter(gw2);
  125. server.addQuery(q9);
  126. JmxProcess process = new JmxProcess(server);
  127. JmxUtils.prettyPrintJson(process);
  128. JmxTransformer transformer = new JmxTransformer();
  129. transformer.executeStandalone(process);
  130. // for (int i = 0; i < 160; i++) {
  131. // JmxUtils.processServer(server);
  132. // Thread.sleep(1000);
  133. // }
  134. }
  135. }