monitors:bbsmokeping

no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


monitors:bbsmokeping [2009/11/23 05:34] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== Monitor ======
 +
 +^ Author | [[ nathanh@manu.com.au | Nathan Hand ]] |
 +^ Compatibility | Xymon 4.2 |
 +^ Requirements | Perl, unix, smokeping |
 +^ Download | None |
 +^ Last Update | 2007-01-01 |
 +
 +===== Description =====
 +
 +This server/ext script walks the FPing targets from your existing Smokeping installation and alerts if the packet loss exceeds a threshold. It's similar in concept to the bbmrtg.pl script.
 +
 +===== Installation =====
 +  - Make sure your Xymon/BB hostnames and Smokeping hostnames are in agreement, eg. <code>
 +   /usr/local/hobbit/server/etc/bb-hosts:
 +      10.20.30.40   myrouter     # conn
 +
 +   /usr/local/smokeping/etc/config:
 +      ++ myrouter
 +      menu = myrouter
 +      title = This Is My Router
 +      host = 10.20.30.40
 +</code>
 +  - Then drop this ext script into /usr/local/hobbit/server/ext and enable it in the launcher, eg add this to /usr/local/hobbit/server/etc/hobbitlaunch.cfg <code>
 +   [bbsmokeping]
 +      ENVFILE /usr/local/hobbit/server/etc/hobbitserver.cfg
 +      NEEDS hobbitd
 +      CMD $BBHOME/ext/bbsmokeping.pl
 +      LOGFILE $BBSERVERLOGS/bbsmokeping.log
 +      INTERVAL 3m
 +</code>
 +
 +===== Source =====
 +==== bbsmokeping.pl ====
 +<hidden onHidden="Show Code ⇲" onVisible="Hide Code ⇱">
 +<code perl>
 +#!/usr/bin/perl
 +#
 +# bbsmokeping.pl: Check the packet loss of Smokeping targets and report when loss
 +# exceeds thresholds.
 +#
 +# Author:   Nathan Hand <nathanh@manu.com.au>
 +# Version:  1.0
 +# License:  GPLv2
 +#
 +# Make sure your Xymon/BB hostnames and Smokeping hostnames are in agreement, eg.
 +#
 +#    /usr/local/hobbit/server/etc/bb-hosts:
 +#       10.20.30.40   myrouter     # conn
 +#
 +#    /usr/local/smokeping/etc/config:
 +#       ++ myrouter
 +#       menu = myrouter
 +#       title = This Is My Router
 +#       host = 10.20.30.40
 +#
 +# Then drop this ext script into /usr/local/hobbit/server/ext and enable it in the
 +# launcher, eg add this to /usr/local/hobbit/server/etc/hobbitlaunch.cfg
 +#
 +#    [bbsmokeping]
 +#       ENVFILE /usr/local/hobbit/server/etc/hobbitserver.cfg
 +#       NEEDS hobbitd
 +#       CMD $BBHOME/ext/bbsmokeping.pl
 +#       LOGFILE $BBSERVERLOGS/bbsmokeping.log
 +#       INTERVAL 3m
 +#
 +
 +use strict;
 +
 +# Configure location of BB
 +my $BB="/usr/local/hobbit/server/bin/bb";
 +my $BBDISP="1.2.3.4";
 +
 +# Adjust the thresholds
 +my $LOSSRED = 3;
 +my $LOSSYELLOW = 1;
 +
 +# Adjust these paths and versions as necessary.
 +use lib qw(/usr/perl5/site_perl/5.005/sun4-solaris/usr/include);
 +use lib qw(/usr/local/rrdtool-1.0.40/lib/perl);
 +use lib qw(/usr/local/smokeping-2.07/lib);
 +
 +# Define the full path to the Smokeping config file.
 +my $SMOKEPINGCFG = '/usr/local/smokeping/etc/config';
 +
 +# Define the full URL to the smokeping images.
 +my $SMOKEPINGURL = 'https://1.2.3.4/.simg';
 +
 +##################################
 +# Nothing to touch below this line
 +##################################
 +
 +use Smokeping;
 +use Data::Dumper;
 +
 +my $date = localtime();
 +my $cfg = Smokeping::get_config(Smokeping::get_parser, $SMOKEPINGCFG);
 +
 +sub walktree($$$$);
 +sub walktree($$$$) {
 +    my $cfg = shift;
 +    my $tree = shift;
 +    my $name = shift;
 +    my $target = shift;
 +
 +    foreach my $prop (keys %{$tree}) {
 +    if (ref $tree->{$prop} eq 'HASH') {
 +        walktree $cfg, $tree->{$prop}, $name."/$prop", $target."/$prop";
 +    }
 +
 +    if ($prop eq 'host' and $tree->{probe} eq 'FPing') {
 +        my $last = RRDs::last("$name.rrd");
 +        my ($start, $step, $names, $data) = RRDs::fetch "-s $last", "-e $last", "$name.rrd", 'AVERAGE';
 +
 +        if (@$names[1] eq 'loss') {
 +        my $loss = @{@$data[0]}[1];
 +
 +        if ($loss > $LOSSRED) {
 +            my $stats = <<ECHO;
 +$tree->{menu} missing $loss FPing packets
 +<P>exceeds threshold of $LOSSRED
 +<P><IMG src="${SMOKEPINGURL}${target}_last_10800.png">
 +ECHO
 +            system($BB, $BBDISP, "status $tree->{menu}.smoke red $date $stats");
 +        }
 +        elsif ($loss > $LOSSYELLOW) {
 +            my $stats = <<ECHO;
 +$tree->{menu} missing $loss FPing packets
 +<P>exceeds threshold of $LOSSYELLOW
 +<P><IMG src="${SMOKEPINGURL}${target}_last_10800.png">
 +ECHO
 +            system($BB, $BBDISP, "status $tree->{menu}.smoke yellow $date $stats");
 +        }
 +        else {
 +            my $stats = <<ECHO;
 +$tree->{menu} missing $loss FPing packets
 +<P><IMG src="${SMOKEPINGURL}${target}_last_10800.png">
 +ECHO
 +            system($BB, $BBDISP, "status $tree->{menu}.smoke green $date $stats");
 +        }
 +        }
 +    }
 +    }
 +}
 +
 +walktree $cfg, $cfg->{Targets}, $cfg->{General}{datadir}, "";
 +
 +</code>
 +</hidden>
 +
 +===== Known  Bugs and Issues =====
 +
 +No known bugs.
 +
 +===== To Do =====
 +
 +===== Credits =====
 +
 +===== Changelog =====
 +
 +  * **2007-01-01**
 +    * Initial release
  
  • monitors/bbsmokeping.txt
  • Last modified: 2009/11/23 05:34
  • by 127.0.0.1