[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [hobbit] [Hobbit/Xymon] PDF Reports



|I have a pet project to write a oscount hobbit server side module by modifying |Henrik's rootlogin perl script. The script is to display statistics of OS types and their verions.
Maybe this will help you with your project
This is what to "parse " ps output on the server side to chech for running back-up (save -s).
Watch out for line wraps
#!/usr/local/bin/perl

#*----------------------------------------------------------------------------*/
#* Hobbit client message processor. */ #* */ #* This perl program shows how to create a server-side module using the */ #* data sent by the Hobbit clients. This program is fed data from the */ #* Hobbit "client" channel via the hobbitd_channel program; each client */ #* message is processed by looking at the [who] section and generates */ #* a "login" status that goes red when an active "root" login is found. */ #* */ #* Written 2007-Jan-28 by Henrik Storner <henrik (at) hswn.dk> */ #* */ #* This program is in the public domain, and may be used freely for */ #* creating your own Hobbit server-side modules. */ #* Henrik's script was modified by me, Mike Nemeth Michael.nemeth (at) lmco.com */ #* the rootlogin.pl which parses the [who] section was changed to parse */ #* the [ps] of client data. */ #* Often Ive seen people ask how to monitor a certain proccess and have */ #* a separted test/column for it This works for me! */ #* */
#*----------------------------------------------------------------------------*/

# $Id: rootlogin.pl,v 1.1 2007/01/28 12:42:34 henrik Exp $
# look for back-ups running: save  -s

my $bb;
my $bbdisp;
my $hobbitcolumn = "bkup";
my $hostname = "";
my $msgtxt = "";
my %sections = ();
my $cursection = "";

sub processmessage;


# Get the BB and BBDISP environment settings.
$bb = $ENV{"BB"} || die "BB not defined";
$bbdisp = $ENV{"BBDISP"} || die "BBDISP not defined";


# Main routine.
#
# This reads client messages from <STDIN>, looking for the
# delimiters that separate each message, and also looking for the
# section markers that delimit each part of the client message.
# When a message is complete, the processmessage() subroutine
# is invoked. $msgtxt contains the complete message, and the
# %sections hash contains the individual sections of the client
# message.

while ($line = <STDIN>) {
       if ($line =~ /^\ (at) \@client\#/) {
# It's the start of a new client message - the header looks like this: # @@client#830759/HOSTNAME|1169985951.340108|10.60.65.152|HOSTNAME|sunos|sunos

               # Grab the hostname field from the header
               @hdrfields = split(/\|/, $line);
               $hostname = $hdrfields[3];

               # Clear the variables we use to store the message in
               $msgtxt = "";
               %sections = ();
       }
       elsif ($line =~ /^\ (at) \@/) {
               # End of a message. Do something with it.
               processmessage();
       }
       elsif ($line =~ /^\[(.+)\]/) {
               # Start of new message section.

               $cursection = $1;
               $sections{ $cursection } = "\n";
       }
       else {
               # Add another line to the entire message text variable,
               # and the the current section.
               $msgtxt = $msgtxt . $line;
               $sections{ $cursection } = $sections{ $cursection } . $line;
       }
}


# This subroutine processes the client message. In this case,
# we watch the [ps] section of the client message and alert
# if our string is found: save -s meaning backs are  active.


sub processmessage {
       my $color;
       my $summary;
       my $statusmsg;
       my $cmd;
       my $cmdl;

       # Dont do anything unless we have the "ps" section
       return unless ( $sections{"ps"} );

       # Is the string/process  somewhere in the "ps" section?
       # Note that we must match with /m because there are multiple
       # lines in the [ps] section.
       if (  ($cmdl) = $sections{"ps"} =~ /(save.+-s.*)/  ) {
               $color = "yellow";
               $summary = "There MAYBE active backups" ;
#                $statusmsg = "&yellow " .  $cmdl .  $sections{"ps"};
# sendins out the entire ps section seam to cause some purples so just send the match `, hey you've a proc column all ready.
               $statusmsg = "&yellow " .  $cmdl ;
       }
       else {
               $color = "green";
               $summary = "Ok";
               $statusmsg = "&green No backup active\n\n";
       }
       # Build the command we use to send a status to the Hobbit daemon
$cmd = $bb . " " . $bbdisp . " \"status " . $hostname . "." . $hobbitcolumn . " " . $color . " " . $summary . "\n\n"
. $statusmsg . "\"";
       # And send the message
       system $cmd;
}




T.J. Yang wrote:


--------------------------------------------------
From: "Martin Flemming" <martin.flemming (at) desy.de>
Sent: Wednesday, November 12, 2008 4:14 AM
To: <hobbit (at) hswn.dk>
Subject: Re: [hobbit] [Hobbit/Xymon] PDF Reports


Hi, Thomas ..

i'm very interesting and other too, i think :-)

Second that.
you can post your script here, I will upload the script to svn repository.

Or request an account from Henrik and upload the script yourself.

I have a pet project to write a oscount hobbit server side module by modifying Henrik's rootlogin perl script. The script is to display statistics of OS types and their verions. This is useful for management to understand how many Solaris 2.5.1, 2.6 are still hanging around
in a big IT environment.


tj

.. the shire will be the right place ..

cheers,
 martin

On Wed, 12 Nov 2008, Thomas Séglard wrote:

Hello,

some months (year ?) ago, I wrote a few php/shell code lines to generate on-demand/automatised PDF reports with the help of the RRD data produced by Hobbit. At the time of coding, I've used 'libfpdf' but it's a pain to include
PNG with alpha-channel.

I'm now in charge of a new platform and I setup Hobbit to monitor everything, of course :) Besides, I discovered the library 'tcpdf' which is very good and efficient. So, I decided to bring back my reports and have them to work with 'tcpdf'. Modifications were easy since 'tcpdf' is based on 'libfpdf' and now everything works again :) But this time, I really want to share this work
with you on the Shire or whatever. I need to know if some of you are
interested by these reports... Thus, just let me know.

Best regards,

ThomaS

To unsubscribe from the hobbit list, send an e-mail to
hobbit-unsubscribe (at) hswn.dk








To unsubscribe from the hobbit list, send an e-mail to
hobbit-unsubscribe (at) hswn.dk


To unsubscribe from the hobbit list, send an e-mail to
hobbit-unsubscribe (at) hswn.dk