xmppbot is developed mainly to provide easier integration and communication of (local) scripts with XMPP. An xmppbot-instance is itself connected to XMPP but also listens on a socket for normal XMPP-stanzas. This way scripts don't have all the overhead of connection, authentication, encryption etc. that comes with XMPP. Additionally, the bot uses a cache for IQ-stanzas, thus reducing XMPP-traffic.
This functionality useful either if execution time is critical (i.e. if part of a CMS-installation) or if the same packages would be send very often, which would be the case for a collection of Munin plugins.
Authors, download and licence
xmppbot is developed by Mati. I thus share the source in the public part of my SVN-repository, the URL is:
The whole project is of course under the GPLv3.
Installation and configuration
There currently is no full package for xmppbot, so you will have to install xmppbot manually. A simple svn-checkout
will download all the files you need. It is advised that you run xmppbot as a separate user.
An example config-file is provided in the doc/ directory. The real config-file can either be /etc/xmppbot.conf, ~/.xmppbot.conf or ./xmppbot.conf. Simply copy it there and fill out the details. All possible options are documented if you start xmppbot.py --help, each and every setting can be set in the config-file (except, obviously, the location of the config-file).
The xmppbot comes with quite a few Munin plugins.
muc_ is a wildcard plugin that monitors the usage of XMPP Multi User Chats. Its valid suffixes are 'messages', with which case it reports the number of messages that where sent in the last 24 hours or 'participants, with which it reports the number of current participants in the MUCs.
For xmppbot to obtain this information, it must have joined the room. You can either do this with xmppbot-control or at start-time in the config-file. As it does not make sense to join the room every time a munin-plugin executes, the plugin assumes that the bot has already joined the room.
Both plugins require little configuration, only the environment variable "mucs" must be set to the mucs that the plugins should monitor. Here is an example:
[muc_*] env.mucs email@example.com firstname.lastname@example.org
Multiple MUCs can be monitored if they are seperated with spaces.
transports_ is a wildcard plugin. Its valid suffixes are 'uptime', 'connections', 'totalconnections' and 'messages'. They are all configured in almost the same way as the muc_ plugins. So far, the plugin supports only ICQ, AIM and MSN transports.
[transports_*] env.jids icq.fsinf.at aim.fsinf.at msn.fsinf.at