diff --git a/database-update.sql b/database-update.sql index 9fc03d32f..1db6c1719 100644 --- a/database-update.sql +++ b/database-update.sql @@ -13,3 +13,4 @@ ALTER TABLE `devices` ADD `serial` text default NULL; ALTER TABLE `temperature` CHANGE `temp_index` `temp_index` VARCHAR(32) NOT NULL; ALTER TABLE `ports` CHANGE `ifDescr` `ifDescr` VARCHAR(255) NOT NULL; CREATE TABLE IF NOT EXISTS `ucd_diskio` ( `diskio_id` int(11) NOT NULL AUTO_INCREMENT, `device_id` int(11) NOT NULL, `diskio_index` int(11) NOT NULL, `diskio_descr` varchar(32) NOT NULL, PRIMARY KEY (`diskio_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; +ALTER TABLE `eventlog` CHANGE `type` `type` VARCHAR( 64 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; diff --git a/discovery.php b/discovery.php index 43f9a63c3..172da90d7 100755 --- a/discovery.php +++ b/discovery.php @@ -61,6 +61,10 @@ if (file_exists('.svn')) $db_rev = 0; } + if ($dbu_rev+0 < "1223") { + include("fix-events.php"); ## Fix events table (needs to copy some data around, so needs script) + } + if ($dbu_rev+0 > $db_rev) { if($db_rev+0 < "1000") { diff --git a/fix-events.php b/fix-events.php new file mode 100755 index 000000000..c02805fd7 --- /dev/null +++ b/fix-events.php @@ -0,0 +1,19 @@ + + diff --git a/html/includes/device-edit.inc.php b/html/includes/device-edit.inc.php index 8f034f2bc..0dc9269af 100644 --- a/html/includes/device-edit.inc.php +++ b/html/includes/device-edit.inc.php @@ -1,15 +1,17 @@ "); } - echo(''); - if($entry['interface']) { - echo(generateiflink(getifbyid($entry['interface']))); - } - echo("" . htmlspecialchars($entry['message']) . " + if($entry['type'] == "interface") { + $entry['link'] = "".generateiflink(getifbyid($entry['reference'])).""; + } else { + $entry['link'] = "System"; + } + + echo("".$entry['link'].""); + + echo("".htmlspecialchars($entry['message']) . " "); diff --git a/html/includes/print-syslog.inc b/html/includes/print-syslog.inc index 4ab5d4335..56891038e 100644 --- a/html/includes/print-syslog.inc +++ b/html/includes/print-syslog.inc @@ -11,7 +11,7 @@ if(!is_integer($syslog_iter/2)) { $bg_colour = $list_colour_a; } else { $bg_colo echo(" "); - echo("" . $entry['date'] . ""); + echo("" . $entry['date'] . ""); $entry['hostname'] = shorthost($entry['hostname'], 20); diff --git a/html/pages/device/edit/device.inc.php b/html/pages/device/edit/device.inc.php index 6140f73e6..a0269b9a7 100644 --- a/html/pages/device/edit/device.inc.php +++ b/html/pages/device/edit/device.inc.php @@ -36,12 +36,22 @@ echo(" + + + + + + + + +
SNMP Community
-
SNMP Version
SNMP Port
+
Type diff --git a/html/pages/device/events.inc.php b/html/pages/device/events.inc.php index c20b41283..b77be64fa 100644 --- a/html/pages/device/events.inc.php +++ b/html/pages/device/events.inc.php @@ -2,7 +2,7 @@ $query = "SELECT *,DATE_FORMAT(datetime, '%D %b %Y %T') as humandate FROM `eventlog` WHERE `host` = '$_GET[id]' ORDER BY `datetime` DESC LIMIT 0,250"; $data = mysql_query($query); -echo(''); +echo('
'); while($entry = mysql_fetch_array($data)) { include("includes/print-event.inc"); diff --git a/html/pages/device/health/processors.inc.php b/html/pages/device/health/processors.inc.php index 2a2433386..4c7c70f9a 100644 --- a/html/pages/device/health/processors.inc.php +++ b/html/pages/device/health/processors.inc.php @@ -17,7 +17,7 @@ $text_descr = str_replace("DFC Card", "DFC", $text_descr); $proc_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$text_descr; - $proc_popup .= "
"; + $proc_popup .= ""; $proc_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; $perc = round($proc['processor_usage']); diff --git a/html/pages/device/overview.inc.php b/html/pages/device/overview.inc.php index 79af61c16..a6a8ac0ce 100644 --- a/html/pages/device/overview.inc.php +++ b/html/pages/device/overview.inc.php @@ -65,6 +65,19 @@ echo(" } +$sql = "SELECT *, DATE_FORMAT(timestamp, '%d/%b/%y %T') AS date from syslog WHERE device_id = '" . $_GET['id'] . "' $where"; +$sql .= " ORDER BY timestamp DESC LIMIT 20"; +$query = mysql_query($sql); + +if(mysql_affected_rows() > "0"){ + echo("
"); + echo("

Recent Syslog

"); + echo("
"); + while($entry = mysql_fetch_array($query)) { include("includes/print-syslog.inc"); } + echo("
"); + echo(""); +} + echo(""); echo("
"); diff --git a/html/pages/health/processors.inc.php b/html/pages/health/processors.inc.php index 781aa32ea..b38243ccf 100644 --- a/html/pages/health/processors.inc.php +++ b/html/pages/health/processors.inc.php @@ -24,7 +24,7 @@ $mini_url = $config['base_url'] . "/graph.php?id=".$proc['processor_id']."&type=processor&from=".$day."&to=".$now."&width=80&height=20&bg=f4f4f4"; $proc_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$text_descr; - $proc_popup .= "
"; + $proc_popup .= "
"; $proc_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; $perc = round($proc['processor_usage']); diff --git a/includes/functions.php b/includes/functions.php index 6f172ce61..12c9a4fed 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -727,6 +727,8 @@ function log_event($text, $device = NULL, $type = NULL, $reference = NULL) { global $debug; + if(!is_array($device)) { $device = device_by_id_cache($device); } + $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) . "')"; if ($debug) { echo($event_query . "\n"); } diff --git a/includes/polling/bgpPeer.inc.php b/includes/polling/bgpPeer.inc.php index ce339d162..add09f323 100755 --- a/includes/polling/bgpPeer.inc.php +++ b/includes/polling/bgpPeer.inc.php @@ -80,17 +80,17 @@ if ($device['os'] == "junos") if ($peer['bgpPeerState'] == $bgpPeerState) { mail($email, "BGP Session flapped: " . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ' - ' . $peer['astext'] . ')', "BGP Session flapped " . formatUptime($bgpPeerFsmEstablishedTime) . " ago.\n\nHostname : " . $device['hostname'] . "\nPeer IP : " . $peer['bgpPeerIdentifier'] . "\nRemote AS: " . $peer['bgpPeerRemoteAs'] . ' ('.$peer['astext'].')', $config['email_headers']); - eventlog('BGP Session Flap: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id']); + log_event('BGP Session Flap: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id'], 'bgpPeer', $bgpPeer_id); } else if ($bgpPeerState == "established") { mail($email, "BGP Session up: " . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ' - ' . $peer['astext'] . ')', "BGP Session up since " . formatUptime($bgpPeerFsmEstablishedTime) . ".\n\nHostname : " . $device['hostname'] . "\nPeer IP : " . $peer['bgpPeerIdentifier'] . "\nRemote AS: " . $peer['bgpPeerRemoteAs'] . ' ('.$peer['astext'].')', $config['email_headers']); - eventlog('BGP Session Up: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id']); + log_event('BGP Session Up: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id'], 'bgpPeer', $bgpPeer_id); } else if ($peer['bgpPeerState'] == "established") { mail($email, "BGP Session down: " . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ' - ' . $peer['astext'] . ')', "BGP Session down since " . formatUptime($bgpPeerFsmEstablishedTime) . ".\n\nHostname : " . $device['hostname'] . "\nPeer IP : " . $peer['bgpPeerIdentifier'] . "\nRemote AS: " . $peer['bgpPeerRemoteAs'] . ' ('.$peer['astext'].')', $config['email_headers']); - eventlog('BGP Session Down: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id']); + log_event('BGP Session Down: ' . $peer['bgpPeerIdentifier'] . ' (AS' . $peer['bgpPeerRemoteAs'] . ')', $device['device_id'], 'bgpPeer', $bgpPeer_id); } } } diff --git a/includes/polling/current.inc.php b/includes/polling/current.inc.php index ffb4822e6..b73fcf0b6 100644 --- a/includes/polling/current.inc.php +++ b/includes/polling/current.inc.php @@ -38,7 +38,7 @@ while($dbcurrent = mysql_fetch_array($current_data)) { $msg .= "A) at " . date($config['timestamp_format']); mail($email, "Current Alarm: " . $device['hostname'] . " " . $dbcurrent['current_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $dbcurrent['current_descr'] . "\n"); - eventlog('Current ' . $dbcurrent['current_descr'] . " under threshold: " . $current . " A (< " . $dbcurrent['current_limit_low'] . " A)", $device['device_id']); + log_event('Current ' . $dbcurrent['current_descr'] . " under threshold: " . $current . " A (< " . $dbcurrent['current_limit_low'] . " A)", $device['device_id'], 'current', $current['current_id']); } else if($dbcurrent['current_current'] < $dbcurrent['current_limit'] && $current >= $dbcurrent['current_limit']) { @@ -47,7 +47,7 @@ while($dbcurrent = mysql_fetch_array($current_data)) { $msg .= "A) at " . date($config['timestamp_format']); mail($email, "Current Alarm: " . $device['hostname'] . " " . $dbcurrent['current_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $dbcurrent['current_descr'] . "\n"); - eventlog('Current ' . $dbcurrent['current_descr'] . " above threshold: " . $current . " A (> " . $dbcurrent['current_limit'] . " A)", $device['device_id']); + log_event('Current ' . $dbcurrent['current_descr'] . " above threshold: " . $current . " A (> " . $dbcurrent['current_limit'] . " A)", $device['device_id'], 'current', $current['current_id']); } mysql_query("UPDATE current SET current_current = '$current' WHERE current_id = '" . $dbcurrent['current_id'] . "'"); diff --git a/includes/polling/fanspeeds.inc.php b/includes/polling/fanspeeds.inc.php index c48b2b81a..894cdc54d 100755 --- a/includes/polling/fanspeeds.inc.php +++ b/includes/polling/fanspeeds.inc.php @@ -33,7 +33,7 @@ while($fanspeed = mysql_fetch_array($fan_data)) { $msg .= "rpm) at " . date($config['timestamp_format']); mail($email, "Fan Alarm: " . $device['hostname'] . " " . $fanspeed['fan_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $fanspeed['fan_descr'] . "\n"); - eventlog('Fan speed ' . $fanspeed['fan_descr'] . " under threshold: " . $fanspeed['fan_current'] . " rpm (> " . $fanspeed['fan_limit'] . " rpm)", $device['device_id']); + log_event('Fan speed ' . $fanspeed['fan_descr'] . " under threshold: " . $fanspeed['fan_current'] . " rpm (> " . $fanspeed['fan_limit'] . " rpm)", $device['device_id'], 'fanspeed', $fanspeed['fan_id']); } mysql_query("UPDATE fanspeed SET fan_current = '$fan' WHERE fan_id = '" . $fanspeed['fan_id'] . "'"); diff --git a/includes/polling/frequencies.inc.php b/includes/polling/frequencies.inc.php index 17919aae2..95eb493c6 100644 --- a/includes/polling/frequencies.inc.php +++ b/includes/polling/frequencies.inc.php @@ -37,7 +37,7 @@ while($frequency = mysql_fetch_array($freq_data)) { $msg .= "Hz) at " . date($config['timestamp_format']); mail($email, "Frequency Alarm: " . $device['hostname'] . " " . $frequency['freq_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $frequency['freq_descr'] . "\n"); - eventlog('Frequency ' . $frequency['freq_descr'] . " under threshold: " . $freq . " Hz (< " . $frequency['freq_limit_low'] . " Hz)", $device['device_id']); + log_event('Frequency ' . $frequency['freq_descr'] . " under threshold: " . $freq . " Hz (< " . $frequency['freq_limit_low'] . " Hz)", $device['device_id'] , 'frequency', $frequency['freq_id']); } else if($frequency['freq_current'] < $frequency['freq_limit'] && $freq >= $frequency['freq_limit']) { @@ -46,7 +46,7 @@ while($frequency = mysql_fetch_array($freq_data)) { $msg .= "Hz) at " . date($config['timestamp_format']); mail($email, "Frequency Alarm: " . $device['hostname'] . " " . $frequency['freq_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $frequency['freq_descr'] . "\n"); - eventlog('Frequency ' . $frequency['freq_descr'] . " above threshold: " . $freq . " Hz (> " . $frequency['freq_limit'] . " Hz)", $device['device_id']); + log_event('Frequency ' . $frequency['freq_descr'] . " above threshold: " . $freq . " Hz (> " . $frequency['freq_limit'] . " Hz)", $device['device_id'], 'frequency', $frequency['freq_id']); } mysql_query("UPDATE frequency SET freq_current = '$freq' WHERE freq_id = '" . $frequency['freq_id'] . "'"); diff --git a/includes/polling/ports.inc.php b/includes/polling/ports.inc.php index ee6ad127c..f386a09ea 100755 --- a/includes/polling/ports.inc.php +++ b/includes/polling/ports.inc.php @@ -83,11 +83,11 @@ foreach ($data_oids as $oid) { if ( $port[$oid] != $this_port[$oid] && !isset($this_port[$oid])) { $update .= ", `$oid` = NULL"; - eventlog($oid . ": ".$port[$oid]." -> NULL", $device['device_id'], $port['interface_id']); + log_event($oid . ": ".$port[$oid]." -> NULL", $device['device_id'], 'interface', $port['interface_id']); if($debug) { echo($oid . ": ".$port[$oid]." -> NULL "); } else { echo($oid . " "); } } elseif ( $port[$oid] != $this_port[$oid] ) { $update .= ", `$oid` = '".mres($this_port[$oid])."'"; - eventlog($oid . ": ".$port[$oid]." -> " . $this_port[$oid], $device['device_id'], $port['interface_id']); + log_event($oid . ": ".$port[$oid]." -> " . $this_port[$oid], $device['device_id'], 'interface', $port['interface_id']); if($debug) { echo($oid . ": ".$port[$oid]." -> " . $this_port[$oid]." "); } else { echo($oid . " "); } } } @@ -106,7 +106,7 @@ if($port_ifAlias[$attrib] != $port[$attrib_key]) { $update .= ", `".$attrib_key."` = '".$port_ifAlias[$attrib]."'"; - eventlog($attrib . ": ".$port[$attrib_key]." -> " . $port_ifAlias[$attrib], $device['device_id'], $port['interface_id']); + log_event($attrib . ": ".$port[$attrib_key]." -> " . $port_ifAlias[$attrib], $device['device_id'], 'interface', $port['interface_id']); } } } @@ -167,7 +167,7 @@ if ( $this_port[$oid] != $port[$oid] ) { // If data has changed, build a query $update .= ", `$oid` = '".mres($this_port[$oid])."'"; echo("PAgP "); - eventlog("$oid -> ".$this_port[$oid], $device['device_id'], $port['interface_id']); + log_event("$oid -> ".$this_port[$oid], $device['device_id'], 'interface', $port['interface_id']); } } } diff --git a/includes/polling/temperatures.inc.php b/includes/polling/temperatures.inc.php index 56dd8a7de..776f64e20 100755 --- a/includes/polling/temperatures.inc.php +++ b/includes/polling/temperatures.inc.php @@ -40,7 +40,7 @@ while($temperature = mysql_fetch_array($temp_data)) { $msg .= ") at " . date($config['timestamp_format']); mail($email, "Temp Alarm: " . $device['hostname'] . " " . $temperature['temp_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $temperature['temp_descr'] . "\n"); - eventlog('Temperature ' . $temperature['temp_descr'] . " over threshold: " . $temp . " °C (> " . $temperature['temp_limit'] . " °C)", $device['device_id']); + log_event('Temperature ' . $temperature['temp_descr'] . " over threshold: " . $temp . " °C (> " . $temperature['temp_limit'] . " °C)", $device['device_id'], 'temperature', $temperature['temp_id']); } mysql_query("UPDATE temperature SET temp_current = '$temp' WHERE temp_id = '" . $temperature['temp_id'] . "'"); diff --git a/includes/polling/voltages.inc.php b/includes/polling/voltages.inc.php index d78769945..a6e9c2f18 100755 --- a/includes/polling/voltages.inc.php +++ b/includes/polling/voltages.inc.php @@ -37,7 +37,7 @@ while($voltage = mysql_fetch_array($volt_data)) { $msg .= "V) at " . date($config['timestamp_format']); mail($email, "Voltage Alarm: " . $device['hostname'] . " " . $voltage['volt_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $voltage['volt_descr'] . "\n"); - eventlog('Voltage ' . $voltage['volt_descr'] . " under threshold: " . $volt . " V (< " . $voltage['volt_limit_low'] . " V)", $device['device_id']); + log_event('Voltage ' . $voltage['volt_descr'] . " under threshold: " . $volt . " V (< " . $voltage['volt_limit_low'] . " V)", $device['device_id'], 'voltage', $voltage['volt_id']); } else if($voltage['volt_current'] < $voltage['volt_limit'] && $volt >= $voltage['volt_limit']) { @@ -46,7 +46,7 @@ while($voltage = mysql_fetch_array($volt_data)) { $msg .= "V) at " . date($config['timestamp_format']); mail($email, "Voltage Alarm: " . $device['hostname'] . " " . $voltage['volt_descr'], $msg, $config['email_headers']); echo("Alerting for " . $device['hostname'] . " " . $voltage['volt_descr'] . "\n"); - eventlog('Voltage ' . $voltage['volt_descr'] . " above threshold: " . $volt . " V (> " . $voltage['volt_limit'] . " V)", $device['device_id']); + log_event('Voltage ' . $voltage['volt_descr'] . " above threshold: " . $volt . " V (> " . $voltage['volt_limit'] . " V)", $device['device_id'], 'voltage', $voltage['volt_id']); } mysql_query("UPDATE voltage SET volt_current = '$volt' WHERE volt_id = '" . $voltage['volt_id'] . "'");