ACEMON

There are several commercial solutions available in the market for monitoring the messages flowing through IBM App Connect Enterprise. We want to provide you a solution which works for everyone like the developers, business associates or any non-technical persons. The commercial solutions available in the market are not for everyone.

ACEMON is going to close the gap. The solution provided here is under development and testing and so do not use it in Production. We’re going to release two versions 1. Free 2.Commercial. If you see any issues, please create an issue here https://github.com/vaithu/acemon/issues. We’re also available at support@vaithu.com.

ACEMON has two parts. Part one is a message flow which is to consume the IBM ACE monitoring messages and Part two is a spring boot vaadin application which is to view the messages flowing through the ACE.

The message flow can consume messages from both MQ and MQTT. Also it can consume the monitoring messages in both XML and JSON formats when using MQ based configuration. Check provided the properties file to know which queue to configure for XML vs JSON.

This blog assumes that you already know how to setup IBM ACE monitoring in a message flow, enabling them and subscribe to the monitoring events. If not, please visit https://www.ibm.com/docs/en/app-connect/12.0?topic=monitoring-message-flow-overview

Now, let me explain how to setup ACEMON.

  • Download the files located in https://github.com/vaithu/acemon
  • Run the DB script AceMonitoring_DBScript.sql. You can override the schema name as you wish but note down the name as we need it later to update in the BAR file
  • Setup ODBC connection as per your operating system
  • Setup environment variables as shown here

Note that the ACE_DB_URL should start with jdbc:oracle:thin:@

  • Update the properties file AceMonitoring.properties as per your needs like the DB schema name, Queue names, MQTT subscription properties etc and then override the bar file AceMonitoring.bar.
  • Deploy the bar file AceMonitoring.bar to any Integration Server or Node.
  • Run the spring boot application ace-mon-1.0-SNAPSHOT.jar using command java -jar ace-mon-1.0-SNAPSHOT.jar. Note that you need Java 17 to run this application.
  • Open a browser and type-in http://hostname:8080 ( e.g., http://localhost:8080)
  • Once you push some monitoring messages and everything works as expected, click on this link

Choose the message flow in the drop down and then click on Search. You will see all messages in the grid.

If you’re facing any issues or having any suggestion for improvements or having any feedback please let us know at support@vaithu.com

We’ll be soon publishing the commercial version which will have the following

  1. User Access Control
  2. Filtering by key elements
  3. Charts
  4. And much more

Say GoodBye to Log4jNode!!!

A developer spends lot of time not for development but for debugging. This is the most frustrating part when the issue could not be identified or diagnosed or no access to connect to the remote server or takes time to connect/disconnect. Usually every project has log4j or special custom node or subflow or use Flow exerciser but all these are not with flaws. Each has its own pros and cons. So we decided to create set of custom nodes which should give every detailed information a developer is interested and it must be controlled and configurable . It has to show him not only the message payload and headers but also what type of message, sender and receiver details, what protocol is it, time to complete and status of the transaction

  • Log files are written to a common directory as configured
  • Log files are written to physical file system where Node is installed
  • Can easily move to Database if needed to store audit messages
  • Dynamically change what level of log is required
  • Log files can be compressed and decompressed as configured
  • key business elements can also be captured
  • Additional information like Sender, Receiver, Interface Name, MessageId,Node details,Additional Instances,Message type and protocol can also be captured
  • Want to see Environment and LocalEnvironment too? Yes everything is availble as you confgured
  • Time of failure and Time of success are also captured
  • Elasped time for each message is also captured in log messages
  • Automatically rolling of files for every 10 minutes.
  • Every flow has its own unique log files
  • Works for all kinds of message types
  • Available both as subflow and node

A sample log file is shown below.

