ASNMTAP
view release on metacpan or search on metacpan
- collector.pl & importDataThroughCatalog.pl
- NEW functions DBI_connect, DBI_do and DBI_execute
- display.pl
- ADDED CLOSECLICK & STICKY to force users to click on "Close" to close sticky popups
- RSYNC
TODO --exclude=*-status.txt
Version 3.001.002, 2010/01/05, by Alex Peeters
- NEW record_navigation_bar_alpha
- change all record id > 0 for the 'auto_increment'
'1' into this example, verify first and if needed replace '1' with correct value
at 'displayGroups, holidaysBundle, reports & timeperiods'
holidaysBundle:
---------------
ALTER TABLE `plugins` CHANGE COLUMN `holidayBundleID` `holidayBundleID` int(11) default '1'
SET FOREIGN_KEY_CHECKS=0
UPDATE `holidaysBundle` SET `holidayBundleID` = '1' where `holidayBundleID` = '0'
UPDATE `plugins` SET `holidayBundleID` = '1' where `holidayBundleID` = '0'
SET FOREIGN_KEY_CHECKS=1
displayGroups:
--------------
- NEW table `timeperiods`
asnmtap-3.000.013-distributed.sql
- NEW example for distributed monitoring
- add `timeperiodID` int(11) NOT NULL default '1' at table reports
- add KEY `timeperiodID` (`timeperiodID`), at table reports
- add CONSTRAINT `reports_ibfk_2` FOREIGN KEY (`timeperiodID`) REFERENCES `timeperiods` (`timeperiodID`) at table reports
- UPDATE replace 'KEY `pagedir` (`pagedir`),' with 'UNIQUE KEY `pagedir` (`pagedir`),' at table displayDaemons
comments.pl
- FIX regarding 'Please re-enter entry date/time: Date/Time are into the future!'
- FIX regarding 'Please re-enter solved date/time: Date/Time are into the future!'
crontab verify disable email when ...
- By default cron jobs sends a email to the user account executing the cronjob.
Because this is not needed we put the following command At the end of the cron job line.
'> /dev/null (default)' or '> /dev/null 2>&1'
detailedStatisticsReportGenerationAndCompareResponsetimeTrends.pl, generateChart.pl & htmlToPdf.pl
- add my $timeperiodID = (defined $cgi->param('timeperiodID')) ? $cgi->param('timeperiodID') : 'none';
display.pl
- add -c, --creationTime=<YYYY-MM-DD HH:MM:SS>, YYYY-MM-DD HH:MM:SS: year, month, day, hours, minutes and seconds to use instead of the current time when --loop = F
- add sort results by status, group, comments and then by time
- FIX <\\/embed> added
- FIX stop caching sound during refresh when sound off
- UPDATE holidayBundleSetDowntimes.sh
/applications/sbin/
- NEW bash_stop_root.sh
- UPDATE perfparse_crontab.sh
/plugins/templates/
- UPDATE check_MySQL-database-replication.pl
ASNMTAP::Asnmtap
- replace '#!/usr/bin perl' with '#!/usr/local/bin/perl'
ASNMTAP::Asnmtap::Applications
- FIX <\\/embed> added
- FIX verify empty cgisess file at get_session_param () used by archive.pl
- added Birthday, Firework, Halloween, Snowflake, Valentine, ... for view '/asnmtap/nav/index' or '/asnmtap/nav/test'
NEW applications/htmlroot/JSFX_Browser.js
NEW applications/htmlroot/JSFX_Falling.js
NEW applications/htmlroot/JSFX_Fireworks.js
NEW applications/htmlroot/JSFX_Fireworks2.js
NEW applications/htmlroot/JSFX_Halloween.js
NEW applications/htmlroot/JSFX_Layer.js
ASNMTAP::Asnmtap::Applications::CGI
- NEW timeperiods.pl
ASNMTAP::Asnmtap::Plugins and ASNMTAP::Asnmtap::Plugins::WebTransact
displayDaemons.pl
- add 'ServerID' into general view
detailedStatisticsReportGenerationAndCompareResponsetimeTrends.pl
- add a checkbox, to choose output destination: HTML/PDF
getArchivedReport.pl & getArchivedResults.pl
- YYYY/MM/DD notatie met voorloopnullen voor maand en dag
generateConfig.pl
- check for 'help plugin filenames' without plugin reference
- check for plugins without or with missing 'help plugin filename'
- looking after existing plugins that are not defined into the database plugins
- verify that the defined plugins into the table plugins, exists and are executable
- generate automatic the Rsync Mirror Distributed & Failover Scripts / Collector Daemon
generateReports.pl
ATTENTION --> - tested with HTMLDOC v1.8.27 and added --user-password password support
- een plugin die disabled is waarvoor een rapport gevraagd wordt niet uitvoeren
- specify F for --daysAfter means that the specified date will be used as the reportdate
generateReports.pl & generateCollectorDaemonSchedulingReports.pl
- ... already generated / will be generated
- ... generated / generation failed
generatedReports.pl, plugins & reports.pl
- remove 'reportTitle'
applications/display-test.pl view on Meta::CPAN
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my ($dchecklist, $dtest, $dfetch, $tinterval, $tgroep, $resultsdir, $ttest, $firstTimeslot, $lastTimeslot, $rvOpen);
my (@fetch, $dstart, $tstart, $start, $step, $names, $data, $rows, $columns, $line, $val, @vals);
my ($command, $tstatus, $tduration, $timeValue, $prevGroep, @multiarrayFullCondensedView, @multiarrayMinimalCondensedView);
my ($rv, $dbh, $sth, $lockString, $findString, $unlockString, $doChecklist, $timeCorrectie, $timeslot);
my ($groupFullView, $groupCondensedView, $emptyFullView, $emptyCondencedView, $emptyMinimalCondencedView, $itemFullCondensedView);
my ($checkOk, $checkSkip, $configNumber, $printCondensedView, $problemSolved, $verifyNumber, $inProgressNumber);
my ($playSoundInProgress, $playSoundPreviousStatus, $playSoundStatus, %tableSoundStatusCache);
my ($prevHour, $currHour, %timeperiodID_days, %catalogID_uKey_timeperiodID) = (-1, -1);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my $boolean_daemonQuit = 0;
my $boolean_signal_hup = 0;
my $boolean_daemonControl = $loop;
my $colspanDisplayTime = $NUMBEROFFTESTS+2;
applications/display-test.pl view on Meta::CPAN
# onClick: overlib(), onDblClick: nd() & toggleDiv()
$_exclaim = "<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=2 BGCOLOR=#000000><TR><TD BGCOLOR=#000080 WIDTH=100 ALIGN=RIGHT>Plugin</TD><TD BGCOLOR=#0000FF>$test</TD></TR>$popup<TR><TD BGCOLOR=#000080 WIDTH=100 ALIGN=RIGHT>Unique Key</TD><TD B...
my $exclaim = '<TD WIDTH="56"><a href="javascript:void(0);" onDblClick="nd(); return toggleDiv(\''.$catalogID_uniqueKey.'\');" onClick="return overlib(\''.$_exclaim.'\', CAPTION, \'Exclaim\', STICKY, CLOSECLICK, CAPCOLOR, \'#000000\', FGCOLOR, \'#...
my $_comment = ( defined $comment ? 'onmouseover="return overlib(\''.$comment.'\', CAPTION, \'Comments\', STICKY, CLOSECLICK, CAPCOLOR, \'#000000\', FGCOLOR, \'#000000\', BGCOLOR, \''.$COLORS{$statusOverlib}.'\', HAUTO, VAUTO, WIDTH, 692, OFFSETX, ...
my $comments = '<a href="'. $HTTPSURL .'/cgi-bin/comments.pl?pagedir='.$pagedir.'&pageset='.$pageset.'&debug=F&CGICOOKIE=1&action=listView&catalogID='.$catalogID.'&uKey='.$uniqueKey.'" target="_self" '.$_comment.'><IMG SRC="...
my $helpfile = (defined $help and $help eq '1') ? '<A HREF="'. $HTTPSURL .'/cgi-bin/getHelpPlugin.pl?pagedir='.$pagedir.'&pageset='.$pageset.'&debug=F&CGICOOKIE=1&catalogID='.$catalogID.'&uKey='.$uniqueKey.'" target="_self"><IMG...
$checkOk = $checkSkip = $printCondensedView = $problemSolved = $verifyNumber = 0;
$inProgressNumber = -1;
$itemFullCondensedView = ' <TR>'."\n".' '.$exclaim.$comments.$helpfile."\n";
if ( $catalogID ne $CATALOGID or defined $creationTime ) {
$itemFullCondensedView .= ' <TD class="ItemHeader">'.$groep. encode_html_entities('T', $test) .'</TD>'. "\n";
} else {
$itemFullCondensedView .= ' <TD class="ItemHeader">'.$groep.'<A HREF="#" class="ItemHeaderTest" onClick="openPngImage(\''. $RESULTSURL .'/'. $resultsdir .'/'. $command .'-'. $catalogID_uniqueKey ."-sql.html',912,576,null,null,'ChartDirector',1...
}
}
applications/display-test.pl view on Meta::CPAN
$debugInfo = $boldStart = $boldEnd = '';
if ($number == 0) {
$printCondensedView = 1 unless ( $status eq 'IN PROGRESS' or $status eq 'OK' or $status eq 'NO TEST' or $status eq 'OFFLINE' );
if ($ERRORS{$status} <= $ERRORS{UNKNOWN} or $ERRORS{$status} == $ERRORS{'NO DATA'}) { $playSoundStatus = ($playSoundStatus > $ERRORS{$status}) ? $playSoundStatus : $ERRORS{$status}; }
} else {
my $playSoundSet = 0;
unless ( $printCondensedView or $problemSolved or $checkSkip == $inProgressNumber) {
if ( $number == 1 ) {
$verifyNumber = $VERIFYNUMBEROK;
if ( $interval and $interval < $VERIFYMINUTEOK ) {
$verifyNumber = int($VERIFYMINUTEOK / $interval);
if ( $verifyNumber > $NUMBEROFFTESTS ) {
$verifyNumber = $NUMBEROFFTESTS;
} elsif ($verifyNumber < $VERIFYNUMBEROK) {
$verifyNumber = $VERIFYNUMBEROK;
}
}
$inProgressNumber = $verifyNumber;
if ( $verifyNumber < $NUMBEROFFTESTS ) {
$debugInfo .= "a-" if ($debug);
$inProgressNumber++ if ( $status eq 'IN PROGRESS' );
}
if ( $status eq 'IN PROGRESS' ) {
$playSoundInProgress = 1;
} else {
$playSoundPreviousStatus = $ERRORS{$status};
}
}
applications/display-test.pl view on Meta::CPAN
if ( $number <= $inProgressNumber ) {
$debugInfo .= "b-" if ($debug);
$checkOk++ if ( $status eq 'OK' );
if ( $notDowntimeOrPersistent and ($status eq 'IN PROGRESS' or $status eq 'OK' or $status eq 'NO TEST' or $status eq 'OFFLINE' ) ) {
$checkSkip++ unless ( $acked and $status eq 'NO TEST' );
} else {
$printCondensedView = 1
}
} elsif ( $checkOk < $verifyNumber ) {
$debugInfo .= "c-" if ($debug);
$printCondensedView = ( $checkSkip == $inProgressNumber ) ? 0 : 1;
}
if ( $checkOk >= $verifyNumber ) {
$debugInfo .= "s-" if ($debug);
$problemSolved = 1;
}
$printCondensedView = 0 if ($downtime and ! $persistent);
$debugInfo .= "$inIMW-$instability-$persistent-$downtime-$inProgressNumber-$verifyNumber-$checkOk-$checkSkip-$printCondensedView-$problemSolved-" if ($debug);
my $update = 0;
my $sqlWhere = '';
if ( $persistent == 0 ) {
if ( $problemSolved ) {
if ($solvedTimeslot > $activationTimeslot and ! $downtime) {
$sqlWhere = ' and persistent="0" and "' .$solvedTimeslot. '">activationTimeslot';
$update = 1;
}
applications/display.pl view on Meta::CPAN
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my ($dchecklist, $dtest, $dfetch, $tinterval, $tgroep, $resultsdir, $ttest, $firstTimeslot, $lastTimeslot, $rvOpen);
my (@fetch, $dstart, $tstart, $start, $step, $names, $data, $rows, $columns, $line, $val, @vals);
my ($command, $tstatus, $tduration, $timeValue, $prevGroep, @multiarrayFullCondensedView, @multiarrayMinimalCondensedView);
my ($rv, $dbh, $sth, $lockString, $findString, $unlockString, $doChecklist, $timeCorrectie, $timeslot);
my ($groupFullView, $groupCondensedView, $emptyFullView, $emptyCondencedView, $emptyMinimalCondencedView, $itemFullCondensedView);
my ($checkOk, $checkSkip, $configNumber, $printCondensedView, $problemSolved, $verifyNumber, $inProgressNumber);
my ($playSoundInProgress, $playSoundPreviousStatus, $playSoundStatus, %tableSoundStatusCache);
my ($prevHour, $currHour, %timeperiodID_days, %catalogID_uKey_timeperiodID) = (-1, -1);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my $boolean_daemonQuit = 0;
my $boolean_signal_hup = 0;
my $boolean_daemonControl = $loop;
my $colspanDisplayTime = $NUMBEROFFTESTS+2;
applications/display.pl view on Meta::CPAN
# onClick: overlib(), onDblClick: nd() & toggleDiv()
$_exclaim = "<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=2 BGCOLOR=#000000><TR><TD BGCOLOR=#000080 WIDTH=100 ALIGN=RIGHT>Plugin</TD><TD BGCOLOR=#0000FF>$test</TD></TR>$popup<TR><TD BGCOLOR=#000080 WIDTH=100 ALIGN=RIGHT>Unique Key</TD><TD B...
my $exclaim = '<TD WIDTH="56"><a href="javascript:void(0);" onDblClick="nd(); return toggleDiv(\''.$catalogID_uniqueKey.'\');" onClick="return overlib(\''.$_exclaim.'\', CAPTION, \'Exclaim\', STICKY, CLOSECLICK, CAPCOLOR, \'#000000\', FGCOLOR, \'#...
my $_comment = ( defined $comment ? 'onmouseover="return overlib(\''.$comment.'\', CAPTION, \'Comments\', STICKY, CLOSECLICK, CAPCOLOR, \'#000000\', FGCOLOR, \'#000000\', BGCOLOR, \''.$COLORS{$statusOverlib}.'\', HAUTO, VAUTO, WIDTH, 692, OFFSETX, ...
my $comments = '<a href="'. $HTTPSURL .'/cgi-bin/comments.pl?pagedir='.$pagedir.'&pageset='.$pageset.'&debug=F&CGICOOKIE=1&action=listView&catalogID='.$catalogID.'&uKey='.$uniqueKey.'" target="_self" '.$_comment.'><IMG SRC="...
my $helpfile = (defined $help and $help eq '1') ? '<A HREF="'. $HTTPSURL .'/cgi-bin/getHelpPlugin.pl?pagedir='.$pagedir.'&pageset='.$pageset.'&debug=F&CGICOOKIE=1&catalogID='.$catalogID.'&uKey='.$uniqueKey.'" target="_self"><IMG...
$checkOk = $checkSkip = $printCondensedView = $problemSolved = $verifyNumber = 0;
$inProgressNumber = -1;
$itemFullCondensedView = ' <TR>'."\n".' '.$exclaim.$comments.$helpfile."\n";
if ( $catalogID ne $CATALOGID or defined $creationTime ) {
$itemFullCondensedView .= ' <TD class="ItemHeader">'.$groep. encode_html_entities('T', $test) .'</TD>'. "\n";
} else {
$itemFullCondensedView .= ' <TD class="ItemHeader">'.$groep.'<A HREF="#" class="ItemHeaderTest" onClick="openPngImage(\''. $RESULTSURL .'/'. $resultsdir .'/'. $command .'-'. $catalogID_uniqueKey ."-sql.html',912,576,null,null,'ChartDirector',1...
}
}
applications/display.pl view on Meta::CPAN
$debugInfo = $boldStart = $boldEnd = '';
if ($number == 0) {
$printCondensedView = 1 unless ( $status eq 'IN PROGRESS' or $status eq 'OK' or $status eq 'NO TEST' or $status eq 'OFFLINE' );
if ($ERRORS{$status} <= $ERRORS{UNKNOWN} or $ERRORS{$status} == $ERRORS{'NO DATA'}) { $playSoundStatus = ($playSoundStatus > $ERRORS{$status}) ? $playSoundStatus : $ERRORS{$status}; }
} else {
my $playSoundSet = 0;
unless ( $printCondensedView or $problemSolved or $checkSkip == $inProgressNumber) {
if ( $number == 1 ) {
$verifyNumber = $VERIFYNUMBEROK;
if ( $interval and $interval < $VERIFYMINUTEOK ) {
$verifyNumber = int($VERIFYMINUTEOK / $interval);
if ( $verifyNumber > $NUMBEROFFTESTS ) {
$verifyNumber = $NUMBEROFFTESTS;
} elsif ($verifyNumber < $VERIFYNUMBEROK) {
$verifyNumber = $VERIFYNUMBEROK;
}
}
$inProgressNumber = $verifyNumber;
if ( $verifyNumber < $NUMBEROFFTESTS ) {
$debugInfo .= "a-" if ($debug);
$inProgressNumber++ if ( $status eq 'IN PROGRESS' );
}
if ( $status eq 'IN PROGRESS' ) {
$playSoundInProgress = 1;
} else {
$playSoundPreviousStatus = $ERRORS{$status};
}
}
applications/display.pl view on Meta::CPAN
if ( $number <= $inProgressNumber ) {
$debugInfo .= "b-" if ($debug);
$checkOk++ if ( $status eq 'OK' );
if ( $notDowntimeOrPersistent and ($status eq 'IN PROGRESS' or $status eq 'OK' or $status eq 'NO TEST' or $status eq 'OFFLINE' ) ) {
$checkSkip++ unless ( $acked and $status eq 'NO TEST' );
} else {
$printCondensedView = 1
}
} elsif ( $checkOk < $verifyNumber ) {
$debugInfo .= "c-" if ($debug);
$printCondensedView = ( $checkSkip == $inProgressNumber ) ? 0 : 1;
}
if ( $checkOk >= $verifyNumber ) {
$debugInfo .= "s-" if ($debug);
$problemSolved = 1;
}
$printCondensedView = 0 if ($downtime and ! $persistent);
$debugInfo .= "$inIMW-$instability-$persistent-$downtime-$inProgressNumber-$verifyNumber-$checkOk-$checkSkip-$printCondensedView-$problemSolved-" if ($debug);
my $update = 0;
my $sqlWhere = '';
if ( $persistent == 0 ) {
if ( $problemSolved ) {
if ($solvedTimeslot > $activationTimeslot and ! $downtime) {
$sqlWhere = ' and persistent="0" and "' .$solvedTimeslot. '">activationTimeslot';
$update = 1;
}
lib/ASNMTAP/Asnmtap/Applications.pod view on Meta::CPAN
=item Testing configuration
http://asnmtap.citap.be/asnmtap/cgi-bin/perfparse.cgi
> An error occured with the SQL:
> "Could not connect to MySQL using: Database = 'asnmtap', Host = '127.0.0.1', Username = 'asnmtap', Password = 'asnmtap'"
>
> Failure Message:
> "Access denied for user: 'asnmtap@localhost.localdomain' (Using password: YES)"
You need to verify your access right for the database
Host & Service string from Nagios:
"$TIMET$"\t"$HOSTNAME$"\t"$SERVICEDESC$"\t"$OUTPUT$"\t"$SERVICESTATE$"\t"$PERFDATA$"\n
$TIMET$ $HOSTNAME$ $SERVICEDESC$ $OUTPUT$ $SERVICESTATE$ $PERFDATA$
1107692805 chablis.dvkhosting.com process ColdFusion OK - 40 processes running with command name cfusion OK label=1;2;3;4;5
Test ASNMTAP Perfparse integration:
/usr/bin/printf "%b" "1107692900\tDUMMY-T1\tDUMMY-T1\tCRITICAL - Check Dummy: +DUMMY-T2+\tCRITICAL\ttperfdata=1;1;;;\n" | /opt/asnmtap/perfparse/bin/perfparse-log2mysql -c /opt/asnmtap/perfparse/etc/perfparse.cfg
plugins/nagios/templates/check_template-ldap.pl view on Meta::CPAN
print "\nDN: $dn\n" if ($debug);
if ($debug >= 2) {
my $entry = $messageLDAP->entry(0);
foreach my $attribute ($entry->attributes) { print $attribute, ": ", $entry->get_value($attribute), "\n"; }
}
$ldap->unbind();
if ($dn ne '' && defined $PASS && $PASS ne '') {
# Now let's verify the authentication credentials, by rebinding with the users DN and password.
my $ldap = Net::LDAP->new ($ldapserver, port => $ldapport, version => 2) or $returnValue = 0;
if ($returnValue) {
$messageLDAP = $ldap->bind($dn, password => $PASS);
if (ldapStatusOk ('Wrong username or password', $messageLDAP, $debug)) {
$ldap->unbind();
$objectNagios->pluginValues ( { stateValue => $ERRORS{OK}, alert => "Search and Authentication is good" }, $TYPE{APPEND} );
}
} else {
( run in 0.415 second using v1.01-cache-2.11-cpan-5467b0d2c73 )