#!/usr/bin/perl # # Munin plugin for number of spots in a MySQL database # # Copyright (C) 2011 - Rowdy Schwachöfer (http://rowdy.nl) # # Spotweb : http://github.com/spotweb/spotweb # Original idea : smeerbartje (http://gathering.tweakers.net/forum/myreact/190949) # slommer (http://gathering.tweakers.net/forum/myreact/353335) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # Configuration example # # [spotweb*] # env.mysql /usr/bin/mysql # MySQL binary (optional) # env.mysqlopts -u -p # How to connect to the database (optional if no password is set) # env.database spotweb # Spotweb database (optional) # # [spotweb_average] # env.period 1800 # The period over which to check in seconds, default to 30 minutes (1800 seconds) # env.watchlist yes # Show items in the watchlist (period independent) # # use strict; my $MYSQL = $ENV{mysql} || "/usr/bin/mysql"; my $MYSQLOPTS = $ENV{mysqlopts} || ""; my $DATABASE = $ENV{database} || "spotweb"; my $PERIOD = $ENV{period} || 1800; my $SHOW_WATCHLIST = $ENV{watchlist} || "yes"; my $FROMSTAMP = time - $PERIOD; my $TITLE = "Spotweb (".($PERIOD / 60)." minute average)"; # Output for config if(defined $ARGV[0] && $ARGV[0] eq 'config') { print < $FROMSTAMP;'`; $spots =~ /(\d+)/; print "spots.value ".$1."\n"; # Downloaded my $downloaded = `$MYSQL $MYSQLOPTS -e 'SELECT count(messageid) as comments FROM $DATABASE.spotstatelist WHERE download IS NOT NULL'`; $downloaded =~ /(\d+)/; print "downloaded.value ".$1."\n"; # Watchlist if($SHOW_WATCHLIST eq 'yes') { my $watchlist = `$MYSQL $MYSQLOPTS -e 'SELECT count(messageid) as watchlist FROM $DATABASE.spotstatelist WHERE watch IS NOT NULL'`; $watchlist =~ /(\d+)/; print "watchlist.value ".$1."\n"; }