New syslog and other shiny things

git-svn-id: http://www.observium.org/svn/observer/trunk@171 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Adam Amstrong
2008-03-19 19:15:57 +00:00
parent 092b2e3bdf
commit c2298401a3
6 changed files with 56 additions and 55 deletions
+39 -30
View File
@@ -4,58 +4,67 @@
include("config.php");
include("includes/functions.php");
if(!$enable_syslog) { exit(); }
if(!$config['enable_syslog']) { echo("Syslog support disabled.\n"); exit(); }
$add = 0;
$discard = 0;
$total = 0;
mysql_query("DELETE FROM `logs` WHERE `msg` LIKE '%Connection from UDP: [89.21.224.44]:%'");
mysql_query("DELETE FROM `logs` WHERE `msg` LIKE '%Connection from UDP: [89.21.224.35]:%'");
mysql_query("DELETE FROM `syslog` WHERE `msg` LIKE '%last message repeated%'");
mysql_query("DELETE FROM `syslog` WHERE `msg` LIKE '%Connection from UDP: [89.21.224.44]:%'");
mysql_query("DELETE FROM `syslog` WHERE `msg` LIKE '%Connection from UDP: [89.21.224.35]:%'");
$q = mysql_query("SELECT * FROM `logs`");
while($l = mysql_fetch_array($q)){
$q = mysql_query("SELECT * FROM `syslog` where `processed` = '0'");
while($entry = mysql_fetch_array($q)){
unset($host);
unset($device_id);
unset($maybehost);
unset($perhapshost);
$maybehost = @mysql_result(mysql_query("SELECT D.device_id as device_id FROM ipaddr AS A, interfaces AS I, devices AS D WHERE A.addr = '" . $l['host'] . "' AND I.interface_id = A.interface_id AND D.device_id = I.device_id"),0);
$perhapshost = @mysql_result(mysql_query("SELECT device_id FROM devices WHERE `hostname` = '$l[host]'"),0);
$device_id_host = @mysql_result(mysql_query("SELECT device_id FROM devices WHERE `hostname` = '".$entry['host']."'"),0);
if($maybehost) {
$host = $maybehost;
} elseif($perhapshost) {
$host = $perhapshost;
} else { `echo Failed log entry from $l[host] >> /var/log/observer.log`; }
if($device_id_host) {
$device_id = $device_id_host;
} else {
$device_id_ip = @mysql_result(mysql_query("SELECT D.device_id as device_id FROM ipaddr AS A, interfaces AS I, devices AS D WHERE A.addr = '" . $entry['host']."' AND I.interface_id = A.interface_id AND D.device_id = I.device_id"),0);
if($device_id_ip) {
$device_id = $device_id_ip;
}
}
if($host) {
if($device_id) {
if(mysql_result(mysql_query("SELECT os FROM `devices` WHERE `device_id` = '$host'"),0) == "IOS") {
list(,$l[msg]) = split(": %", $l[msg]);
$l[msg] = "%" . $l[msg];
$l[msg] = preg_replace("/^%(.+?):\ /", "\\1||", $l[msg]);
list($l[program], $l[msg]) = explode("||", $l[msg]);
if(mysql_result(mysql_query("SELECT `os` FROM `devices` WHERE `device_id` = '$device_id'"),0) == "IOS") {
list(,$entry[msg]) = split(": %", $entry['msg']);
$entry['msg'] = "%" . $entry['msg'];
$entry['msg'] = preg_replace("/^%(.+?):\ /", "\\1||", $entry['msg']);
list($entry['program'], $entry['msg']) = explode("||", $entry['msg']);
} else {
$program = addslashes($l['program']);
$l['msg'] = preg_replace("/^$program:\ /", "", $l['msg']);
$program = addslashes($entry['program']);
$entry['msg'] = preg_replace("/^$program:\ /", "", $entry['msg']);
if(preg_match("/^[a-zA-Z\/]+\[[0-9]+\]:/", $entry['msg'])) {
$entry['msg'] = preg_replace("/^(.+?)\[[0-9]+\]:\ /", "\\1||", $entry['msg']);
list($entry['program'], $entry['msg']) = explode("||", $entry['msg']);
echo("fix! -> " . $entry['program'] . " -> " . $entry['msg'] . "\n");
}
}
$x = "INSERT INTO syslog (`host` , `facility` , `priority` , `level` , `tag` , `datetime` , `program` , `msg` )";
$x .= " VALUES ( '$host', '$l[facility]', '$l[priority]', '$l[level]', '$l[tag]', '$l[datetime]', '$l[program]', '$l[msg]' );";
$x = "UPDATE `syslog` set `device_id` = '$device_id', `program` = '".$entry['program']."', `msg` = '" . mysql_real_escape_string($entry['msg']) . "', processed = '1' WHERE `seq` = '" . $entry['seq'] . "'";
# echo("$x \n");
mysql_query($x);
unset ($fix);
$add++;
} else { $discard++; }
mysql_query("DELETE FROM logs WHERE seq = '$l[seq]'");
} else {
echo("Failed entry from '" . $entry['host'] . "'");
$x = "DELETE FROM `syslog` where `seq` = '" . $entry['seq'] . "'";
mysql_query($x);
$discard++;
}
$total++;
}
#echo("$total records processed: $add added to database, $discard discarded");
?>