Flow Monitoring using MQTT in IBM App Connect Enterprise (ACE)

If you are using an integration server without an associated MQ queue manager, you can still achieve business process monitoring feature using MQTT (IIB’s built-in MQTT server or an external MQTT server). ACE event messages can be subscribed for categories such as:

  • Message flow performance

  • Resource performance

  • Monitoring

This blog will cover how to achieve flow monitoring using MQTT.

Deploy an Application to an Integration Server:

Configure Monitoring Events:

Also, for testing purpose, we need an MQTT Server. Here we can use the MQ Telemetry feature provided by IBM MQ. We can run the default configuration wizard for any MQ Queue Manager to start the MQTT service. To specify this MQTT server in our integration Server, we need to create a policy project and policy that points to this MQTT server as shown here:

Start an Integration Server by the following command and then deploy the above application & policy project:

IntegrationServer --name ACEServ1 --work-dir C:\ACE\ACEServ1

Edit server.conf.yaml file located in Integration Server’s directory:

Enable Business Events through MQTT and Message Flow Monitoring in server.conf.yaml of the Integration server, also specify the MQTT policy as shown in the screenshot:

Now Restart the Integration Server:

IntegrationServer --name ACEServ1 --work-dir C:\ACE\ACEServ1

Subscribe to the Topic using any MQTT Client:

IBM/IntegrationBus/integration_server/Monitoring/ACEServ1/IIB9App1/CopyQueue

Or

IBM/IntegrationBus/integration_server/Monitoring/# (using wildcard)

Sample Flow Monitoring Event Published to MQTTServer:

<mon:event xmlns:mon="http://www.ibm.com/xmlns/monitoring/event/v2">
	<mon:eventPointData>
		<mon:eventData mon:productVersion="11001" mon:profileVersion="11" mon:eventSourceAddress="MQ Input.transaction.Start">
			<mon:eventIdentity mon:eventName="MQ Input.TransactionStart"/>
			<mon:eventSequence mon:creationTime="2018-12-20T05:25:10.496140Z" mon:counter="1"/>
			<mon:eventCorrelation mon:localTransactionId="8398aaae-bed0-43eb-a099-efe99e153886-3" mon:parentTransactionId="" mon:globalTransactionId=""/>
		</mon:eventData>
		<mon:messageFlowData>
			<mon:integrationServer mon:name="ACEServ1" mon:hostName="RC952"/>
			<mon:application mon:name="IIB9App1"/>
			<mon:messageFlow mon:uniqueFlowName="ACEServ1.IIB9App1.CopyQueue" mon:name="CopyQueue" mon:threadId="26364"/>
			<mon:node mon:nodeLabel="MQ Input" mon:nodeType="ComIbmMQInputNode" mon:detail="input"/>
		</mon:messageFlowData>
	</mon:eventPointData>
</mon:event>

How to Debug ACE Flows:

Here is how you can debug ACE toolkit apps, enable debug port jvmDebugPort in server.conf.yaml and then give the same port in Debug > Debug Configurations as:

2 Comments

  1. Sandeep says:

    Am following same but it’s not working

  2. Partha Sarathi Baidya says:

    I used the same but does not work, may be a local Queue manager associated with a Integration server is required

Leave a Reply