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:
Adam Amstrong
2010-02-15 05:07:18 +00:00
parent 272b5a0a7e
commit d64c707172
5 changed files with 74 additions and 73 deletions

View File

@@ -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`

View File

@@ -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();

View File

@@ -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;
}
?>

View File

@@ -55,6 +55,4 @@
unset ($processors_array);
echo("\n");
?>

View File

@@ -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");
?>