Bot-BasicBot-Pluggable-Module-Nagios
view release on metacpan or search on metacpan
lib/Bot/BasicBot/Pluggable/Module/Nagios.pm view on Meta::CPAN
package Bot::BasicBot::Pluggable::Module::Nagios;
use warnings;
use strict;
our $VERSION = '0.06';
use base 'Bot::BasicBot::Pluggable::Module';
use Nagios::Scrape;
=head1 NAME
Bot::BasicBot::Pluggable::Module::Nagios - report Nagios alerts to IRC
=head1 DESCRIPTION
A module for IRC bots powered by L<Bot::BasicBot::Pluggable> to monitor a Nagios
install and report alerts to IRC.
Multiple Nagios instances are supported; these could be separate Nagios systems,
or just the same Nagios install but using different credentials. As each
configured instance can have specific target channels defined, this means you
could have the bot check with the username "development" and report all visible
problems to the C<#development> channel, then check again with the "sysad"
username and report problems visible to that user to the C<#sysads> channel.
Actual monitoring is done using L<Nagios::Scrape>, which scrapes the information
from the C<status.cgi> script which powers Nagios' web interface. This means
that, assuming your Nagios setup is configured to be viewable over the web, you
need no further setup to allow the bot to monitor it.
=head1 SYNOPSIS
Load the module as you would any other L<Bot::BasicBot::Pluggable> module, then
configure it to watch a Nagios install and report problems to the desired
channel(s) with the C<nagios add> command.
In a direct message to the bot:
<user> nagios add http://nagios.example.com/cgi-bin/status.cgi username password #channel
<bot> OK
<user> nagios list
<bot> I'm currently monitoring the following Nagios instances:
.. 1 : http://example.com/cgi-bin/status.cgi as dave for #chan
<user> nagios del 1
<bot> OK, deleted instance 1
(You can supply a list of channel names separated by commas, if you want reports
from a given instance to be announced to more than one channel.)
=cut
sub help {
return <<USAGE;
A module to report Nagios alerts to IRC channels.
!nagios add http://example.com/cgi-bin/status.cgi username password #chan
!nagios list
!nagios del 1
!nagios set setting_name value
Say "!nagios set" with no setting name for a list of valid settings.
Full help is available at http://p3rl.org/Bot::BasicBot::Pluggable::Module::Nagios
USAGE
}
sub told {
my ($self, $mess) = @_;
return unless $mess->{address} && $mess->{body} =~ s/^!nagios\s+//i;
my ($command, $params) = split /\s+/, $mess->{body}, 2;
if (lc $command eq 'add') {
my($url, $user, $pass, $channel_list) = split /\s+/, $params, 4;
if ($url !~ /^http/i) {
return "URL looks invalid!";
}
my @channels = split /\s+|,/, $channel_list;
my $instances = $self->get('instances') || [];
( run in 1.180 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )