ASNMTAP
view release on metacpan or search on metacpan
lib/ASNMTAP/Asnmtap/Plugins.pm view on Meta::CPAN
# ----------------------------------------------------------------------------------------------------------
# © Copyright 2000-2011 by Alex Peeters [alex.peeters@citap.be]
# ----------------------------------------------------------------------------------------------------------
# 2011/mm/dd, v3.002.003, package ASNMTAP::Asnmtap::Plugins Object-Oriented Perl
# ----------------------------------------------------------------------------------------------------------
package ASNMTAP::Asnmtap::Plugins;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use strict;
use warnings; # Must be used in test mode only. This reduces a little process speed
#use diagnostics; # Must be used in test mode only. This reduces a lot of process speed
no warnings 'deprecated';
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
use Carp qw(carp);
use Time::HiRes qw(gettimeofday tv_interval);
# include the class files - - - - - - - - - - - - - - - - - - - - - - - -
use ASNMTAP::Asnmtap qw(:ASNMTAP :COMMANDS :_HIDDEN :PLUGINS);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BEGIN {
use Exporter ();
@ASNMTAP::Asnmtap::Plugins::ISA = qw(Exporter ASNMTAP::Asnmtap);
%ASNMTAP::Asnmtap::Plugins::EXPORT_TAGS = (ALL => [ qw($APPLICATION $BUSINESS $DEPARTMENT $COPYRIGHT $SENDEMAILTO
$CAPTUREOUTPUT
$PREFIXPATH $LOGPATH $PIDPATH $PERL5LIB $MANPATH $LD_LIBRARY_PATH
$ALARM_OFF %ERRORS %STATE %TYPE
$CHATCOMMAND $DIFFCOMMAND $KILLALLCOMMAND $PERLCOMMAND $PPPDCOMMAND $ROUTECOMMAND $RSYNCCOMMAND $SCPCOMMAND $SSHCOMMAND
&_checkAccObjRef
&_checkSubArgs0 &_checkSubArgs1 &_checkSubArgs2
&_checkReadOnly0 &_checkReadOnly1 &_checkReadOnly2
&_dumpValue
$PLUGINPATH) ],
PLUGINS => [ qw($APPLICATION $BUSINESS $DEPARTMENT $COPYRIGHT $SENDEMAILTO
$CAPTUREOUTPUT
$PREFIXPATH $PLUGINPATH $LOGPATH $PIDPATH $PERL5LIB $MANPATH $LD_LIBRARY_PATH
%ERRORS %STATE %TYPE) ],
COMMANDS => [ qw($CHATCOMMAND $DIFFCOMMAND $KILLALLCOMMAND $PERLCOMMAND $PPPDCOMMAND $ROUTECOMMAND $RSYNCCOMMAND $SCPCOMMAND $SSHCOMMAND) ],
_HIDDEN => [ qw(&_checkAccObjRef
&_checkSubArgs0 &_checkSubArgs1 &_checkSubArgs2
&_checkReadOnly0 &_checkReadOnly1 &_checkReadOnly2
&_dumpValue) ] );
@ASNMTAP::Asnmtap::Plugins::EXPORT_OK = ( @{ $ASNMTAP::Asnmtap::Plugins::EXPORT_TAGS{ALL} } );
$ASNMTAP::Asnmtap::Plugins::VERSION = do { my @r = (q$Revision: 3.002.003$ =~ /\d+/g); sprintf "%d."."%03d" x $#r, @r };
}
our $ALARM_OFF = 0;
# Constructor & initialisation - - - - - - - - - - - - - - - - - - - - -
sub _init {
$_[0]->SUPER::_init($_[1]);
carp ('ASNMTAP::Asnmtap::Plugins: _init') if ( $_[0]->{_debug} );
# --httpdump & --dumphttp tijdelijk voor backwards compatibiliteit !!!
$_[0]->{_programUsageSuffix} = ' [-S|--status N] [-A|asnmtapEnv [F|T]|[F|T]|[F|T]] [-O|onDemand F|T|N|Y] [-L|--logging <LOGGING>] [-D|--debugfile|--httpdump|--dumphttp <DEBUGFILE>] [-d|--debug F|T|L|M|A|S] '. $_[0]->{_programUsageSuffix};
$_[0]->{_programHelpSuffix} = "
-S, --status=N
N(agios) : Nagios custom plugin output (default)
-A, --asnmtapEnv=[F|T]|[F|T]|[F|T]
F(alse) : all screendebugging off (default)
T(true) : all screendebugging on
|
F(alse) : all file debugging off (default)
T(true) : all file debugging on
|
F(alse) : nok file debugging off (default)
T(true) : nok file debugging on
-O, --onDemand=F|T|N|Y
F(alse)/N(o) : normal plugin execution (default)
T(true)/Y(es) : plugin launched on demand
-L, --logging=LOGGING
write logging to file LOGGING
-D, --debugfile, --httpdump, --dumphttp=DEBUGFILE
write debug to file DEBUGFILE
-d, --debug=F|T|L|M|A|S
F(alse) : screendebugging off (default)
T(true) : normal screendebugging on
L(ong) : long screendebugging on
M(oderator) : long screendebugging on for Moderators
A(dmin) : long screendebugging on for Admins
S(erver Admin): long screendebugging on for Server Admins
" . $_[0]->{_programHelpSuffix};
push ( @{ $_[0]->{_programGetOptions} }, 'status|S:s', 'asnmtapEnv|A:s', 'onDemand|O:s', 'logging|L:s', 'debugfile|D|dumphttp|httpdump:s', 'debug|d:s' );
my ($_programUsageSuffix, $_programHelpSuffix);
foreach ( @{ $_[0]->{_programGetOptions} } ) {
lib/ASNMTAP/Asnmtap/Plugins.pm view on Meta::CPAN
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$_[0]->pluginValues ( { stateValue => $ERRORS{UNKNOWN}, error => 'HELP, THERE IS A PROBLEM WITH THE PLUGIN' }, $TYPE{APPEND} ) if ( $_[0]->{_pluginValues}->{stateValue} == $ERRORS{DEPENDENT} or ( exists $_[0]->{_exit_} and $_[0]->{_exit_} == 2 ) );
$_[0]->appendPerformanceData('Status='. $_[0]->{_pluginValues}->{stateValue} .';1;2;0;3') if ( defined $_[1] && $_[1] =~ /^[1357]$/ );
my $duration = $_[0]->setEndTime_and_getResponsTime ($_[0]->{_pluginValues}->{startTime});
$_[0]->appendPerformanceData('Compilation='. ($_[0]->setEndTime_and_getResponsTime ($^T) - $duration) .'ms;;;0;') if ( $_[1] =~ /^[2367]$/ );
if ( $_[0]->{_getOptionsArgv}->{trendline} ) {
my $responseTimeSeconds = ( $duration / 1000 ); # convert to seconds
if ( $_[0]->{_getOptionsValues}->{debug} ) {
my ($startTimeEpoch, undef) = split (/\./, $_[0]->{_pluginValues}->{startTime});
my ($endTimeEpoch, undef) = split (/\./, $_[0]->{_pluginValues}->{endTime});
print "\nStart time : ", scalar(localtime($startTimeEpoch)), "\n";
print "End time : ", scalar(localtime($endTimeEpoch)), "\n";
print "Trendline : ". $_[0]->{_getOptionsArgv}->{trendline} ."\n";
print "Response time: $responseTimeSeconds\n";
}
if ( $_[0]->{_pluginValues}->{stateValue} ) {
$_[0]->appendPerformanceData('Trendline='. $responseTimeSeconds .'s;;;;');
} else {
$_[0]->appendPerformanceData('Trendline='. $responseTimeSeconds .'s;'. $_[0]->{_getOptionsArgv}->{trendline} .';;;');
$_[0]->{_pluginValues}->{alert} = "Response time $responseTimeSeconds > trendline ". $_[0]->{_getOptionsArgv}->{trendline} if ( $responseTimeSeconds > $_[0]->{_getOptionsArgv}->{trendline} );
}
} else {
$_[0]->appendPerformanceData('Duration='. $duration .'ms;;;0;') if ( $_[1] =~ /^[2367]$/ );
}
$_[0]->{_pluginValues}->{alert} =~ s/^\s+//g if ( defined $_[0]->{_pluginValues}->{alert} );
if ( $_[0]->{_getOptionsValues}->{debug} ) {
print "\nStatus : ". $_[0]->{_getOptionsArgv}->{status} ."\n" if ( defined $_[0]->{_getOptionsArgv}->{status} );
print "Debug : ". $_[0]->{_getOptionsValues}->{debug} ."\n" if ( defined $_[0]->{_getOptionsValues}->{debug} );
print "Logging : ". $_[0]->{_getOptionsArgv}->{logging} ."\n" if ( defined $_[0]->{_getOptionsArgv}->{logging} );
print "Httpdump : ". $_[0]->{_getOptionsArgv}->{debugfile} ."\n" if ( defined $_[0]->{_getOptionsArgv}->{debugfile} );
print "State : ". $_[0]->{_pluginValues}->{stateError} ."\n" if ( defined $_[0]->{_pluginValues}->{stateError} );
print "Message : ". $_[0]->{_pluginValues}->{message} ."\n" if ( defined $_[0]->{_pluginValues}->{message} );
print "Alert : ". $_[0]->{_pluginValues}->{alert} ."\n" if ( defined $_[0]->{_pluginValues}->{alert} );
print "Error : ". $_[0]->{_pluginValues}->{error} ."\n" if ( defined $_[0]->{_pluginValues}->{error} );
print "\n";
}
my $returnMessage = $_[0]->{_pluginValues}->{stateError} .' - '. $_[0]->{_pluginValues}->{message} .':';
$returnMessage .= ' '. $_[0]->{_pluginValues}->{alert} if ( $_[0]->{_pluginValues}->{alert} );
$returnMessage .= ' ERROR: '. $_[0]->{_pluginValues}->{error} if (defined $_[0]->{_pluginValues}->{error});
$_[0]->appendPerformanceData('Execution='. $_[0]->setEndTime_and_getResponsTime ($^T) .'ms;;;0;') if ( $_[1] =~ /^[2367]$/ );
if ( defined $_[0]->{_pluginValues}->{performanceData} ) {
$_[0]->{_pluginValues}->{performanceData} =~ s/^\s+//g;
$returnMessage .= '|'. $_[0]->{_pluginValues}->{performanceData};
}
if ( $_[0]->{_getOptionsArgv}->{logging} ) {
unless ( $CAPTUREOUTPUT ) {
my $loggedStatus = ( $_[0]->{_getOptionsArgv}->{debugfile} ) ? $_[0]->{_getOptionsArgv}->{debugfile} : $_[0]->{_getOptionsArgv}->{logging};
$loggedStatus .= "-status.txt";
my $rvOpen = open( LOGGING, ">$loggedStatus" );
if ($rvOpen) {
print LOGGING "$returnMessage\n";
close(LOGGING);
} else {
print "Cannot open $loggedStatus to print debug information\n";
}
}
if ( $_[0]->{_getOptionsValues}->{boolean_debug_all} ) {
my $rvOpen = open ( LOGGING, '>>'. $_[0]->{_getOptionsArgv}->{logging} .'-all.txt' );
if ($rvOpen) {
print LOGGING "--> $returnMessage\n";
print LOGGING ' -> '. $_[0]->{_pluginValues}->{error} ."\n" if ( $_[0]->{_pluginValues}->{error} ne 'SUCCESS' );
close(LOGGING);
} else {
print 'Cannot open '. $_[0]->{_getOptionsArgv}->{logging} ."-all.txt to print debug information\n";
}
}
if ( $_[0]->{_getOptionsValues}->{boolean_debug_NOK} ) {
if ( $_[0]->{_pluginValues}->{stateValue} ) {
my $rvOpen = open ( LOGGING, '>'. $_[0]->{_getOptionsArgv}->{logging} .'-nok.txt' );
if ( $rvOpen ) {
print LOGGING "--> $returnMessage\n";
print LOGGING ' -> '. $_[0]->{_pluginValues}->{error} ."\n";
print LOGGING ' > '. $_[0]->{_pluginValues}->{result} ."\n";
close(LOGGING);
} else {
print "Cannot open ". $_[0]->{_getOptionsArgv}->{logging} ."-nok.txt to print debug information\n";
}
}
}
}
$_[0]->dumpData (1) if ( $_[0]->getOptionsArgv ('dumpData') );
print "$returnMessage\n" if ( $_[0]->{_plugins} );
$_[0]->{_exit_} = 1;
exit $ERRORS { $_[0]->{_pluginValues}->{stateError} };
}
# Destructor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub DESTROY {
print (ref ($_[0]), "::DESTROY: ()\n") if ( $_[0]->{_debug} );
if ( exists $_[0]->{_pluginValues} ) {
unless ( exists $_[0]->{_exit_} and $_[0]->{_exit_} == 1 ) {
$_[0]->{_exit_} = 2;
$_[0]->exit(0);
}
}
( run in 0.547 second using v1.01-cache-2.11-cpan-39bf76dae61 )