Hobbit(3pm)

NAME
Hobbit.pm -- Perl module to easily write Hobbit/Xymon tests

SYNOPSIS
 use Hobbit;
 my $bb = new Hobbit('testname');

 if (somethings_is_not_so_good) {
    $bb->color_line('yellow', 'Something is not so good');
 }

 if (somethings_is_really_bad) {
    $bb->color_line('red', 'Something is really bad');
 }

 $bb->send();

DESCRIPTION
Hobbit.pm is part of the Debian package hobbit-plugins and was written to gather common tasks needed when writing tests for the Xymon monitoring system (formerly known as Hobbit).

EXPORTABLE HELPER FUNCTIONS

  @regexps = file_to_list_of_regexps($file)

  @globs = file_to_list_of_globs($file)

INTERNAL FUNCTIONS

  $max_color = max_color($color1, $color)
Out of two colors, returns the color with the highest severity.

METHODS

  Constructor: new Hobbit('testname');

  Constructor: new Hobbit({ test => 'testname', ttl => 60, ...});
Creates a new Hobbit object.

Common use cases

  my $bb = new Hobbit('sometest');
  my $bb = new Hobbit({ test      => 'testname',
                        color     => 'green',
                        hostname  => 'host.example.com',
                        text      => 'Test successful',
                        title     => 'Some Test',
                        ttl       => 60,
                        type      => 'status',
                        dont_moan => 1 });

Available parameters

color
    The initial color of the test. (Default: "clear")

dont_moan
    Disable moan() and croak() (see below). Needed if e.g. another used Perl module throws a lot of warnings but works fine otherwise, etc.

hostname
    The hostname for which the test should report. (Default: $ENV{CLIENTHOSTNAME} || $ENV{MACHINEDOTS} || $ENV{MACHINE} || 'unknown')

test
    The name of the test, i.e. the name of the column on the hobbit status web pages. (Mandatory)

text
    Text which is prepended to generated report. (Default: the empty string)

title
    The summary of the test. (Default: "$test OK" respectively "$test NOT ok")

ttl How long the test result is valid before the test state is changed to purple by the xymon daemon if no newer test results have been received.

    The default value is set on the xymon server and is 300 seconds by default.

    Values without unit are interpreted as minutes. Valid units are h for hours, d for days, and w for weeks. No space between value and unit allowed.

type
    Allows one to send messages of other types than "status", e.g. data, notify, disable, enable, etc.

    May not yet work with all of these types properly. Please report bugs via the Debian Bug Tracking system.

  Constructor: Hobbit::trends;

  Constructor: Hobbit::trends ('hostname');
Creates a new Hobbit trends object. This is a shorthand for new Hobbit({ type = 'data', test = 'trends', hostname = $hostname, dont_moan => 1 });

Common use case

  my $trends = Hobbit::trends;
  $trends->print ("[$bb->{test},extralabel.rrd]\n");
  $trends->print ("DS:lambda:GAUGE:600:U:U $value\n");
  $trends->send;

  add_color('somecolor')
Minutes that a sub test caused the given color state. Adjusts the overall resulting color accordingly.

  print('some text')
Adds the given text to the end of the current report without changing the current color.

  sprintf('format', args ...)
Like the print() method, but using sprintf() with format string and arguments.

  color_print('somecolor', 'some text')
Adds the given text to the end of the current report and minutes that a sub test caused the given color state. Adjusts the overall resulting color accordingly.

  color_line('somecolor', 'some text')
Adds the given text to the end of the current report and minutes that a sub test caused the given color state. Prepends that text with an accordingly colored Xymon icon and adjusts the overall resulting color accordingly.

  graph('graphname')
Adds HTML for showing a graph. Xymon itself can only show a single graph per test (others can be added to the "trends" column). This method works around that limitation by manually linking to the graph CGI.

  send()
Sends the report to the xymon server.

FUNCTIONS

  grep(tag)
Run a xymongrep (bbhostgrep) query and return an array reference of hashes with keys ip (string), hostname (string), and tags (array reference).

  my $list = Hobbit::grep('foobar');
  foreach my $host (@$list) {
    print "$host->{ip} $host->{hostname}\n";
  }

INTERNAL METHODS

  moan()
If the check issues a Perl warning, this warning is added to the report with color state "yellow".

Set dont_moan to 1 to disable this feature.

  croak()
If the check issues a Perl error, this error is added to the report with color state "red".

Set dont_moan to 1 to disable this feature.

AUTHORS AND COPYRIGHT
 Copyright (C) 2008-2011  Christoph Berg <myon@debian.org>
 Copyright (C) 2011       Axel Beckert <abe@debian.org>

SEE ALSO
<http://www.xymon.org/> bb(5), xymon(1)