Date: Wed, 12 Nov 2008 07:34:06 -0500
From: user-609d3fab5b2d@xymon.invalid
To: user-ae9b8668bcde@xymon.invalid
Subject: 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 > <user-ce4a2c883f75@xymon.invalid> */
#* > */
#* 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 > user-609d3fab5b2d@xymon.invalid */
#* 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 =~ /^\@\@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 =~ /^\@\@/) {
# 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" <user-f286aaa49a76@xymon.invalid>
Sent: Wednesday, November 12, 2008 4:14 AM
To: <user-ae9b8668bcde@xymon.invalid>
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