ASNMTAP
view release on metacpan or search on metacpan
plugins/snmptt/check_SNMPTT_probe.pl view on Meta::CPAN
my $community = $objectPlugins->getOptionsArgv ('community') ? $objectPlugins->getOptionsArgv ('community') : '';
$objectPlugins->printUsage ('Missing command line argument community') unless ( defined $community);
my $hostname = $objectPlugins->getOptionsArgv ('host');
my $eventname = 'ucdStart';
my $category = 'Status Events';
my $severity = 'OK';
my $formatline = 'This trap could in principle be sent when the agent start (ASNMTAP-CONTROL-SNMPTT-TRAP)';
my $environment = $objectPlugins->getOptionsArgv ('environment');
my $debug = $objectPlugins->getOptionsValue ('debug');
my $onDemand = $objectPlugins->getOptionsValue ('onDemand');
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my $serverHost = $objectPlugins->getOptionsArgv ('server') ? $objectPlugins->getOptionsArgv ('server') : 'localhost';
my $serverPort = $objectPlugins->getOptionsArgv ('port') ? $objectPlugins->getOptionsArgv ('port') : 3306;
my $serverUser = $objectPlugins->getOptionsArgv ('username') ? $objectPlugins->getOptionsArgv ('username') : 'asnmtap';
my $serverPass = $objectPlugins->getOptionsArgv ('password') ? $objectPlugins->getOptionsArgv ('password') : '<PASSWORD>';
my $serverDb = $objectPlugins->getOptionsArgv ('database') ? $objectPlugins->getOptionsArgv ('database') : 'snmptt';
my $serverTact = 'snmptt';
my $serverTarc = 'snmptt_archive';
my $outOffDate = 300; # seconds
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my $message = $objectPlugins->pluginValue ('message') .' for host '. $hostname;
$objectPlugins->pluginValue ( message => $message );
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my $snmptrap = 'snmptrap -v 2c -c '. $community .' '. $hostname .':162 "" ucdStart sysContact.0 s "ASNMTAP-CONTROL-SNMPTT-TRAP"';
print "$snmptrap\n" if ( $debug );
if ( $objectPlugins->call_system ( $snmptrap, 1 ) ) {
$objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => 'ASNMTAP CONTROL SNMPTT TRAPs not sended' }, $TYPE{APPEND} );
$objectPlugins->exit (7);
}
# Amount of time in seconds to sleep between processing spool files + 2 (snmptt.ini)
sleep 7;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my ($dbh, $sth, $sthDO, $rv, $query);
$rv = 1;
$dbh = DBI->connect ( "dbi:mysql:$serverDb:$serverHost:$serverPort", "$serverUser", "$serverPass" ) or $rv = errorTrapDBI ( \$objectPlugins, 'Sorry, cannot connect to the database' );
if ( $dbh and $rv ) {
my ($id, $eventid, $trapoid, $enterprise, $agentip, $uptime, $traptime, $system_running_SNMPTT, $trapread);
# $query = "SELECT SQL_NO_CACHE id, eventid, trapoid, enterprise, agentip, uptime, traptime, system_running_SNMPTT, trapread FROM `$serverTact` WHERE system_running_SNMPTT='$hostname' and community='$community' and eventname='$eventname' and category...
$query = "SELECT SQL_NO_CACHE id, eventid, trapoid, enterprise, agentip, uptime, traptime, system_running_SNMPTT, trapread FROM `$serverTact` WHERE system_running_SNMPTT='$hostname' and community='' and eventname='$eventname' and category='$categor...
print $query, "\n" if ( $debug );
$sth = $dbh->prepare($query) or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot dbh->prepare: '. $query ) if ( $rv );
$rv = $sth->execute() or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot sth->execute: '. $query ) if ( $rv );
$sth->bind_columns( \$id, \$eventid, \$trapoid, \$enterprise, \$agentip, \$uptime, \$traptime, \$system_running_SNMPTT, \$trapread ) or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot sth->bind_columns: '. $query ) if ( $rv );
if ( $rv ) {
if ( $sth->rows() ) {
my $firstTrap;
while( $sth->fetch() ) {
if ( $debug >= 2 ) {
print "\nid : $id\neventname : $eventname\neventid : $eventid\ntrapoid : $trapoid\nenterprise : $enterprise\ncommunity : $community\nhostname : $hostname\nagentip : $agentip\ncategory : $category\nse...
} elsif ( $debug ) {
print "\n$id, $eventname, $eventid, $trapoid, $enterprise, $community, $hostname, $agentip, $category, $severity, $uptime, $traptime, $formatline, $system_running_SNMPTT, $trapread\n";
}
unless ( defined $firstTrap ) {
$firstTrap = 1;
my $currentTimeslot = timelocal ( 0, (localtime)[1,2,3,4,5] );
use Date::Manip;
my $epochtime = UnixDate ( ParseDate ( $traptime ), "%s" );
if ($currentTimeslot - $epochtime > $outOffDate) {
my $alert .= ' - Data is out of date!';
$alert .= ' - From: ' .scalar(localtime($epochtime)). ' - Now: ' .scalar(localtime($currentTimeslot)) if ( $debug >= 2 );
$objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => $alert }, $TYPE{APPEND} );
} else {
$objectPlugins->pluginValues ( { stateValue => $ERRORS{OK}, alert => 'OK' }, $TYPE{APPEND} );
}
}
unless ( $onDemand ) {
my $sqlINSERT = "REPLACE INTO `$serverTarc` SELECT * FROM `$serverTact` WHERE id='$id'";
print " + $sqlINSERT\n" if ( $debug );
$dbh->do ( $sqlINSERT ) or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot dbh->do: '. $sqlINSERT );
my $sqlDELETE = "DELETE FROM `$serverTact` WHERE id='$id'";
print " - $sqlDELETE\n" if ( $debug );
$dbh->do( $sqlDELETE ) or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot dbh->do: '. $sqlDELETE );
}
}
} else {
$objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => 'ASNMTAP CONTROL SNMPTT TRAPs missing' }, $TYPE{APPEND} );
}
$sth->finish() or $rv = errorTrapDBI ( \$objectPlugins, 'Cannot sth->finish: '. $query );
}
$dbh->disconnect() or $rv = errorTrapDBI ( \$objectPlugins, 'The database $serverDb was unable to read your entry.' );
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# End plugin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$objectPlugins->exit (7);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub errorTrapDBI {
my ($asnmtapInherited, $error_message) = @_;
( run in 0.910 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )