JMX provides a standard mechanism approach to monitor and manage applications. By default, GLU.Engines will expose management endpoints as JMX MBeans under the “org.springframework.boot” domain. However, If your application contains more than one Spring ApplicationContext, you may encounter naming conflicts . To solve this, you can set the “endpoints.jmx.unique-names” in the GLU “Application Settings” property to ‘true’ so that MBean names are always unique.
Additionally, GLU.Engines provide various Actuator endpoints for monitoring and interacting with your application:
- GET /actuator: Retrieves general information about the application.
- GET /actuator/info: Retrieves custom application information.
- GET /actuator/env/: Retrieves environment properties.
- GET /actuator/jolokia/read/org.apache.camel:context=,type=routes,name=”api.“: Accesses Jolokia for reading JMX beans.
- GET /actuator/engineinfo: Retrieves engine information.
- POST /actuator/loggers/global.glu: Sets the logging level for the “global.glu” package.
- POST /actuator/loggers/org.apache.camel: Sets the logging level for the “org.apache.camel” package.
If you don’t want to expose endpoints over JMX you can set the “endpoints.jmx.enabled” property to ‘false’.
Jolokia serves as a JMX-HTTP bridge, offering an alternative method for accessing JMX beans. With Spring Boot you can use your “application.properties“, simply prefix the parameter with “jolokia.config.debug” property to ‘true’. For additional detail on JMX monitoring see this resource.
Actuator endpoints allow you to monitor and interact with your GLU application. GLU.Engines includes a number of built-in endpoints and you can also add your own. For example, the health endpoint provides basic application health information on your Application. Click here or additional detail.
Using JMX Metrics
If you are using the JMX metrics, they are accessed via the server port, offering insights into the GLU.Engine system’s operations and contextual details on running processes. It is also possible to use these to change settings in the GLU.Engine.
Jolokia is an open-source project that provides a JMX-HTTP bridge, allowing JMX-style management and monitoring to be performed over HTTP. It enables remote access to JMX MBeans (Java Management Extensions managed beans) without necessitating a JMX connector.
Jolokia allows JMX-based monitoring and management tools to access MBeans through a REST-style HTTP API, instead of the traditional JMX connector. This approach enhances security, lightweight, and flexible way of accessing JMX information, as well as making it easier to integrate with modern DevOps tools and practices.
In essence, Jolokia streamlines the integration of JMX-based monitoring and management into modern DevOps environments by facilitating remote access to JMX MBeans over HTTP.
In short, Jolokia provides a way to access JMX MBeans remotely over HTTP, making it easier to integrate JMX-based monitoring and management into modern DevOps environments.

