Files
librenms-librenms/includes/syslog.php
T

100 lines
3.7 KiB
PHP
Raw Normal View History

2008-03-23 21:32:54 +00:00
<?php
2011-03-11 18:03:49 +00:00
function process_syslog ($entry, $update)
{
2008-03-23 21:32:54 +00:00
global $config;
foreach ($config['syslog_filter'] as $bi)
2011-03-11 18:03:49 +00:00
{
if (strstr($entry['msg'], $bi) !== FALSE)
{
2008-03-23 21:32:54 +00:00
$delete = 1;
}
}
if (strstr($entry['msg'], "diskio.c: don't know how to handle") !== FALSE)
{
$delete = 1;
}
$device_id_host = @mysql_result(mysql_query("SELECT device_id FROM devices WHERE `hostname` = '".$entry['host']."' OR `sysName` = '".$entry['host']."'"),0);
2008-03-23 21:32:54 +00:00
if ($device_id_host)
2011-03-11 18:03:49 +00:00
{
$entry['device_id'] = $device_id_host;
2011-03-11 18:03:49 +00:00
}
else
{
$device_id_ip = @mysql_result(mysql_query("SELECT device_id FROM ipv4_addresses AS A, ports AS I WHERE
A.ipv4_address = '" . $entry['host']."' AND I.interface_id = A.interface_id"),0);
if ($device_id_ip)
2011-03-11 18:03:49 +00:00
{
$entry['device_id'] = $device_id_ip;
2008-03-23 21:32:54 +00:00
}
2011-03-11 18:03:49 +00:00
}
2008-03-23 21:32:54 +00:00
if ($entry['device_id'] && !$delete)
2011-03-11 18:03:49 +00:00
{
$os = mysql_result(mysql_query("SELECT `os` FROM `devices` WHERE `device_id` = '".$entry['device_id']."'"),0);
2011-04-27 19:34:16 +00:00
if ($os == 'catos')
{
$matches = array();
preg_match('#%(?P<program>[A-Z0-9\-_]*):(?P<msg>(.*))#', $entry['msg'], $matches);
$entry['msg'] = $matches['msg'];
$entry['program'] = $matches['program'];
unset($matches);
}
elseif ($os == "ios" || $os == "iosxe")
2011-03-11 18:03:49 +00:00
{
if (strstr($entry[msg], "%"))
2011-03-11 18:03:49 +00:00
{
2009-04-23 21:13:56 +00:00
$entry['msg'] = preg_replace("/^%(.+?):\ /", "\\1||", $entry['msg']);
2011-04-11 09:22:12 +00:00
list(,$entry[msg]) = explode(": %", $entry['msg']);
2008-11-26 14:01:09 +00:00
$entry['msg'] = "%" . $entry['msg'];
2011-03-11 18:03:49 +00:00
$entry['msg'] = preg_replace("/^%(.+?):\ /", "\\1||", $entry['msg']);
}
2011-03-11 18:03:49 +00:00
else
{
$entry['msg'] = preg_replace("/^.*[0-9]:/", "", $entry['msg']);
$entry['msg'] = preg_replace("/^[0-9][0-9]\ [A-Z]{3}:/", "", $entry['msg']);
$entry['msg'] = preg_replace("/^(.+?):\ /", "\\1||", $entry['msg']);
}
2008-11-28 12:59:33 +00:00
$entry['msg'] = preg_replace("/^.+\.[0-9]{3}:/", "", $entry['msg']);
$entry['msg'] = preg_replace("/^.+-Traceback=/", "Traceback||", $entry['msg']);
2008-03-23 21:32:54 +00:00
list($entry['program'], $entry['msg']) = explode("||", $entry['msg']);
2008-11-26 14:01:09 +00:00
$entry['msg'] = preg_replace("/^[0-9]+:/", "", $entry['msg']);
2008-11-28 12:59:33 +00:00
if (!$entry['program'])
2011-03-11 18:03:49 +00:00
{
2008-11-28 12:59:33 +00:00
$entry['msg'] = preg_replace("/^([0-9A-Z\-]+?):\ /", "\\1||", $entry['msg']);
list($entry['program'], $entry['msg']) = explode("||", $entry['msg']);
}
if (!$entry['msg']) { $entry['msg'] = $entry['program']; unset ($entry['program']); }
2008-11-28 12:59:33 +00:00
2011-03-11 18:03:49 +00:00
}
else
{
2008-03-23 21:32:54 +00:00
$program = preg_quote($entry['program'],'/');
$entry['msg'] = preg_replace("/^$program:\ /", "", $entry['msg']);
# if (preg_match("/^[a-zA-Z\/]+\[[0-9]+\]:/", $entry['msg'])) {
2008-03-23 21:32:54 +00:00
$entry['msg'] = preg_replace("/^(.+?)\[[0-9]+\]:\ /", "\\1||", $entry['msg']);
if (!strstr($entry['msg'], "||")) { $entry['msg'] = preg_replace("/^(.+?):\ /", "\\1||", $entry['msg']); }
2008-03-23 21:32:54 +00:00
list($entry['program'], $entry['msg']) = explode("||", $entry['msg']);
2010-06-13 14:39:09 +00:00
$entry['program'] = preg_replace("@\-[0-9]+@", "", $entry['program']);
# }
2008-03-23 21:32:54 +00:00
}
2010-06-13 14:39:09 +00:00
$entry['program'] = strtoupper($entry['program']);
2010-02-21 11:58:07 +00:00
$x = "UPDATE `syslog` set `device_id` = '".$entry['device_id']."', `program` = '".$entry['program']."', `msg` = '" . mres($entry['msg']) . "', processed = '1' WHERE `seq` = '" . $entry['seq'] . "'";
$x = "INSERT INTO `syslog` (`device_id`,`program`,`facility`,`priority`, `level`, `tag`, `msg`, `timestamp`) ";
2011-03-11 18:03:49 +00:00
$x .= "VALUES ('".$entry['device_id']."','".$entry['program']."','".$entry['facility']."','".$entry['priority']."', '".$entry['level']."', '".$entry['tag']."', '".$entry['msg']."','".$entry['timestamp']."')";
if ($update && $entry['device_id']) { mysql_query($x); }
2008-03-23 21:32:54 +00:00
unset ($fix);
} else { print_r($entry); echo("D-$delete"); }
2008-03-23 21:32:54 +00:00
2011-03-11 18:03:49 +00:00
return $entry;
2008-03-23 21:32:54 +00:00
}
2011-03-11 18:03:49 +00:00
?>