Tuesday, April 15, 2008

Using a XMPP bot for Cloud Monitoring

So while working on our distributed monitoring agent for Enomalism it occurred to me that our use of XMPP for Command & Control could also be refitted to act as a cluster / machine monitor. The cool part of XMPP is it acts as both a presence monitor, think of my list of friends who are currently online, but in our case servers who are responding. We can communicate with each server using a secure http based message protocol (SSL), which means no crazy firewall rules. To the outside world XMPP appears as background noise, "IM traffic", which tends to attract little attention, it is extremely light-weight and therefore is easily integrated into existing enterprise environments.

Using this secure messaging channel we can send encrypted details on the state of a given machine or group of machines as well as other other relevant virtual machine information. If we lose a particular VM, cluster or entire region, no worries, they're offline and won't effect another machines in the cluster. The messages can be queued and delivered later when the machines are available again.

XMPP is an ideal method for hooking machines together because its completely decentralized (there is no central authoritative server). Also you can have massive redundancy ejabberd has it built in (developed in Erlang), or get your machine to add all the redundant servers into a "Friends Group" AKA Cluster (named after the service they provide for example), then cycle through all of them until it finds one that is online! Your own personal botnet.

#DigitalNibbles Podcast Sponsored by Intel

If you would like to be a guest on the show, please get in touch.