Created
May 8, 2019 19:47
-
-
Save welshstew/edb71ce13e94218bd03ddade63ff537f to your computer and use it in GitHub Desktop.
Groovy to Get Jolokia Metrics over HTTP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2019-05-08 08:39:20,801 | INFO | Connector ws started | org.apache.activemq.broker.TransportConnector | main | |
2019-05-08 08:39:20,803 | INFO | Apache ActiveMQ 5.14.5 (localhost, ID:user-somehost-33725-1557301160364-0:1) started | | |
2019-05-08 08:39:21,288 | INFO | ActiveMQ WebConsole available at http://0.0.0.0:8161/ | org.apache.activemq.web.WebConsoleStarter | main | |
2019-05-08 08:39:21,289 | INFO | ActiveMQ Jolokia REST API available at http://0.0.0.0:8161/api/jolokia/ | org.apache.activemq.web.WebConsoleStarter | main | |
2019-05-08 08:39:21,335 | INFO | Initializing Spring FrameworkServlet 'dispatcher' | /admin | main | |
2019-05-08 08:39:21,525 | INFO | No Spring WebApplicationInitializer types detected on classpath | /api | main | |
2019-05-08 08:39:21,587 | INFO | jolokia-agent: Using policy access restrictor classpath:/jolokia-access.xml | /api | main | |
2019-05-08 08:53:46,777 | INFO | Connector vm://localhost started | org.apache.activemq.broker.TransportConnector | qtp593103894-60 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"request": { | |
"mbean": "org.apache.activemq:brokerName=localhost,type=Broker", | |
"type": "read" | |
}, | |
"value": { | |
"StatisticsEnabled": true, | |
"TemporaryQueueSubscribers": [], | |
"TotalConnectionsCount": 2, | |
"TotalMessageCount": 3, | |
"TempPercentUsage": 0, | |
"MemoryPercentUsage": 0, | |
"TransportConnectors": { | |
"openwire": "tcp://user-somehost:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600", | |
"amqp": "amqp://user-somehost:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600", | |
"mqtt": "mqtt://user-somehost:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600", | |
"stomp": "stomp://user-somehost:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600", | |
"ws": "ws://user-somehost:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600" | |
}, | |
"InactiveDurableTopicSubscribers": [], | |
"StoreLimit": 107374182400, | |
"TotalProducerCount": 0, | |
"TopicProducers": [], | |
"CurrentConnectionsCount": 2, | |
"QueueProducers": [], | |
"JMSJobScheduler": null, | |
"VMURL": "vm://localhost", | |
"UptimeMillis": 1696116, | |
"TemporaryTopicProducers": [], | |
"TemporaryQueueProducers": [], | |
"TotalDequeueCount": 0, | |
"Topics": [ | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.Advisory.MasterBroker,destinationType=Topic,type=Broker" | |
}, | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.Advisory.Connection,destinationType=Topic,type=Broker" | |
}, | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.Advisory.Consumer.Queue.incomingOrdersSpringBoot,destinationType=Topic,type=Broker" | |
}, | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.Advisory.Consumer.Queue.incomingOrders,destinationType=Topic,type=Broker" | |
} | |
], | |
"DurableTopicSubscribers": [], | |
"JobSchedulerStorePercentUsage": 0, | |
"Uptime": "28 minutes", | |
"QueueSubscribers": [], | |
"BrokerId": "ID:user-somehost-33725-1557301160364-0:1", | |
"AverageMessageSize": 1029, | |
"DataDirectory": "/home/swinches/AppServers/apache-activemq-5.14.5/data", | |
"Persistent": true, | |
"TopicSubscribers": [ | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,clientId=ID_user-somehost-33725-1557301160364-3_2,consumerId=ID_user-somehost-33725-1557301160364-4_2_-1_1,destinationName=ActiveMQ.Advisory.TempQueue_ActiveMQ.Advisory.TempTopic,destinationType=Topic,endpoint=Consumer,type=Broker" | |
}, | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,clientId=ID_user-somehost-33725-1557301160364-3_1,consumerId=ID_user-somehost-33725-1557301160364-4_1_-1_1,destinationName=ActiveMQ.Advisory.TempQueue_ActiveMQ.Advisory.TempTopic,destinationType=Topic,endpoint=Consumer,type=Broker" | |
} | |
], | |
"TemporaryQueues": [], | |
"BrokerVersion": "5.14.5", | |
"BrokerName": "localhost", | |
"MinMessageSize": 1024, | |
"MemoryLimit": 668309914, | |
"Slave": false, | |
"DynamicDestinationProducers": [ | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,clientId=ID_user-somehost-33725-1557301160364-3_2,endpoint=dynamicProducer,producerId=ID_user-somehost-33725-1557301160364-4_2_1_1,type=Broker" | |
} | |
], | |
"TotalEnqueueCount": 10, | |
"TempLimit": 53687091200, | |
"TemporaryTopicSubscribers": [], | |
"TemporaryTopics": [], | |
"JobSchedulerStoreLimit": 0, | |
"Queues": [ | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=incomingOrdersSpringBoot,destinationType=Queue,type=Broker" | |
}, | |
{ | |
"objectName": "org.apache.activemq:brokerName=localhost,destinationName=incomingOrders,destinationType=Queue,type=Broker" | |
} | |
], | |
"TotalConsumerCount": 0, | |
"StorePercentUsage": 0, | |
"MaxMessageSize": 1046 | |
}, | |
"timestamp": 1557302856, | |
"status": 200 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost | jq |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin http://localhost:8161/api/jolokia/list |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=incomingOrders/QueueSize |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin \ | |
--header "Content-Type: application/json" \ | |
--request POST \ | |
--data '{ "type":"read", "mbean":"org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=incomingOrders", "attribute":"QueueSize" | |
}' http://localhost:8161/api/jolokia |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"request":{"mbean":"org.apache.activemq:brokerName=localhost,destinationName=incomingOrders,destinationType=Queue,type=Broker","attribute":"QueueSize","type":"read"},"value":3,"timestamp":1557303537,"status":200} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"request": { | |
"mbean": "org.apache.activemq:brokerName=localhost,destinationName=incomingOrders,destinationType=Queue,type=Broker", | |
"type": "read" | |
}, | |
"value": { | |
"ProducerFlowControl": true, | |
"Options": "", | |
"AlwaysRetroactive": false, | |
"MemoryUsageByteCount": 3128, | |
"AverageBlockedTime": 0, | |
"MemoryPercentUsage": 0, | |
"CursorMemoryUsage": 3128, | |
"Subscriptions": [], | |
"InFlightCount": 0, | |
"CacheEnabled": true, | |
"StoreMessageSize": 0, | |
"ForwardCount": 0, | |
"DLQ": false, | |
"AverageEnqueueTime": 0, | |
"Name": "incomingOrders", | |
"TotalBlockedTime": 0, | |
"MaxAuditDepth": 2048, | |
"BlockedSends": 0, | |
"QueueSize": 3, | |
"MaxPageSize": 200, | |
"PrioritizedMessages": false, | |
"MemoryUsagePortion": 1, | |
"Paused": false, | |
"EnqueueCount": 3, | |
"MessageGroups": {}, | |
"ConsumerCount": 0, | |
"AverageMessageSize": 1042, | |
"CursorFull": false, | |
"ExpiredCount": 0, | |
"MaxProducersToAudit": 1024, | |
"CursorPercentUsage": 0, | |
"MinEnqueueTime": 0, | |
"MinMessageSize": 1040, | |
"MemoryLimit": 668309914, | |
"DispatchCount": 0, | |
"MaxEnqueueTime": 0, | |
"DequeueCount": 0, | |
"BlockedProducerWarningInterval": 30000, | |
"ProducerCount": 0, | |
"MessageGroupType": "cached", | |
"MaxMessageSize": 1046, | |
"UseCache": true, | |
"SlowConsumerStrategy": null | |
}, | |
"timestamp": 1557303482, | |
"status": 200 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=incomingOrders |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl --user admin:admin \ | |
--header "Content-Type: application/json" \ | |
--request POST \ | |
--data '{ "type":"read", "mbean":"org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=incomingOrders" | |
}' http://localhost:8161/api/jolokia |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
queueName: org.apache.activemq:brokerName=localhost,destinationName=incomingOrdersSpringBoot,destinationType=Queue,type=Broker | |
queueName: org.apache.activemq:brokerName=localhost,destinationName=incomingOrders,destinationType=Queue,type=Broker | |
┌───────────┬───────────────┬──────────────────────────┐ | |
│ QueueSize │ ConsumerCount │ Name │ | |
├───────────┼───────────────┼──────────────────────────┤ | |
│ 0 │ 0 │ incomingOrdersSpringBoot │ | |
├───────────┼───────────────┼──────────────────────────┤ | |
│ 3 │ 0 │ incomingOrders │ | |
└───────────┴───────────────┴──────────────────────────┘ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Grab(group='de.vandermeer', module = 'asciitable', version = '0.3.2') | |
import de.vandermeer.asciitable.v2.RenderedTable | |
import de.vandermeer.asciitable.v2.V2_AsciiTable | |
import de.vandermeer.asciitable.v2.render.V2_AsciiTableRenderer | |
import de.vandermeer.asciitable.v2.render.WidthLongestWord | |
import de.vandermeer.asciitable.v2.themes.V2_E_TableThemes | |
import groovy.json.JsonOutput | |
import groovy.json.JsonSlurper | |
String callJolokia(String mBean, def postData){ | |
String basicAuth = "admin:admin".bytes.encodeBase64().toString() | |
URL url = new URL("http://localhost:8161/api/jolokia/read/$mBean") | |
HttpURLConnection httpCon = (HttpURLConnection)url.openConnection() | |
httpCon.setRequestProperty("Authorization", "Basic $basicAuth") | |
if( postData ){ | |
String postDataString = JsonOutput.toJson(postData) | |
httpCon.setRequestMethod("POST") | |
httpCon.setRequestProperty("Content-Type", "application/json") | |
httpCon.setDoOutput(true) | |
httpCon.connect() | |
DataOutputStream wr | |
try{ | |
wr = new DataOutputStream( httpCon.getOutputStream()) | |
wr.write( postDataString.bytes ) | |
}finally { | |
if (wr != null){ | |
wr.close() | |
} | |
} | |
}else{ | |
httpCon.connect() | |
} | |
String json = httpCon.getInputStream().text | |
httpCon.disconnect() | |
return json | |
} | |
//Get Queue Names | |
def slurpedQueueNames = new JsonSlurper().parseText(callJolokia("org.apache.activemq:type=Broker,brokerName=localhost/Queues", null)) | |
slurpedQueueNames.value.each { singleQueue -> | |
println "queueName: $singleQueue.objectName" | |
} | |
//Get QueueSize with a destinationName wildcard:destinationName=* | |
def slurpedQueues = new JsonSlurper() | |
.parseText(callJolokia("", [type:"read", | |
mbean:"org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=*", | |
attribute: ["Name", "QueueSize", "ConsumerCount"]])) | |
generate(slurpedQueues.value) | |
def generate(Map mapOfMaps){ | |
V2_AsciiTable at = new V2_AsciiTable() | |
List columns = new ArrayList<String>(mapOfMaps.entrySet().first().value.keySet()) | |
at.addRule() | |
at.addRow(columns.toArray()) | |
at.addRule() | |
mapOfMaps.each { it -> | |
at.addRow(it.value.values().asList().toArray()) | |
at.addRule() | |
} | |
V2_AsciiTableRenderer rend = new V2_AsciiTableRenderer() | |
rend.setTheme(V2_E_TableThemes.UTF_LIGHT.get()) | |
rend.setWidth(new WidthLongestWord()) | |
RenderedTable rt = rend.render(at) | |
println rt | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment