mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
adding SNMP trap handling capability (yes it is horrible horrible right now!)
git-svn-id: http://www.observium.org/svn/observer/trunk@880 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -101,3 +101,4 @@ ALTER TABLE `links` CHANGE `src_if` `local_interface_id` INT( 11 ) NULL DEFAULT
|
||||
ALTER TABLE `links` CHANGE `vendor` `protocol` VARCHAR( 11 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
|
||||
ALTER TABLE `processors` CHANGE `processor_type` `processor_type` varchar(16) NOT NULL;
|
||||
ALTER TABLE `bgpPeers_cbgp` CHANGE `afi` `afi` VARCHAR( 16 ) NOT NULL , CHANGE `safi` `safi` VARCHAR( 16 ) NOT NULL;
|
||||
ALTER TABLE `eventlog` ADD `reference` VARCHAR( 64 ) NOT NULL AFTER `type`;
|
||||
|
@@ -817,6 +817,14 @@ function eventlog($eventtext,$device_id = "", $interface_id = "")
|
||||
mysql_query($event_query);
|
||||
}
|
||||
|
||||
function log_event($text, $device = NULL, $type = NULL, $reference = NULL) {
|
||||
$event_query = "INSERT INTO eventlog (host, reference, type, datetime, message) VALUES (" . ($device['device_id'] ? $device['device_id'] : "NULL");
|
||||
$event_query .= ", " . ($reference ? $reference : "NULL") . ", " . ($type ? $type : "NULL") . ", NOW(), '" . mres($text) . "')";
|
||||
echo($event_query . "\n");
|
||||
mysql_query($event_query);
|
||||
}
|
||||
|
||||
|
||||
function notify($device,$title,$message)
|
||||
{
|
||||
global $config;
|
||||
|
20
includes/snmptrap/linkDown.inc.php
Normal file
20
includes/snmptrap/linkDown.inc.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
$interface = mysql_fetch_array(mysql_query("SELECT * FROM `interfaces` WHERE `device_id` = '".$device['device_id']."' AND `ifIndex` = '".$entry[2]."'"));
|
||||
|
||||
if(!$interface) {exit;}
|
||||
|
||||
$ifOperStatus = "down";
|
||||
#$ifAdminStatus = "down";
|
||||
|
||||
log_event("SNMP Trap: linkDown " . $interface['ifDescr'], $device, "interface", $interface['interface_id']);
|
||||
|
||||
#if($ifAdminStatus != $interface['ifAdminStatus']) {
|
||||
# log_event("Interface Disabled : " . $interface['ifDescr'] . " (TRAP)", $device, "interface", $interface['interface_id']);
|
||||
#}
|
||||
if($ifOperStatus != $interface['ifOperStatus']) {
|
||||
log_event("Interface went Down : " . $interface['ifDescr'] . " (TRAP)", $device, "interface", $interface['interface_id']);
|
||||
mysql_query("UPDATE `interfaces` SET ifOperStatus = 'down' WHERE `interface_id` = '".$interface['interface_id']."'");
|
||||
}
|
||||
|
||||
?>
|
22
includes/snmptrap/linkUp.inc.php
Normal file
22
includes/snmptrap/linkUp.inc.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
$interface = mysql_fetch_array(mysql_query("SELECT * FROM `interfaces` WHERE `device_id` = '".$device['device_id']."' AND `ifIndex` = '".$entry[2]."'"));
|
||||
|
||||
if(!$interface) {exit;}
|
||||
|
||||
$ifOperStatus = "up";
|
||||
$ifAdminStatus = "up";
|
||||
|
||||
log_event("SNMP Trap: linkUp $ifAdminStatus/$ifOperStatus " . $interface['ifDescr'], $device, "interface", $interface['interface_id']);
|
||||
|
||||
if($ifAdminStatus != $interface['ifAdminStatus']) {
|
||||
log_event("Interface Enabled : " . $interface['ifDescr'] . " (TRAP)", $device, "interface", $interface['interface_id']);
|
||||
mysql_query("UPDATE `interfaces` SET ifAdminStatus = 'up' WHERE `interface_id` = '".$interface['interface_id']."'");
|
||||
}
|
||||
if($ifOperStatus != $interface['ifOperStatus']) {
|
||||
log_event("Interface went Up : " . $interface['ifDescr'] . " (TRAP)", $device, "interface", $interface['interface_id']);
|
||||
mysql_query("UPDATE `interfaces` SET ifOperStatus = 'up' WHERE `interface_id` = '".$interface['interface_id']."'");
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -82,7 +82,6 @@ if(!$config['graph_colours']['mixed']) {
|
||||
$config['version'] = "0.10.0";
|
||||
|
||||
$config['rrd_opts_array'] = explode(" ", trim($config['rrdgraph_def_text']));
|
||||
# print_r($config['rrd_opts_array']);
|
||||
|
||||
if($config['enable_nagios']) {
|
||||
$nagios_link = mysql_connect($config['nagios_db_host'], $config['nagios_db_user'], $config['nagios_db_pass']);
|
||||
|
30
snmptrap.php
Executable file
30
snmptrap.php
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
$entry = explode(",", $argv[1]);
|
||||
|
||||
print_r($entry);
|
||||
|
||||
$device = @mysql_fetch_array(mysql_query("SELECT * FROM devices WHERE `hostname` = '".$entry['0']."'"));
|
||||
|
||||
if(!$device['device_id']) {
|
||||
$device = @mysql_fetch_array(mysql_query("SELECT * FROM ipv4_addresses AS A, interfaces AS I WHERE
|
||||
A.ipv4_address = '" . $entry['0']."' AND I.interface_id = A.interface_id"));
|
||||
}
|
||||
if(!$device['device_id']) { exit; } else { }
|
||||
|
||||
print_r($device);
|
||||
|
||||
$file = $config['install_dir'] . "/includes/snmptrap/".$entry['1'].".inc.php";
|
||||
if(is_file($file)) { include("$file"); } else { echo("unknown trap ($file)"); exit; }
|
||||
|
||||
|
||||
?>
|
Reference in New Issue
Block a user