The server port needs to be provided in the call. If multiple GLU.Engines are running on the server, then each GLU.Engine must have a unique server port.
See Jolokai for the API requests provided through the Jolokia Client and the JMX hooks which runs along side the GLU JVM. All of these will be started as part of the GLU.Engine start process.
The following sections describe some of the basic JMX metrics which might be utilised.
Integration Transaction View
The Jolokia API can be refined to remove the information which is not used to show just the API information for the connectors which are visible in the GLU.Ware Integrations. The basic Jolokia API will show all the route information including route 1-4; however this is not relevant to most integrations.
To refine the Jolokia API and focus solely on the relevant API information for the connectors visible in GLU.Ware Integrations, you can use the following query:
http://IP:SERVERPORT/actuator/jolokia/read/org.apache.camel:context=,type=routes,name=”api.” |
Simply replace “IP” with the IP address of the GLU.Engine server and “SERVERPORT” with the server port for the GLU.Engine.
This query will filter out unnecessary route information and only display the APIs associated with the integrations, providing a more concise view for monitoring and management purposes.
Integration Transaction Metrics
For each Transaction configured into a GLU.Engine the following metrics are available, all times are in milliseconds.
Field | Description | Example Value |
---|---|---|
ExchangesCompleted | This is all the transactions which have passed through the integration which have deemed to be successful (i.e. transaction has not received a Client or Server Error) | 30 |
ExchangesFailed | This is the count of all the transactions which were failed and not handled, example of these are where maximum number of retries has been reached and the transaction fails. | 2 |
MaxProcessTime | This is the transactions time for the transaction which took the maximise amount of time to process, (This is important for setting the time out value for the connections.) | 72 |
MeanProcessTime | This is the average time over the period the GLU.Engine has been running for all transactions. | 55 |
MinProcessTime | This is the fastest time for the transaction which took the maximise amount of time to process. | 31 |
Last processing time | This is the time for the last transaction. | 34 |
Failures handled | This is the number of Failures which have been handled by the integration, if for instance a DB call failed due to “Incorrect arguments to sleep.”, and the error was trapped and passed back in the error response, this would be incremented. | 12 |
Redelivery | This counts the number of times a transaction has been sent as a retry. If the receiving end point is busy and the transaction times out it can be set up to retry. More on retries can be read at Connector Retry function. | 13 |
LastError | This is the last error which the Transaction received. GLU is still to recreate this metric. | TO BE CONFIRMED |
InFlight | This is the count of the number of transactions which the GLU.Engine is currently processing, this can be used to confirm the maximum transactions which are processed which is controlled by Throttle Type 2 | 12 |
JMX APIs
JMX APIs are a set of Java interfaces and classes used for building and accessing management and monitoring applications for Java applications.
JMX APIs allow developers to define and publish management and monitoring information about their applications, such as performance metrics, configuration settings, and status information. They also provide a standard way for management and monitoring applications to access this information.
JMX APIs are commonly used in enterprise applications for monitoring and managing application performance, detecting and diagnosing problems, and for configuring and tuning the application. They can also be used to monitor the performance and status of other system components, such as databases, web servers, and application servers.
API Health
API Health provides a means to ascertain the operational status of a GLU.Engine instance. When invoked, this API returns a JSON payload indicating the service status. If the GLU.Engine is running, the response will contain { “status”: “UP” }. Conversely, if the GLU.Engine is not operational, an error will be returned.
To utilize this API, you must include the server port in the call, which corresponds to the server port configured for the GLU.Engine. It’s important to note that each GLU.Engine running on the server must have a unique server port. This specification applies exclusively to Integration Built Engines and not Menu Built Engines.
- Protocol: REST
- Method: POST
- Context Name: /actuator/health
- Content Type: JSON
- Request Parameters: NONE
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- POST http://IP:SERVERPORT/actuator/health
Sample Success Response:
- { “status”: “UP” }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
This API serves as a valuable tool for monitoring the operational state of GLU.Engine instances and ensuring continuous service availability.
API Changelogginglevel
The “Changelogginglevel “ API allows for dynamic adjustment of the logging level for a running GLU.Engine instance. If the GLU.Engine is not operational, an error will be returned.
To utilise this API, specify the server port in the call, which corresponds to the server port configured for the GLU.Engine. Each GLU.Engine running on the server must have a unique server port. This functionality applies exclusively to Integration Built Engines and not Menu Built Engines.
- Protocol: REST
- Method: POST / GET
- POST to set the logging level
- GET to retrieve the level set
- Context Name: /actuator/loggers/global.glu
- Content Type: JSON
Request Parameters: body
Parameter | Type | Description | Example Value |
configuredLevel | Text | configuredLevel [DEBUG] | [ WARN] | [ERROR] | [TRACE] | [INFO]Description | OBS : configuredLevel |
Sample Request:
- http://IP:SERVERPORT/actuator/loggers/global.glu
Sample Success Response:
- 204 No Content response
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
This API provides a convenient method for adjusting logging levels on-the-fly, facilitating effective monitoring and troubleshooting of GLU.Engine instances.
API Changelogginglevel Apache Camel
The “Changelogginglevel” API for Apache Camel enables the modification of logging levels specifically for the extra Apache Camel logs running within the GLU.Engine. If the GLU.Engine is not operational, an error will be returned.
To utilise this API, include the server port in the call, which corresponds to the server port configured for the GLU.Engine. Each GLU.Engine running on the server must have a unique server port. This functionality applies exclusively to Integration Built Engines and not Menu Built Engines.
- Protocol: REST
- Method: POST / GET
- POST: Sets the logging level
- GET: Retrieves the set level
- Context Name: /actuator/loggers/org.apache.camel
- Content Type: JSON
Request Parameters: body
Parameter | Type | Description | Example Value |
configuredLevel | Text | configuredLevel [DEBUG] | [ WARN] | [ERROR] | [TRACE] | [INFO]Description | OBS : configuredLevel |
Sample Request:
- http://IP:SERVERPORT/actuator/loggers/org.apache.camel
Sample Success Response:
- { }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
This API offers a straightforward approach to adjusting logging levels specifically for Apache Camel logs within the GLU.Engine, enhancing the monitoring and management capabilities of the application.
API actuator
Description: This API can be used to return a list of the metrics which can be extracted.
- Protocol: REST
- Method: GET
- Context Name: /actuator/
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request :
- http://IP:SERVERPORT/actuator
Response Parameters:
Parameter | Type | Description | Example Value |
Sample Success Response
{ "_links": { "self": { "href": "http://3.232.188.148:9224/actuator", "templated": false }, "camelroutecontroller": { "href": "http://3.232.188.148:9224/actuator/camelroutecontroller", "templated": false }, "camelroutes": { "href": "http://3.232.188.148:9224/actuator/camelroutes", "templated": false }, "camelroutes-id-action": { "href": "http://3.232.188.148:9224/actuator/camelroutes/{id}/{action}", "templated": true }, "camelroutes-id": { "href": "http://3.232.188.148:9224/actuator/camelroutes/{id}", "templated": true }, "auditevents": { "href": "http://3.232.188.148:9224/actuator/auditevents", "templated": false }, "beans": { "href": "http://3.232.188.148:9224/actuator/beans", "templated": false }, "caches-cache": { "href": "http://3.232.188.148:9224/actuator/caches/{cache}", "templated": true }, "caches": { "href": "http://3.232.188.148:9224/actuator/caches", "templated": false }, "health": { "href": "http://3.232.188.148:9224/actuator/health", "templated": false }, "health-component": { "href": "http://3.232.188.148:9224/actuator/health/{component}", "templated": true }, "health-component-instance": { "href": "http://3.232.188.148:9224/actuator/health/{component}/{instance}", "templated": true }, "conditions": { "href": "http://3.232.188.148:9224/actuator/conditions", "templated": false }, "shutdown": { "href": "http://3.232.188.148:9224/actuator/shutdown", "templated": false }, "configprops": { "href": "http://3.232.188.148:9224/actuator/configprops", "templated": false }, "env-toMatch": { "href": "http://3.232.188.148:9224/actuator/env/{toMatch}", "templated": true }, "env": { "href": "http://3.232.188.148:9224/actuator/env", "templated": false }, "info": { "href": "http://3.232.188.148:9224/actuator/info", "templated": false }, "logfile": { "href": "http://3.232.188.148:9224/actuator/logfile", "templated": false }, "loggers": { "href": "http://3.232.188.148:9224/actuator/loggers", "templated": false }, "loggers-name": { "href": "http://3.232.188.148:9224/actuator/loggers/{name}", "templated": true }, "heapdump": { "href": "http://3.232.188.148:9224/actuator/heapdump", "templated": false }, "threaddump": { "href": "http://3.232.188.148:9224/actuator/threaddump", "templated": false }, "prometheus": { "href": "http://3.232.188.148:9224/actuator/prometheus", "templated": false }, "metrics": { "href": "http://3.232.188.148:9224/actuator/metrics", "templated": false }, "metrics-requiredMetricName": { "href": "http://3.232.188.148:9224/actuator/metrics/{requiredMetricName}", "templated": true }, "scheduledtasks": { "href": "http://3.232.188.148:9224/actuator/scheduledtasks", "templated": false }, "httptrace": { "href": "http://3.232.188.148:9224/actuator/httptrace", "templated": false }, "mappings": { "href": "http://3.232.188.148:9224/actuator/mappings", "templated": false }, "jolokia": { "href": "http://3.232.188.148:9224/actuator/jolokia", "templated": false } } }
Sample Error Response
{ "timestamp": "2021-03-09T10:20:05.050+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/actuator/ll" }
API actuator/info
- Description: This API can be used see the API up time, status and details such as version of camel.
- Protocol: REST
- Method: GET
- Context Name: /actuator/health
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT/actuator/info
Sample Success Response:
{ "camel.name": "camel-1", "camel.version": "2.25.0", "camel.uptime": "1 hour 40 minutes", "camel.uptimeMillis": 6003034, "camel.status": "Started" }
Sample Error Response:
{ "timestamp": "2021-03-09T11:19:53.549+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/actuator/info/camel.status" }
API actuator/metrics/process.uptime
- Description: This API can be used see the uptime of the java machine supporting the GLU.Engine.
- Protocol: REST
- Method: GET
- Context Name: /actuator/health
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT/actuator/metrics/process.uptime
Response Parameters:
Parameter | Type | Description | Example Value |
See below |
Sample Success Response:
{ "name": "process.uptime", "description": "The uptime of the Java virtual machine", "baseUnit": "seconds", "measurements": [ { "statistic": "VALUE", "value": 1329.218 } ], "availableTags": [] }
Sample Error Response:
{ "timestamp": "2021-03-09T11:19:53.549+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/actuator/info/camel.status" }
API actuator/metrics/process.start.time
- Description: This API can be used to provide the start time of the supporting process.
- Protocol: REST
- Method: GET
- Context Name: /actuator/health
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request: http://IP:SERVERPORT/actuator/env/PID
Response Parameters:
Parameter | Type | Description | Example Value |
See below |
Sample Success Response:
{ "property": { "source": "systemProperties", "value": "1" }, "activeProfiles": [], "propertySources": [ { "name": "server.ports" }, { "name": "commandLineArgs" }, { "name": "servletConfigInitParams" }, { "name": "servletContextInitParams" }, { "name": "systemProperties", "property": { "value": "1" } }, { "name": "systemEnvironment" }, { "name": "random" }, { "name": "applicationConfig: [classpath:/application.yml]" }, { "name": "Management Server" } ] }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API Actuator/env/pid
- Description: This API can be used to return the process id, port details and other details about the Java engine running the GLU.Engine.
- Protocol: REST
- Method: GET
- Context Name: /actuator/env/pid
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request: http://IP:SERVERPORT/actuator/env/pid
Response Parameters:
Parameter | Type | Description | Example Value |
See Below |
Sample Success Response:
{ "property": { "source": "systemProperties", "value": "1" }, "activeProfiles": [], "propertySources": [ { "name": "server.ports" }, { "name": "commandLineArgs" }, { "name": "servletConfigInitParams" }, { "name": "servletContextInitParams" }, { "name": "systemProperties", "property": { "value": "1" } }, { "name": "systemEnvironment" }, { "name": "random" }, { "name": "applicationConfig: [classpath:/application.yml]" }, { "name": "Management Server" } ] }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/env
- Description: This API can be used Metrics about the env where GE is running.
- Protocol: REST
- Method: GET
- Context Name: /actuator/env
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT:9224/actuator/env/
Response Parameters:
Parameter | Type | Description | Example Value |
See Below |
Sample Success Response:
{ "activeProfiles": [], "propertySources": [ { "name": "server.ports", "properties": { "local.server.port": { "value": 9195 } } }, { "name": "commandLineArgs", "properties": { "logging.config": { "value": "./engine/config/loggingSetting.xml" } } }, { "name": "servletContextInitParams", "properties": {} }, { "name": "systemProperties", "properties": { "java.runtime.name": { "value": "OpenJDK Runtime Environment" }, "java.protocol.handler.pkgs": { "value": "org.springframework.boot.loader" }, "sun.boot.library.path": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64" }, "java.vm.version": { "value": "25.111-b14" }, "java.vm.vendor": { "value": "Oracle Corporation" }, "java.vendor.url": { "value": "http://java.oracle.com/" }, "path.separator": { "value": ":" }, "java.vm.name": { "value": "OpenJDK 64-Bit Server VM" }, "file.encoding.pkg": { "value": "sun.io" }, "user.country": { "value": "US" }, "sun.java.launcher": { "value": "SUN_STANDARD" }, "sun.os.patch.level": { "value": "unknown" }, "PID": { "value": "1" }, "java.vm.specification.name": { "value": "Java Virtual Machine Specification" }, "user.dir": { "value": "/" }, "java.runtime.version": { "value": "1.8.0_111-internal-alpine-r0-b14" }, "java.awt.graphicsenv": { "value": "sun.awt.X11GraphicsEnvironment" }, "java.endorsed.dirs": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/endorsed" }, "os.arch": { "value": "amd64" }, "java.io.tmpdir": { "value": "/tmp" }, "line.separator": { "value": "\n" }, "java.vm.specification.vendor": { "value": "Oracle Corporation" }, "os.name": { "value": "Linux" }, "sun.jnu.encoding": { "value": "UTF-8" }, "jetty.git.hash": { "value": "afcf563148970e98786327af5e07c261fda175d3" }, "spring.beaninfo.ignore": { "value": "true" }, "java.library.path": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib" }, "java.specification.name": { "value": "Java Platform API Specification" }, "java.class.version": { "value": "52.0" }, "sun.management.compiler": { "value": "HotSpot 64-Bit Tiered Compilers" }, "os.version": { "value": "5.4.0-1038-aws" }, "LOG_FILE": { "value": "gluware" }, "user.home": { "value": "/root" }, "catalina.useNaming": { "value": "false" }, "user.timezone": { "value": "GMT" }, "java.awt.printerjob": { "value": "sun.print.PSPrinterJob" }, "file.encoding": { "value": "UTF-8" }, "java.specification.version": { "value": "1.8" }, "catalina.home": { "value": "/tmp/tomcat.5232966415223648616.9195" }, "java.class.path": { "value": "/light-1.0-SNAPSHOT.jar" }, "user.name": { "value": "root" }, "java.vm.specification.version": { "value": "1.8" }, "sun.java.command": { "value": "******" }, "java.home": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre" }, "sun.arch.data.model": { "value": "64" }, "user.language": { "value": "en" }, "java.specification.vendor": { "value": "Oracle Corporation" }, "awt.toolkit": { "value": "sun.awt.X11.XToolkit" }, "java.vm.info": { "value": "mixed mode" }, "java.version": { "value": "1.8.0_111-internal" }, "java.ext.dirs": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/ext:/usr/java/packages/lib/ext" }, "sun.boot.class.path": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/resources.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/rt.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8-openjdk/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8-openjdk/jre/classes" }, "java.awt.headless": { "value": "true" }, "java.vendor": { "value": "Oracle Corporation" }, "net.sf.ehcache.skipUpdateCheck": { "value": "true" }, "catalina.base": { "value": "/tmp/tomcat.5232966415223648616.9195" }, "FILE_LOG_PATTERN": { "value": "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n" }, "com.zaxxer.hikari.pool_number": { "value": "1" }, "java.security.egd": { "value": "file:/dev/./urandom" }, "file.separator": { "value": "/" }, "java.vendor.url.bug": { "value": "http://bugreport.sun.com/bugreport/" }, "sun.io.unicode.encoding": { "value": "UnicodeLittle" }, "sun.cpu.endian": { "value": "little" }, "LOG_PATH": { "value": "log" }, "sun.cpu.isalist": { "value": "" } } }, { "name": "systemEnvironment", "properties": { "PATH": { "value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin", "origin": "System Environment Property \"PATH\"" }, "HOSTNAME": { "value": "light", "origin": "System Environment Property \"HOSTNAME\"" }, "JAVA_ALPINE_VERSION": { "value": "8.111.14-r0", "origin": "System Environment Property \"JAVA_ALPINE_VERSION\"" }, "LD_LIBRARY_PATH": { "value": "/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64", "origin": "System Environment Property \"LD_LIBRARY_PATH\"" }, "NLSPATH": { "value": "/usr/dt/lib/nls/msg/%L/%N.cat", "origin": "System Environment Property \"NLSPATH\"" }, "JAVA_HOME": { "value": "/usr/lib/jvm/java-1.8-openjdk", "origin": "System Environment Property \"JAVA_HOME\"" }, "XFILESEARCHPATH": { "value": "/usr/dt/app-defaults/%L/Dt", "origin": "System Environment Property \"XFILESEARCHPATH\"" }, "JAVA_VERSION": { "value": "8u111", "origin": "System Environment Property \"JAVA_VERSION\"" }, "LANG": { "value": "C.UTF-8", "origin": "System Environment Property \"LANG\"" }, "HOME": { "value": "/root", "origin": "System Environment Property \"HOME\"" } } }, { "name": "applicationConfig: [classpath:/application.yml]", "properties": { "logging.config": { "value": "engine/config/loggingSetting.xml", "origin": "class path resource [application.yml]:1:17" }, "docker.url": { "value": "docker.io", "origin": "class path resource [application.yml]:3:13" }, "logging.fileNamePattern": { "value": "yyyy-MM-dd HH:mm:ss", "origin": "class path resource [application.yml]:4:26" }, "jolokia.config.debug": { "value": true, "origin": "class path resource [application.yml]:5:23" }, "management.endpoint.shutdown.enabled": { "value": true, "origin": "class path resource [application.yml]:6:39" }, "spring.jmx.enabled": { "value": true, "origin": "class path resource [application.yml]:7:21" }, "docker.username": { "value": "gluglobal", "origin": "class path resource [application.yml]:8:18" }, "logging.path": { "value": "log", "origin": "class path resource [application.yml]:9:15" }, "management.endpoints.jmx.domain": { "value": "glu-ware", "origin": "class path resource [application.yml]:10:34" }, "docker.skip": { "value": false, "origin": "class path resource [application.yml]:11:14" }, "server.port": { "value": 9195, "origin": "class path resource [application.yml]:12:14" }, "docker.password": { "value": "******", "origin": "class path resource [application.yml]:13:18" }, "docker.image.repository": { "value": "gluglobal", "origin": "class path resource [application.yml]:14:26" }, "logging.level.root": { "value": "INFO", "origin": "class path resource [application.yml]:15:21" }, "logging.file": { "value": "gluware", "origin": "class path resource [application.yml]:16:15" }, "logging.pattern.file": { "value": "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n", "origin": "class path resource [application.yml]:17:23" }, "logging.level.org.springframework": { "value": "WARN", "origin": "class path resource [application.yml]:18:36" }, "logging.level.org.hibernate": { "value": "ERROR", "origin": "class path resource [application.yml]:19:30" }, "logging.level.o.e": { "value": "WARN", "origin": "class path resource [application.yml]:20:20" }, "logging.level.o.e.jetty.server": { "value": "WARN", "origin": "class path resource [application.yml]:21:33" }, "logging.level.org.apache.camel": { "value": "DEBUG", "origin": "class path resource [application.yml]:22:33" }, "logging.level.global.glu": { "value": "DEBUG", "origin": "class path resource [application.yml]:23:27" }, "jetty.port60678": { "value": 8082, "origin": "class path resource [application.yml]:25:18" }, "jetty.host60678": { "value": "0.0.0.0", "origin": "class path resource [application.yml]:26:18" }, "docker.serviceName": { "value": "light", "origin": "class path resource [application.yml]:27:22" }, "spring.mvc.view.prefix": { "value": "/jsp/", "origin": "class path resource [application.yml]:30:25" }, "management.endpoint.metrics.enabled": { "value": true, "origin": "class path resource [application.yml]:33:38" }, "management.endpoints.web.exposure.include": { "value": "*", "origin": "class path resource [application.yml]:34:44" }, "management.endpoint.prometheus.enabled": { "value": true, "origin": "class path resource [application.yml]:35:41" }, "management.metrics.export.prometheus.enabled": { "value": true, "origin": "class path resource [application.yml]:36:47" } } } ] }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/metrics
- Description: This API can be used to give Metric about the JVM and JDBC, tomcat…
- Protocol: REST
- Method: GET
- Context Name: /actuator/metrics
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT:9224/actuator/metrics/
Response Parameters:
Parameter | Type | Description | Example Value |
See below |
Sample Success Response:
{ "names": [ "jvm.memory.max", "jvm.threads.states", "process.files.max", "jvm.gc.memory.promoted", "CamelRoutePolicy", "system.load.average.1m", "http.server.requests", "jvm.memory.used", "jvm.gc.max.data.size", "jdbc.connections.max", "jdbc.connections.min", "jvm.gc.pause", "jvm.memory.committed", "system.cpu.count", "logback.events", "tomcat.global.sent", "jvm.buffer.memory.used", "tomcat.sessions.created", "jvm.threads.daemon", "system.cpu.usage", "jvm.gc.memory.allocated", "tomcat.global.request.max", "hikaricp.connections.idle", "hikaricp.connections.pending", "tomcat.global.request", "tomcat.sessions.expired", "hikaricp.connections", "jvm.threads.live", "jvm.threads.peak", "tomcat.global.received", "hikaricp.connections.active", "hikaricp.connections.creation", "process.uptime", "tomcat.sessions.rejected", "process.cpu.usage", "tomcat.threads.config.max", "jvm.classes.loaded", "hikaricp.connections.max", "hikaricp.connections.min", "jvm.classes.unloaded", "tomcat.global.error", "tomcat.sessions.active.current", "tomcat.sessions.alive.max", "jvm.gc.live.data.size", "hikaricp.connections.usage", "tomcat.threads.current", "hikaricp.connections.timeout", "process.files.open", "jvm.buffer.count", "jvm.buffer.total.capacity", "tomcat.sessions.active.max", "hikaricp.connections.acquire", "tomcat.threads.busy", "process.start.time" ] }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/jolokia/read
- Description: This API can be used to give metrics for specific endpoints.
- Protocol: REST
- Method: GET
- Context Name: /actuator/read
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT/actuator/jolokia/read/org.apache.camel:context=*,type=routes,name=”api.GetCustomerTrx”
Response Parameters:
Parameter | Type | Description | Example Value |
See below |
Sample Success Response:
{ "request": { "mbean": "org.apache.camel:context=*,name=\"api.GetCustomerTrx\",type=routes", "type": "read" }, "stacktrace": "javax.management.InstanceNotFoundException: No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes\n\tat org.jolokia.handler.ReadHandler.searchMBeans(ReadHandler.java:160)\n\tat org.jolokia.handler.ReadHandler.fetchAttributesForMBeanPattern(ReadHandler.java:126)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:116)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:37)\n\tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:161)\n\tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:156)\n\tat org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)\n\tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)\n\tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)\n\tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)\n\tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:86)\n\tat org.jolokia.http.AgentServlet$4.handleRequest(AgentServlet.java:470)\n\tat org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:350)\n\tat org.jolokia.http.AgentServlet.handle(AgentServlet.java:321)\n\tat org.jolokia.http.AgentServlet.doGet(AgentServlet.java:277)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)\n\tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:745)\n", "error_type": "javax.management.InstanceNotFoundException", "error": "javax.management.InstanceNotFoundException : No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes", "status": 404 }
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/jolokia/exec getNumberSessions
- Description: This API can be used to give metrics for specific number of Session.
- Protocol: REST
- Method: GET
- Context Name: /actuator/jolokia/exec
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT/actuator/jolokia/exec/global.glu.jmx:name=USSDSession/getNumberSessions
Response Parameters:
Parameter | Type | Description | Example Value |
See Below |
Sample Success Response:
{"request":{"mbean":"org.apache.camel:context=*,name=\"api.GetCustomerTrx\",type=routes","type":"read"},"stacktrace":"javax.management.InstanceNotFoundException: No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes\n\tat org.jolokia.handler.ReadHandler.searchMBeans(ReadHandler.java:160)\n\tat .... java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:745)\n","error_type":"javax.management.InstanceNotFoundException","error":"javax.management.InstanceNotFoundException : No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes","status":404}
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/jolokia/exec getNumberConcurrentSessions
- Description: This API can be used to give metrics for specific Concurrent tSessions.
- Protocol: REST
- Method: GET
- Context Name: /actuator/jolokia/exec
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://Template:IP:9224/actuator/jolokia/exec/global.glu.jmx:name=USSDSession/getNumberConcurrentSessions
Response Parameters:
Parameter | Type | Description | Example Value |
Sample Success Response:
{"request":{"mbean":"org.apache.camel:context=*,name=\"api.GetCustomerTrx\",type=routes","type":"read"},"stacktrace":"javax.management.InstanceNotFoundException: No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes\n\tat ......... org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:745)\n","error_type":"javax.management.InstanceNotFoundException","error":"javax.management.InstanceNotFoundException : No MBean with pattern org.apache.camel:context=*,type=routes,name=\"api.GetCustomerTrx\" found for reading attributes","status":404}
Sample Error Response: (7) Failed to connect to localhost port 9195: Connection refused
API actuator/jolokia/exec getNumberDroppedSessions
- Description: This API can be used to give metrics for specific Dropped Sessions.
- Protocol: REST
- Method: GET
- Context Name: /actuator/jolokia/exec
- Content Type: JSON
Request Parameters:
Parameter | Type | Description | Example Value |
NONE | Text | NONE | OBS : NONE |
Sample Request:
- http://IP:SERVERPORT/actuator/jolokia/read/org.apache.camel:context=*,type=routes,name=”api.GetCustomerTrx”
Sample Success Response:
- http://Template:IP:9224/actuator/jolokia/exec/global.glu.jmx:name=USSDSession/getNumberDroppedSessions
Sample Error Response:
- (7) Failed to connect to localhost port 9195: Connection refused
API actuator/engineinfo
- Description: This API can be used to collect information about the GLU.Engine.
- Protocol: REST
- Method: GET
- Context Name: /actuator/jolokia/exec
- Content Type: JSON
- http://IP:PORT/actuator/engineinfo
Sample Success Response
{ "client": "GLU Test CODE : [10482]", "glu_engine": "sticky_connectors", "glu_engine_version": "1.1-SNAPSHOT", "integration_spec_name": "Sticky Connectors 1.9.13", "menu_spec_name": "There is NO Menu Builder", "build_created_date": "Wed, 28 Jul 2021 19:24:30 +0200", "environment": "docker", "library_version": "1.9.17", "build_ref": "2021072819243030", "original_logging_level": null, "actual_logging_level": "DEBUG" }
The build_ref is same value as shown in Download Build page in the Build Manager in console.

Sample Error Response:
{ "timestamp": "2021-07-29T13:07:08.058+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/actuator/engineinfos" }
API actuator/shutdown
- Description: This will shut down the GLU process. Use with caution. It is possible to disable this API in the GLU.Engine Settings, see GLU.Engine Settings.
- Protocol: REST
- Method: POST
- Context Name: /actuator/shutdown
- Content Type: JSON
Sample Request:
- http://IP:PORT/actuator/shutdown
Response Parameters:
- {“message”:”Shutting down, bye…”}