[
1. Metadata(Timestamp=2017-09-05T21:19:07.629|TransactionId=05bc1397-a8ab-4c47-b02f-539b8b697b56|MessageFlowName=SendToWarehouse|MessageType=XML|Sender=Maximo|Receiver=IIB|Protocol=Queue)

Header(<MQMD><SourceQueue>IN.Q</SourceQueue><Transactional>true</Transactional><Encoding>546</Encoding><CodedCharSetId>437</CodedCharSetId><Format>        </Format><Version>2</Version><Report>0</Report><MsgType>8</MsgType><Expiry>-1</Expiry><Feedback>0</Feedback><Priority>0</Priority><Persistence>0</Persistence><MsgId>414d5120494239514d47522020202020657ca5592041700e</MsgId><CorrelId>000000000000000000000000000000000000000000000000</CorrelId><BackoutCount>0</BackoutCount><ReplyToQ>                                                </ReplyToQ><ReplyToQMgr>IB9QMGR                                         </ReplyToQMgr><UserIdentifier>vaithu</UserIdentifier><AccountingToken>160105150000002d74cc5dfa721e73431607412b32030000000000000000000b</AccountingToken><ApplIdentityData>                                </ApplIdentityData><PutApplType>11</PutApplType><PutApplName>:\Softwares\ih03\rfhutil.exe</PutApplName><PutDate>2017-09-06</PutDate><PutTime>01:19:07.600</PutTime><ApplOriginData>    </ApplOriginData><GroupId>000000000000000000000000000000000000000000000000</GroupId><MsgSeqNumber>1</MsgSeqNumber><Offset>0</Offset><MsgFlags>0</MsgFlags><OriginalLength>-1</OriginalLength></MQMD>)

Input(<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
 <InvoiceNo>7</InvoiceNo>
 <InvoiceDate>2000-12-07</InvoiceDate>
 <InvoiceTime>12:40:00</InvoiceTime>
 <TillNumber>3</TillNumber>
 <Cashier StaffNo='089'>Mary</Cashier>
 <Customer>
   <FirstName>Andrew</FirstName>
   <LastName>Smith</LastName>
   <Title>Mr</Title>
   <DOB>20-01-70</DOB>
   <PhoneHome>01962818000</PhoneHome>
   <PhoneWork />
   <Billing>
     <Address>14 High Street</Address>
     <Address>Hursley Village</Address>
     <Address>Hampshire</Address>
     <PostCode>SO213JR</PostCode>
   </Billing>
 </Customer>
 <Payment>
   <CardType>Visa</CardType>
   <CardNo>4921682832258418</CardNo>
   <CardName>Mr Andrew J. Smith</CardName>
   <Valid>1200</Valid>
   <Expires>1101</Expires>
 </Payment>
 <Purchases>
   <Item>
     <Title Category='Computer' Form='Paperback' Edition='2'>The XML Companion</Title>
     <ISBN>0201674866</ISBN>
     <Author>Neil Bradley</Author>
     <Publisher>Addison-Wesley</Publisher>
     <PublishDate>October 1999</PublishDate>
     <UnitPrice>27.95</UnitPrice>
     <Quantity>2</Quantity>
   </Item>
   <Item>
     <Title Category='Computer' Form='Paperback' Edition='2'>A Complete Guide to DB2 Universal Database</Title>
     <ISBN>0201674866</ISBN>
     <Author>Neil Bradley</Author>
     <Publisher>Morgan Kaufmann Publishers</Publisher>
     <PublishDate>April 1998</PublishDate>
     <UnitPrice>42.95</UnitPrice>
     <Quantity>1</Quantity>
   </Item>
   <Item>
     <Title Category='Computer' Form='Hardcover' Edition='0'>JAVA 2 Developers Handbook</Title>
     <ISBN>0782121799</ISBN>
     <Author>Philip Heller, Simon Roberts </Author>
     <Publisher>Sybex, Inc.</Publisher>
     <PublishDate>September 1998</PublishDate>
     <UnitPrice>59.99</UnitPrice>
     <Quantity>1</Quantity>
   </Item>
 </Purchases>
 <StoreRecords/>
 <DirectMail/>
 <Error/>
</Invoice>)

]
[
2. Metadata(Timestamp=2017-09-05T21:19:07.758|MessageType=XML|Protocol=Queue)

Header(<MQMD><SourceQueue>IN.Q</SourceQueue><Transactional>true</Transactional><Encoding>546</Encoding><CodedCharSetId>437</CodedCharSetId><Format>        </Format><Version>2</Version><Report>0</Report><MsgType>8</MsgType><Expiry>-1</Expiry><Feedback>0</Feedback><Priority>0</Priority><Persistence>0</Persistence><MsgId>414d5120494239514d47522020202020657ca5592041700e</MsgId><CorrelId>000000000000000000000000000000000000000000000000</CorrelId><BackoutCount>0</BackoutCount><ReplyToQ>                                                </ReplyToQ><ReplyToQMgr>IB9QMGR                                         </ReplyToQMgr><UserIdentifier>vaithu</UserIdentifier><AccountingToken>160105150000002d74cc5dfa721e73431607412b32030000000000000000000b</AccountingToken><ApplIdentityData>                                </ApplIdentityData><PutApplType>11</PutApplType><PutApplName>:\Softwares\ih03\rfhutil.exe</PutApplName><PutDate>2017-09-06</PutDate><PutTime>01:19:07.600</PutTime><ApplOriginData>    </ApplOriginData><GroupId>000000000000000000000000000000000000000000000000</GroupId><MsgSeqNumber>1</MsgSeqNumber><Offset>0</Offset><MsgFlags>0</MsgFlags><OriginalLength>-1</OriginalLength></MQMD>)

Output(<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
 <InvoiceNo>7</InvoiceNo>
 <InvoiceDate>2000-12-07</InvoiceDate>
 <InvoiceTime>12:40:00</InvoiceTime>
 <TillNumber>3</TillNumber>
 <Cashier StaffNo='089'>Mary</Cashier>
 <Customer>
   <FirstName>Andrew</FirstName>
   <LastName>Smith</LastName>
   <Title>Mr</Title>
   <DOB>20-01-70</DOB>
   <PhoneHome>01962818000</PhoneHome>
   <PhoneWork />
   <Billing>
     <Address>14 High Street</Address>
     <Address>Hursley Village</Address>
     <Address>Hampshire</Address>
     <PostCode>SO213JR</PostCode>
   </Billing>
 </Customer>
 <Payment>
   <CardType>Visa</CardType>
   <CardNo>4921682832258418</CardNo>
   <CardName>Mr Andrew J. Smith</CardName>
   <Valid>1200</Valid>
   <Expires>1101</Expires>
 </Payment>
 <Purchases>
   <Item>
     <Title Category='Computer' Form='Paperback' Edition='2'>The XML Companion</Title>
     <ISBN>0201674866</ISBN>
     <Author>Neil Bradley</Author>
     <Publisher>Addison-Wesley</Publisher>
     <PublishDate>October 1999</PublishDate>
     <UnitPrice>27.95</UnitPrice>
     <Quantity>2</Quantity>
   </Item>
   <Item>
     <Title Category='Computer' Form='Paperback' Edition='2'>A Complete Guide to DB2 Universal Database</Title>
     <ISBN>0201674866</ISBN>
     <Author>Neil Bradley</Author>
     <Publisher>Morgan Kaufmann Publishers</Publisher>
     <PublishDate>April 1998</PublishDate>
     <UnitPrice>42.95</UnitPrice>
     <Quantity>1</Quantity>
   </Item>
   <Item>
     <Title Category='Computer' Form='Hardcover' Edition='0'>JAVA 2 Developers Handbook</Title>
     <ISBN>0782121799</ISBN>
     <Author>Philip Heller, Simon Roberts </Author>
     <Publisher>Sybex, Inc.</Publisher>
     <PublishDate>September 1998</PublishDate>
     <UnitPrice>59.99</UnitPrice>
     <Quantity>1</Quantity>
   </Item>
 </Purchases>
 <StoreRecords/>
 <DirectMail/>
 <Error/>
</Invoice>>)

LocalEnvironment(<WrittenDestination><MQ><DestinationData><queueName>OUT.Q</queueName><queueManagerName></queueManagerName><replyIdentifier>414d5120494239514d47522020202020657ca5592041700e</replyIdentifier><msgId>414d5120494239514d47522020202020657ca5592041700e</msgId><correlId>000000000000000000000000000000000000000000000000</correlId><GroupId>000000000000000000000000000000000000000000000000</GroupId></DestinationData></MQ></WrittenDestination>)

TransactionCompletedIn:00:00:00.142
Status:Success
]

Interested to buy these nodes, please connect with us at support@vaithu.com/WhatsApp +1 6123058684.