From c64219c293e473910980cf04d82d1d497936703f Mon Sep 17 00:00:00 2001 From: Tom Laermans Date: Tue, 15 Jun 2010 18:19:55 +0000 Subject: [PATCH] refactor part of temperature discovery + add riello ups battery temperature git-svn-id: http://www.observium.org/svn/observer/trunk@1181 61d68cd4-352d-0410-923a-c4978735b2b8 --- includes/discovery/temperatures.inc.php | 398 ++++++++++++------------ 1 file changed, 203 insertions(+), 195 deletions(-) diff --git a/includes/discovery/temperatures.inc.php b/includes/discovery/temperatures.inc.php index adb7bf30a..cb379f873 100755 --- a/includes/discovery/temperatures.inc.php +++ b/includes/discovery/temperatures.inc.php @@ -11,40 +11,216 @@ $valid_temp = array(); include("temperatures-junose.inc.php"); -if($device['os'] == "ironware") +switch ($device['os']) { - echo("IronWare "); - $oids = shell_exec($config['snmpwalk'] . " -$snmpver -CI -Osqn -m FOUNDRY-SN-AGENT-MIB:FOUNDRY-SN-ROOT-MIB -c $community $hostname:$port snAgentTempSensorDescr"); - $oids = trim($oids); - $oids = str_replace(".1.3.6.1.4.1.1991.1.1.2.13.1.1.3.", "", $oids); - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data != "") + case "ironware": + echo("IronWare "); + $oids = shell_exec($config['snmpwalk'] . " -$snmpver -CI -Osqn -m FOUNDRY-SN-AGENT-MIB:FOUNDRY-SN-ROOT-MIB -c $community $hostname:$port snAgentTempSensorDescr"); + $oids = trim($oids); + $oids = str_replace(".1.3.6.1.4.1.1991.1.1.2.13.1.1.3.", "", $oids); + foreach(explode("\n", $oids) as $data) { - list($oid) = explode(" ", $data); - $temp_oid = ".1.3.6.1.4.1.1991.1.1.2.13.1.1.4.$oid"; - $descr_oid = ".1.3.6.1.4.1.1991.1.1.2.13.1.1.3.$oid"; - $descr = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $descr_oid")); - $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $temp_oid")); - if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" && $temp != "0") + $data = trim($data); + if ($data != "") { - $descr = str_replace("\"", "", $descr); - $descr = str_replace("temperature", "", $descr); - $descr = str_replace("temp", "", $descr); - $descr = str_replace("sensor", "Sensor", $descr); - $descr = str_replace("Line module", "Slot", $descr); - $descr = str_replace("Switch Fabric module", "Fabric", $descr); - $descr = str_replace("Active management module", "Mgmt Module", $descr); - $descr = str_replace(" ", " ", $descr); - $descr = trim($descr); - discover_temperature($valid_temp, $device, $temp_oid, $oid, "ironware", $descr, "2", NULL, NULL, $temp); + list($oid) = explode(" ", $data); + $temp_oid = ".1.3.6.1.4.1.1991.1.1.2.13.1.1.4.$oid"; + $descr_oid = ".1.3.6.1.4.1.1991.1.1.2.13.1.1.3.$oid"; + $descr = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $descr_oid")); + $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $temp_oid")); + if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" && $temp != "0") + { + $descr = str_replace("\"", "", $descr); + $descr = str_replace("temperature", "", $descr); + $descr = str_replace("temp", "", $descr); + $descr = str_replace("sensor", "Sensor", $descr); + $descr = str_replace("Line module", "Slot", $descr); + $descr = str_replace("Switch Fabric module", "Fabric", $descr); + $descr = str_replace("Active management module", "Mgmt Module", $descr); + $descr = str_replace(" ", " ", $descr); + $descr = trim($descr); + discover_temperature($valid_temp, $device, $temp_oid, $oid, "ironware", $descr, "2", NULL, NULL, $temp); + } } } - } + break; + + case "areca": + $oids = shell_exec($config['snmpwalk'] . " -$snmpver -CI -Osqn -c $community $hostname:$port SNMPv2-SMI::enterprises.18928.1.1.2.14.1.2"); + if ($debug) { echo($oids."\n"); } + $oids = trim($oids); + if ($oids) echo("Areca Harddisk "); + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($oid,$descr) = explode(" ", $data,2); + $split_oid = explode('.',$oid); + $temp_id = $split_oid[count($split_oid)-1]; + $temp_oid = "1.3.6.1.4.1.18928.1.1.2.14.1.2.$temp_id"; + $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $temp_oid")); + $descr = "Hard disk $temp_id"; + if ($temp != -128) # -128 = not measured/present + { + discover_temperature($valid_temp, $device, $temp_oid, zeropad($temp_id), "areca", $descr, 1, NULL, NULL, $temp); + } + } + } + + $oids = snmp_walk($device, "1.3.6.1.4.1.18928.1.2.2.1.10.1.2", "-OsqnU", ""); + if ($debug) { echo($oids."\n"); } + if ($oids) echo("Areca Controller "); + $precision = 1; + $type = "areca"; + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($oid,$descr) = explode(" ", $data,2); + $split_oid = explode('.',$oid); + $index = $split_oid[count($split_oid)-1]; + $oid = "1.3.6.1.4.1.18928.1.2.2.1.10.1.3." . $index; + $current = snmp_get($device, $oid, "-Oqv", ""); + discover_temperature($valid_temp, $device, $oid, $index, $type, trim($descr,'"'), $precision, NULL, NULL, $current); + } + } + break; + + case "papouch-tme": + echo("Papouch TME "); + $descr = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port SNMPv2-SMI::enterprises.18248.1.1.3.0")); + $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port SNMPv2-SMI::enterprises.18248.1.1.1.0")) / 10; + if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" && $temp != "0") + { + $temp_oid = ".1.3.6.1.4.1.18248.1.1.1.0"; + $descr = trim(str_replace("\"", "", $descr)); + discover_temperature($valid_temp, $device, $temp_oid, "1", "ironware", $descr, "10", NULL, NULL, $temp); + } + break; + + case "linux": + # Observer-style temperature + $oids = shell_exec($config['snmpwalk'] . " -$snmpver -m SNMPv2-SMI -Osqn -CI -c $community $hostname:$port .1.3.6.1.4.1.2021.7891 | sed s/.1.3.6.1.4.1.2021.7891.// | grep '.1.1 ' | grep -v '.101.' | cut -d'.' -f 1"); + $oids = trim($oids); + if ($oids) echo("Observer-Style "); + foreach(explode("\n",$oids) as $oid) + { + $oid = trim($oid); + if ($oid != "") + { + $descr_query = $config['snmpget'] . " -$snmpver -m SNMPv2-SMI -Osqn -c $community $hostname:$port .1.3.6.1.4.1.2021.7891.$oid.2.1 | sed s/.1.3.6.1.4.1.2021.7891.$oid.2.1\ //"; + $descr = trim(str_replace("\"", "", shell_exec($descr_query))); + $fulloid = ".1.3.6.1.4.1.2021.7891.$oid.101.1"; + discover_temperature($valid_temp, $device, $fulloid, $oid, "observer", $descr, "1", NULL, NULL, NULL); + } + } + + # LM-Sensors + $oids = shell_exec($config['snmpwalk'] . " -m LM-SENSORS-MIB -$snmpver -CI -Osqn -c $community $hostname:$port lmTempSensorsDevice"); + if ($debug) { echo($oids."\n"); } + $oids = trim($oids); + if ($oids) echo("LM-SENSORS "); + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($oid,$descr) = explode(" ", $data,2); + $split_oid = explode('.',$oid); + $temp_id = $split_oid[count($split_oid)-1]; + $temp_oid = "1.3.6.1.4.1.2021.13.16.2.1.3.$temp_id"; + $temp = trim(shell_exec($config['snmpget'] . " -m LM-SENSORS-MIB -O qv -$snmpver -c $community $hostname:$port $temp_oid")) / 1000; + $descr = str_ireplace("temp-", "", $descr); + $descr = trim($descr); + if($temp != "0" && $temp <= "1000") + { + discover_temperature($valid_temp, $device, $temp_oid, $temp_id, "lmsensors", $descr, "1000", NULL, NULL, $temp); + } + } + } + + # Supermicro sensors + $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 = trim($oids); + if ($oids) echo("Supermicro "); + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($oid,$type) = explode(" ", $data); + if ($type == 2) + { + $temp_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"; + $limit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.5$oid"; + $divisor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.9$oid"; + $monitor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.10$oid"; + $descr = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $descr_oid")); + $temp = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $temp_oid")); + $limit = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $limit_oid")); + $divisor = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $divisor_oid")); + $monitor = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $monitor_oid")); + if ($monitor == 'true') + { + $descr = trim(str_ireplace("temperature", "", $descr)); + discover_temperature($valid_temp, $device, $temp_oid, trim($oid,'.'), "supermicro", $descr, $divisor, $limit, NULL, $temp); + } + } + } + } + break; + + case "ios": + echo("Cisco "); + $oids = shell_exec($config['snmpwalk'] . " -m CISCO-ENVMON-MIB -$snmpver -CI -Osqn -c $community $hostname:$port .1.3.6.1.4.1.9.9.13.1.3.1.2 | sed s/.1.3.6.1.4.1.9.9.13.1.3.1.2.//g"); + $oids = trim($oids); + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($index) = explode(" ", $data); + $oid = ".1.3.6.1.4.1.9.9.13.1.3.1.3.$index"; + $descr_oid = ".1.3.6.1.4.1.9.9.13.1.3.1.2.$index"; + $descr = snmp_get($device, $descr_oid, "-Oqv", "CISCO-ENVMON-MIB"); + $temp = snmp_get($device, $oid, "-Oqv", "CISCO-ENVMON-MIB"); + if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" ) + { + $descr = str_replace("\"", "", $descr); + $descr = str_replace("temperature", "", $descr); + $descr = str_replace("temp", "", $descr); + $descr = trim($descr); + discover_temperature($valid_temp, $device, $oid, $index, "cisco", $descr, "1", NULL, NULL, $temp); + } + } + } + break; + + case "netmanplus": + $oids = snmp_walk($device, "1.3.6.1.2.1.33.1.2.7", "-Oqv", "UPS-MIB"); + if ($debug) { echo($oids."\n"); } + $oids = trim($oids); + if ($oids) echo("Areca Harddisk "); + foreach(explode("\n", $oids) as $data) + { + $data = trim($data); + if ($data) + { + list($oid,$descr) = explode(" ", $data,2); + $split_oid = explode('.',$oid); + $temp_id = $split_oid[count($split_oid)-1]; + $temp_oid = "1.3.6.1.2.1.33.1.2.7.$temp_id"; + $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $temp_oid")); + $descr = "Battery " . $temp_id+1 . " temperature"; + discover_temperature($valid_temp, $device, $temp_oid, $temp_id, "netmanplus", $descr, 1, NULL, NULL, $temp); + } + } + break; } -## JunOS Temperatures if ($device['os'] == "junos" || $device['os_group'] == "junos") { echo("JunOS "); @@ -76,85 +252,6 @@ if ($device['os'] == "junos" || $device['os_group'] == "junos") } } -## Areca Harddisk & Controller Temperatures -if ($device['os'] == "areca") -{ - $oids = shell_exec($config['snmpwalk'] . " -$snmpver -CI -Osqn -c $community $hostname:$port SNMPv2-SMI::enterprises.18928.1.1.2.14.1.2"); - if ($debug) { echo($oids."\n"); } - $oids = trim($oids); - if ($oids) echo("Areca Harddisk "); - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data) - { - list($oid,$descr) = explode(" ", $data,2); - $split_oid = explode('.',$oid); - $temp_id = $split_oid[count($split_oid)-1]; - $temp_oid = "1.3.6.1.4.1.18928.1.1.2.14.1.2.$temp_id"; - $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $temp_oid")); - $descr = "Hard disk $temp_id"; - if ($temp != -128) - { - discover_temperature($valid_temp, $device, $temp_oid, zeropad($temp_id), "areca", $descr, 1, NULL, NULL, $temp); - } - } - } - - $oids = snmp_walk($device, "1.3.6.1.4.1.18928.1.2.2.1.10.1.2", "-OsqnU", ""); - if ($debug) { echo($oids."\n"); } - if ($oids) echo("Areca Controller "); - $precision = 1; - $type = "areca"; - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data) - { - list($oid,$descr) = explode(" ", $data,2); - $split_oid = explode('.',$oid); - $index = $split_oid[count($split_oid)-1]; - $oid = "1.3.6.1.4.1.18928.1.2.2.1.10.1.3." . $index; - $current = snmp_get($device, $oid, "-Oqv", ""); - discover_temperature($valid_temp, $device, $oid, $index, $type, trim($descr,'"'), $precision, NULL, NULL, $current); - } - } -} - -## Papouch TME Temperatures -if ($device['os'] == "papouch-tme") -{ - echo("Papouch TME "); - $descr = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port SNMPv2-SMI::enterprises.18248.1.1.3.0")); - $temp = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port SNMPv2-SMI::enterprises.18248.1.1.1.0")) / 10; - if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" && $temp != "0") - { - $temp_oid = ".1.3.6.1.4.1.18248.1.1.1.0"; - $descr = trim(str_replace("\"", "", $descr)); - - discover_temperature($valid_temp, $device, $temp_oid, "1", "ironware", $descr, "10", NULL, NULL, $temp); - } -} - -## Observer-Style Temperatures -if ($device['os'] == "linux") -{ - $oids = shell_exec($config['snmpwalk'] . " -$snmpver -m SNMPv2-SMI -Osqn -CI -c $community $hostname:$port .1.3.6.1.4.1.2021.7891 | sed s/.1.3.6.1.4.1.2021.7891.// | grep '.1.1 ' | grep -v '.101.' | cut -d'.' -f 1"); - $oids = trim($oids); - if ($oids) echo("Observer-Style "); - foreach(explode("\n",$oids) as $oid) - { - $oid = trim($oid); - if ($oid != "") - { - $descr_query = $config['snmpget'] . " -$snmpver -m SNMPv2-SMI -Osqn -c $community $hostname:$port .1.3.6.1.4.1.2021.7891.$oid.2.1 | sed s/.1.3.6.1.4.1.2021.7891.$oid.2.1\ //"; - $descr = trim(str_replace("\"", "", shell_exec($descr_query))); - $fulloid = ".1.3.6.1.4.1.2021.7891.$oid.101.1"; - discover_temperature($valid_temp, $device, $fulloid, $oid, "observer", $descr, "1", NULL, NULL, NULL); - } - } -} - ## Dell Temperatures if (strstr($device['hardware'], "dell")) { @@ -175,95 +272,6 @@ if (strstr($device['hardware'], "dell")) } } -## LMSensors Temperatures -if ($device['os'] == "linux") -{ - $oids = shell_exec($config['snmpwalk'] . " -m LM-SENSORS-MIB -$snmpver -CI -Osqn -c $community $hostname:$port lmTempSensorsDevice"); - if ($debug) { echo($oids."\n"); } - $oids = trim($oids); - if ($oids) echo("LM-SENSORS "); - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data) - { - list($oid,$descr) = explode(" ", $data,2); - $split_oid = explode('.',$oid); - $temp_id = $split_oid[count($split_oid)-1]; - $temp_oid = "1.3.6.1.4.1.2021.13.16.2.1.3.$temp_id"; - $temp = trim(shell_exec($config['snmpget'] . " -m LM-SENSORS-MIB -O qv -$snmpver -c $community $hostname:$port $temp_oid")) / 1000; - $descr = str_ireplace("temp-", "", $descr); - $descr = trim($descr); - if($temp != "0" && $temp <= "1000") { - discover_temperature($valid_temp, $device, $temp_oid, $temp_id, "lmsensors", $descr, "1000", NULL, NULL, $temp); - } - } - } -} - -## Supermicro Temperatures -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 = trim($oids); - if ($oids) echo("Supermicro "); - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data) - { - list($oid,$type) = explode(" ", $data); - if ($type == 2) - { - $temp_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"; - $limit_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.5$oid"; - $divisor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.9$oid"; - $monitor_oid = "1.3.6.1.4.1.10876.2.1.1.1.1.10$oid"; - $descr = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $descr_oid")); - $temp = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $temp_oid")); - $limit = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $limit_oid")); - $divisor = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $divisor_oid")); - $monitor = trim(shell_exec($config['snmpget'] . " -m SUPERMICRO-HEALTH-MIB -O qv -$snmpver -c $community $hostname:$port $monitor_oid")); - if ($monitor == 'true') - { - $descr = trim(str_ireplace("temperature", "", $descr)); - discover_temperature($valid_temp, $device, $temp_oid, trim($oid,'.'), "supermicro", $descr, $divisor, $limit, NULL, $temp); - } - } - } - } -} - -## Cisco Temperatures -if ($device['os'] == "ios") -{ - echo("Cisco "); - $oids = shell_exec($config['snmpwalk'] . " -m CISCO-ENVMON-MIB -$snmpver -CI -Osqn -c $community $hostname:$port .1.3.6.1.4.1.9.9.13.1.3.1.2 | sed s/.1.3.6.1.4.1.9.9.13.1.3.1.2.//g"); - $oids = trim($oids); - foreach(explode("\n", $oids) as $data) - { - $data = trim($data); - if ($data) - { - list($index) = explode(" ", $data); - $oid = ".1.3.6.1.4.1.9.9.13.1.3.1.3.$index"; - $descr_oid = ".1.3.6.1.4.1.9.9.13.1.3.1.2.$index"; - $descr = snmp_get($device, $descr_oid, "-Oqv", "CISCO-ENVMON-MIB"); - $temp = snmp_get($device, $oid, "-Oqv", "CISCO-ENVMON-MIB"); - if (!strstr($descr, "No") && !strstr($temp, "No") && $descr != "" ) - { - $descr = str_replace("\"", "", $descr); - $descr = str_replace("temperature", "", $descr); - $descr = str_replace("temp", "", $descr); - $descr = trim($descr); - - discover_temperature($valid_temp, $device, $oid, $index, "cisco", $descr, "1", NULL, NULL, $temp); - } - } - } -} - if($debug) { print_r($valid_temp); } $sql = "SELECT * FROM temperature AS T, devices AS D WHERE T.device_id = D.device_id AND D.device_id = '".$device['device_id']."'";