As an ITRS partner I have worked on several projects with ITRS Group. My latest project has been developing a Geneos monitoring solution for my-Channels Nirvana. For those unfamiliar with this technology, it is a message orientated middleware product that guarantees message delivery across enterprise, web and mobile and is used globally by banks that account for 40% of FX market volume.
I have had experience of a few middleware products (i.e. TIBCO RV and IBM MQ) and I was pleasantly surprised by how easy it was to get Nirvana up and running in my development environment.
Initially, I downloaded a fully functional evaluation copy of Nirvana with a free developer licence from http://www.my-channels.com/downloads/. They supply an application https://showcase.my-channels.com/ that demonstrates the flexibility of the client interface, but I was more interested in the admin interface.
For those of you familiar with the Java Message Service (JMS) API you will understand the concept of Queues and topics. In Nirvana a JMS topic translates directly to a channel. Queues are slightly different from other point to point implementations I have experienced and I am used to a more straightforward model where messages on a queue are read by one consumer. With Nirvana If more than one consumer is subscribed to a queue then the events are distributed amongst consumers in a round-robin fashion.
High levels of sophistication
My first task was to get statistics about messages on Nirvana Channels. Nirvana provides a very extensive and sophisticated management API written in Java, you can also access this API from C++ and C# .NET.
In the Nirvana API the key to all information is the RNAME, this uniquely identifies a Nirvana instance. The RNAME is made up of three parts:
<protocol> :// <hostname> :< port >
- <protocol>can be one of the 4 available native communications protocol identifiers nsp (socket), nhp (HTTP), nsps (SSL) and nhps (HTTPS).
- <hostname>is the hostname or IP address that the Nirvana Realm is running
- <port>is the TCP port on that hostname that the Nirvana Realm is bound to using the same wire protocol.
Once you have a connection to the Realm you can ask it about its channels, in terms of the Nirvana API this is a leaf node represented by the nLeafNode object in Admin API.
Interfacing with Geneos
Once I had the information about the channels I had to stream this information into Geneos through its instrumentation API. This allows an external process to create views and publish data in real-time through the Geneos Enterprise Management Framework. Running API and/or API-STREAMS plug-ins on the Geneos NetProbe enables the plug-in to act as an XML-RPC server and can then handle connections from multiple clients.
Using the XML-RPC interface you can dynamically generate Geneos data views to display the information. These views can be treated exactly the same as normal Geneos data views, enabling Nirvana monitoring to be integrated with monitoring of the applications it services together with the associated infrastructure.
Healthy views and rules
After building the Channel monitor I set about extending the solution to display information about the Connections, Threads and the individual Realms themselves. I was then able to build a view of the health of an individual cluster based on information taken from each Realm.
Below a screen shot of Geneos Active Console displays the information about three Realms that make up a cluster in my development environment.
Next I identified what indicates a "realm in trouble", so I could then build a set of rules that will trigger an alert before an underlying technical issue causes problems that affect the business.
This is an exciting project that is enabling Nirvana users to create dynamic data views and trigger timely alerts to identify underlying technical issues. ITRS is also working with my-Channels to provide a set of rules to use in with the Geneos FKM (File keyword Monitoring) plugin against the Nirvana log files. Ultimately, we are planning to provide a toolkit that will use FKM and the Nirvana API to give a complete picture.
If you use Nirvana and Geneos and would be interested in joining our Beta program or want to find out more please contact us.
Business Driven IT