Munin plugin for IRC channel user count
Since I began playing with Net_SmartIRC, I found a new way to put that library to work : a Munin plugin script to monitor the number of users in an IRC channel.
Here is an example of the graphical output provided by Munin :
As you can see, the Debian IRC channel is a very crowded place ! You may also notice small gaps in the data : the script sometimes fails on a refused connection, and I have not elucidated the cause. But as the graph shows, I have coded the script so that those failure cases only result in a null output, which Munin handles well by showing a blank record.
Because my lacking skills and crass lazyness prevented me from writing it all in a single language, I hacked that plugin by simply patching together the parts I could produce rapidly :
- irc_channel_users is a Munin plugin script that calls irc_channel_users.php
- irc_channel_users.php performs the actual login and count on the IRC server.
The PHP script is uses Net_SmartIRC which is available in Debian as php-net-smartirc. It must be configured by modifying the hardcoded server and channel – that may not be what is best in production use, but for the moment it works for me. Here is the full extent of the PHP code :
< ?php
include_once('/usr/share/php/Net/SmartIRC.php');
$irc = &new Net_SmartIRC();
//$irc->setDebug(SMARTIRC_DEBUG_ALL);
$irc->setUseSockets(TRUE);
$irc->setBenchmark(TRUE);
$irc->connect('irc.eu.freenode.net', 6667);
$irc->login('usercount', 'Users counting service for Munin monitoring',
'0', 'usercount');
$irc->getList('#test_channel');
$resultar = $irc->objListenFor(SMARTIRC_TYPE_LIST);
$irc->disconnect();
if (is_array($resultar)) {
echo $resultar[0]->rawmessageex[4];
} else {
}
?>
The irc_channel_users Bash script is also quite simple. Apart from the barely modified boilerplate adapted from other simple Munin bash scripts, the specific meat of the script is as follow :
work_directory=/home/jim/applications/munin/irc_channel_users
php_interpreter=`which php`
user_population=`$php_interpreter $work_directory/irc_channel_users.php
| awk -F"#" '{print($1)}' | grep -e '^[0-9]+$'`
echo -n "population.value "
echo $user_population
As you can see, the munin bash script is mostly about setting a few Munin variables, calling the php script and formatting the output.
Here are sample outputs :
15:32 munin@kivu /etc/munin/plugins% ./irc_channel_users autoconf yes 15:32 munin@kivu /etc/munin/plugins% ./irc_channel_users config graph_title #b^2 IRC channel users graph_args --base 1000 -l 0 graph_vlabel population graph_scale no population.label users 15:32 munin@kivu /etc/munin/plugins% ./irc_channel_users population.value 6
No demonstration is available on a public site, but the above graph is about all there is to know about the output of this plugin.
The code resides on its own page and updates if they ever appear shall be stored there.
This experience taught me that coding basic Munin plugins is fun and easy. I will certainly come back to it for future automated graphing needs.
And for those who wonder about the new syntax highlighting, it is produced using GeSHi by Ryan McGeary‘s very nice WP-Syntax WordPress plugin.
One response to “Munin plugin for IRC channel user count”
Leave a Reply
You must be logged in to post a comment.
gran solución Jean!
Thanks!!!