mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
further cleanups to voltage discovery code. removing erroneous CR, removing old unix processors tab from health page
git-svn-id: http://www.observium.org/svn/observer/trunk@853 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -93,3 +93,4 @@ ALTER TABLE `temperature` CHANGE `temp_current` `temp_current` FLOAT( 4 ) NOT
|
||||
ALTER TABLE `processors` ADD `processor_index` varchar(32) NOT NULL AFTER `processor_oid`
|
||||
ALTER TABLE `processors` CHANGE `processor_description` `processor_descr` varchar(64) NOT NULL
|
||||
ALTER TABLE `fanspeed` CHANGE `fan_mibtype` `fan_type` varchar(64) NOT NULL
|
||||
ALTER TABLE `voltage` ADD `volt_index` VARCHAR( 8 ) NOT NULL AFTER `volt_oid`,ADD `volt_type` VARCHAR( 32 ) NOT NULL AFTER `volt_index`
|
||||
|
||||
@@ -4,7 +4,6 @@ $temp = mysql_result(mysql_query("select count(*) from temperature WHERE device_
|
||||
$storage = mysql_result(mysql_query("select count(*) from storage WHERE host_id = '" . $device['device_id'] . "'"), 0);
|
||||
$cemp = mysql_result(mysql_query("select count(*) from cempMemPool WHERE device_id = '" . $device['device_id'] . "'"), 0);
|
||||
$cmp = mysql_result(mysql_query("select count(*) from cmpMemPool WHERE device_id = '" . $device['device_id'] . "'"), 0);
|
||||
$hrprocessor = mysql_result(mysql_query("select count(*) from hrDevice WHERE device_id = '" . $device['device_id'] . "' AND `hrDeviceType` = 'hrDeviceProcessor'"), 0);
|
||||
$processor = mysql_result(mysql_query("select count(*) from processors WHERE device_id = '" . $device['device_id'] . "'"), 0);
|
||||
$fans = mysql_result(mysql_query("select count(*) from fanspeed WHERE device_id = '" . $device['device_id'] . "'"), 0);
|
||||
$volts = mysql_result(mysql_query("select count(*) from voltage WHERE device_id = '" . $device['device_id'] . "'"), 0);
|
||||
@@ -13,7 +12,6 @@ if ($temp) { $datas[] = 'temp'; }
|
||||
if ($storage) { $datas[] = 'storage'; }
|
||||
if ($cemp) { $datas[] = 'cemp'; }
|
||||
if ($cmp) { $datas[] = 'cmp'; }
|
||||
if ($hrprocessor) { $datas[] = 'hrprocessors'; }
|
||||
if ($processor) { $datas[] = 'processors'; }
|
||||
if ($fans) { $datas[] = 'fanspeeds'; }
|
||||
if ($volts) { $datas[] = 'voltages'; }
|
||||
@@ -22,10 +20,9 @@ $type_text['temp'] = "Temperatures";
|
||||
$type_text['cmp'] = "Memory Pools";
|
||||
$type_text['cemp'] = "Memory Enh Pools";
|
||||
$type_text['storage'] = "Disk Usage";
|
||||
$type_text['hrprocessors'] = "Processor Usage";
|
||||
$type_text['processors'] = "Processor Usage";
|
||||
$type_text['voltages'] = "Voltages";
|
||||
$type_text['fanspeeds'] = "Fanspeeds";
|
||||
$type_text['fanspeeds'] = "Fan Speeds";
|
||||
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
@@ -10,18 +10,44 @@ function discover_fan($device, $oid, $index, $type, $descr, $precision = 1, $low
|
||||
$query = "INSERT INTO fanspeed (`device_id`, `fan_oid`, `fan_index`, `fan_type`, `fan_descr`, `fan_precision`, `fan_limit`, `fan_current`) ";
|
||||
$query .= " VALUES ('".$device['device_id']."', '$oid', '$index', '$type', '$descr', '$precision', '$low_limit', '$current')";
|
||||
mysql_query($query);
|
||||
$return = "+";
|
||||
echo("+");
|
||||
} else {
|
||||
$fan_entry = mysql_fetch_array(mysql_query("SELECT count(fan_id) FROM `fanspeed` WHERE device_id = '".$device['device_id']."' AND fan_type = '$type' AND `fan_index` = '$index'"));
|
||||
$fan_entry = mysql_fetch_array(mysql_query("SELECT * FROM `fanspeed` WHERE device_id = '".$device['device_id']."' AND fan_type = '$type' AND `fan_index` = '$index'"));
|
||||
if($oid == $fan_entry['fan_oid'] && $descr == $fan_entry['fan_descr'] && $precision == $fan_entry['fan_precision']) {
|
||||
$return = ".";
|
||||
echo(".");
|
||||
} else {
|
||||
mysql_query("UPDATE fanspeed SET `fan_descr` = '$descr', `fan_oid` = '$oid', `fan_precision` = '$precision' WHERE `device_id` = '$id' AND fan_type = '$type' AND `fan_index` = '$fan_index' ");
|
||||
$return = "U";
|
||||
echo("U");
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function discover_volt($device, $oid, $index, $type, $descr, $precision = 1, $low_limit = NULL, $high_limit = NULL, $current = NULL) {
|
||||
|
||||
global $config; global $debug;
|
||||
if($debug) { echo("$oid, $index, $type, $descr, $precision\n"); }
|
||||
if(!$low_limit) { $low_limit = $config['limit']['volt']; }
|
||||
if (mysql_result(mysql_query("SELECT count(volt_id) FROM `voltage` WHERE device_id = '".$device['device_id']."' AND volt_type = '$type' AND `volt_index` = '$index'"),0) == '0')
|
||||
{
|
||||
$query = "INSERT INTO voltage (`device_id`, `volt_oid`, `volt_index`, `volt_type`, `volt_descr`, `volt_precision`, `volt_limit`, `volt_limit_low`, `volt_current`) ";
|
||||
$query .= " VALUES ('".$device['device_id']."', '$oid', '$index', '$type', '$descr', '$precision', '$low_limit', '$volt_limit_low', '$current')";
|
||||
mysql_query($query);
|
||||
if($debug) { echo("$query ". mysql_affected_rows() . " inserted"); }
|
||||
echo("+");
|
||||
} else {
|
||||
$volt_entry = mysql_fetch_array(mysql_query("SELECT * FROM `voltage` WHERE device_id = '".$device['device_id']."' AND volt_type = '$type' AND `volt_index` = '$index'"));
|
||||
if($oid == $volt_entry['volt_oid'] && $descr == $volt_entry['volt_descr'] && $precision == $volt_entry['volt_precision']) {
|
||||
echo(".");
|
||||
} else {
|
||||
mysql_query("UPDATE voltage SET `volt_descr` = '$descr', `volt_oid` = '$oid', `volt_precision` = '$precision' WHERE `device_id` = '$id' AND volt_type = '$type' AND `volt_index` = '$volt_index' ");
|
||||
echo("U");
|
||||
if($debug) { echo("$query ". mysql_affected_rows() . " updated"); }
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
@@ -55,6 +55,4 @@
|
||||
|
||||
unset ($processors_array);
|
||||
|
||||
echo("\n");
|
||||
|
||||
?>
|
||||
|
||||
@@ -11,8 +11,11 @@ echo("Voltages : ");
|
||||
|
||||
if ($device['os'] == "linux")
|
||||
{
|
||||
$oids = snmp_walk($device, "lmTempSensorsDevice", "-OsqnU", "LM-SENSORS-MIB");
|
||||
$oids = snmp_walk($device, "lmVoltSensorsDevice", "-OsqnU", "LM-SENSORS-MIB");
|
||||
if ($debug) { echo($oids."\n"); }
|
||||
if ($oids) echo("LM-SENSORS ");
|
||||
$precision = 1000;
|
||||
$type = "lmsensors";
|
||||
foreach(explode("\n", $oids) as $data)
|
||||
{
|
||||
$data = trim($data);
|
||||
@@ -20,28 +23,12 @@ if ($device['os'] == "linux")
|
||||
{
|
||||
list($oid,$descr) = explode(" ", $data,2);
|
||||
$split_oid = explode('.',$oid);
|
||||
$volt_id = $split_oid[count($split_oid)-1];
|
||||
$volt_oid = "1.3.6.1.4.1.2021.13.16.2.1.3." . $volt_id;
|
||||
$volt = snmp_get($device, $volt_oid, "-Oqv", "LM-SENSORS-MIB");
|
||||
$volt = $volt / 10000;
|
||||
$descr = str_ireplace("temp-", "", $descr);
|
||||
$descr = trim($descr);
|
||||
if (mysql_result(mysql_query("SELECT count(volt_id) FROM `voltage` WHERE volt_oid = '$volt_oid' AND device_id = '$id'"),0) == '0')
|
||||
{
|
||||
$query = "INSERT INTO voltage (`device_id`, `volt_oid`, `volt_descr`, `volt_precision`, `volt_limit`, `volt_current`) values ('$id', '$volt_oid', '$descr',10000, " . ($config['defaults']['volt_limit'] ? $config['defaults']['volt_limit'] : '60') . ", '$volt')";
|
||||
mysql_query($query);
|
||||
echo("+");
|
||||
}
|
||||
elseif (mysql_result(mysql_query("SELECT `volt_descr` FROM voltage WHERE `device_id` = '$id' AND `volt_oid` = '$volt_oid'"), 0) != $descr)
|
||||
{
|
||||
echo("U");
|
||||
mysql_query("UPDATE voltage SET `volt_descr` = '$descr' WHERE `device_id` = '$id' AND `volt_oid` = '$volt_oid'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo(".");
|
||||
}
|
||||
$volt_exists[] = "$id $volt_oid";
|
||||
$index = $split_oid[count($split_oid)-1];
|
||||
$oid = ".1.3.6.1.4.1.2021.13.16.4.1.3." . $index;
|
||||
$current = snmp_get($device, $oid, "-Oqv", "LM-SENSORS-MIB") / $precision;
|
||||
$descr = trim(str_ireplace("volt-", "", $descr));
|
||||
discover_volt($device, $oid, $index, $type, $descr, $precision, NULL, NULL, $current);
|
||||
$volt_exists[$type][$index] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,41 +37,39 @@ if ($device['os'] == "linux")
|
||||
## Supermicro Voltages
|
||||
if ($device['os'] == "linux")
|
||||
{
|
||||
$oids = shell_exec($config['snmpwalk'] . " -m SUPERMICRO-HEALTH-MIB -$snmpver -CI -Osqn -c $community $hostname:$port 1.3.6.1.4.1.10876.2.1.1.1.1.3 | sed s/1.3.6.1.4.1.10876.2.1.1.1.1.3.//g");
|
||||
$oids = snmp_walk($device, "1.3.6.1.4.1.10876.2.1.1.1.1.3", "-OsqnU", "SUPERMICRO-HEALTH-MIB");
|
||||
if ($debug) { echo($oids."\n"); }
|
||||
$oids = trim($oids);
|
||||
if ($oids) echo("Supermicro ");
|
||||
$type = "supermicro";
|
||||
$precision = "1000";
|
||||
foreach(explode("\n", $oids) as $data)
|
||||
{
|
||||
$data = trim($data);
|
||||
if ($data)
|
||||
{
|
||||
list($oid,$type) = explode(" ", $data);
|
||||
if ($type == 1)
|
||||
list($oid,$kind) = explode(" ", $data);
|
||||
$split_oid = explode('.',$oid);
|
||||
$index = $split_oid[count($split_oid)-1];
|
||||
if ($kind == 1)
|
||||
{
|
||||
$volt_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.4$oid";
|
||||
$descr_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.2$oid";
|
||||
$monitor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.10$oid";
|
||||
$limit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.5$oid";
|
||||
$lowlimit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.6$oid";
|
||||
$descr = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $descr_oid"));
|
||||
$volt = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $volt_oid")) / 1000;
|
||||
$monitor = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $monitor_oid")) / 1000;
|
||||
$limit = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $limit_oid")) / 1000;
|
||||
$lowlimit = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $lowlimit_oid")) / 1000;
|
||||
$volt_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.4.".$index;
|
||||
$descr_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.2.".$index;
|
||||
$monitor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.10.".$index;
|
||||
$limit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.5.".$index;
|
||||
$lowlimit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.6.".$index;
|
||||
|
||||
$descr = snmp_get($device, $descr_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
|
||||
$current = snmp_get($device, $volt_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
|
||||
$limit = snmp_get($device, $limit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
|
||||
$lowlimit = snmp_get($device, $lowlimit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
|
||||
$monitor = snmp_get($device, $monitor_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
|
||||
$descr = trim(str_ireplace("Voltage", "", $descr));
|
||||
|
||||
if ($monitor == 'true')
|
||||
{
|
||||
$descr = trim(str_ireplace("Voltage", "", $descr));
|
||||
if (mysql_result(mysql_query("SELECT count(volt_id) FROM `voltage` WHERE volt_oid = '$volt_oid' AND device_id = '$id'"),0) == '0')
|
||||
{
|
||||
$query = "INSERT INTO voltage (`device_id`, `volt_oid`, `volt_descr`, `volt_current`, `volt_limit`, `volt_limit_low`, `volt_precision`) values ('$id', '$volt_oid', '$descr', '$volt', '$limit','$lowlimit','1000')";
|
||||
mysql_query($query);
|
||||
echo("+");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo(".");
|
||||
}
|
||||
$volt_exists[] = "$id $volt_oid";
|
||||
echo discover_volt($device, $volt_oid, $index, $type, $descr, $precision, $lowlimit, $limit, $current);
|
||||
$volt_exists[$type][$index] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,29 +78,23 @@ if ($device['os'] == "linux")
|
||||
|
||||
## Delete removed sensors
|
||||
|
||||
$sql = "SELECT * FROM voltage AS V, devices AS D WHERE V.device_id = D.device_id AND D.device_id = '".$device['device_id']."'";
|
||||
if($debug) { print_r($volt_exists); }
|
||||
|
||||
$sql = "SELECT * FROM voltage WHERE device_id = '".$device['device_id']."'";
|
||||
if ($query = mysql_query($sql))
|
||||
{
|
||||
while ($sensor = mysql_fetch_array($query))
|
||||
{
|
||||
unset($exists);
|
||||
$i = 0;
|
||||
while ($i < count($volt_exists) && !$exists)
|
||||
{
|
||||
$thisvolt = $sensor['device_id'] . " " . $sensor['volt_oid'];
|
||||
if ($volt_exists[$i] == $thisvolt) { $exists = 1; }
|
||||
$i++;
|
||||
}
|
||||
|
||||
if (!$exists)
|
||||
while ($test_volt = mysql_fetch_array($query))
|
||||
{
|
||||
$index = $test_volt['volt_index'];
|
||||
$type = $test_volt['volt_type'];
|
||||
if($debug) { echo("$type -> $index\n"); }
|
||||
if(!$volt_exists[$type][$index]) {
|
||||
echo("-");
|
||||
mysql_query("DELETE FROM voltage WHERE volt_id = '" . $sensor['volt_id'] . "'");
|
||||
mysql_query("DELETE FROM `voltage` WHERE volt_id = '" . $test_volt['volt_id'] . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($volt_exists); echo("\n");
|
||||
unset($fan_exists); echo("\n");
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user