Add XUPS-MIB, basic powerware detection and temperature readings, split up voltages polling into separate files + minor fixes

git-svn-id: http://www.observium.org/svn/observer/trunk@1585 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Tom Laermans
2010-07-31 18:42:30 +00:00
parent c01db79bfd
commit 811d3ca6a1
15 changed files with 2761 additions and 306 deletions

View File

@@ -3,14 +3,14 @@ Adding a new device class (os type)
===================================
Create a file in includes/discovery/os, which fills the OS type variable if
you can identify the device as such (sysDescr or similar). Please use a
you can identify the device as such (sysDescr, sysObjectId or similar). Please use a
meaningful name!
Adjust discovery.php, running specific command based on OS type, if needed.
Create includes/polling/os/$osname.inc.php, for device specific polling.
Add an OS text name in includes/static-config.php
Add an OS text name and possibly other settings in includes/static-config.php
If desired, create a 32x32 logo, in html/images/os/$osname.png.

View File

@@ -3,6 +3,7 @@
if (!$os) {
if (preg_match("/D-Link .* AP/", $sysDescr)) { $os = "dlinkap"; }
else if (preg_match("/D-Link DAP-/", $sysDescr)) { $os = "dlinkap"; }
else if (preg_match("/D-Link Access Point/", $sysDescr)) { $os = "dlinkap"; }
}

View File

@@ -0,0 +1,9 @@
<?php
if(!$os)
{
if (strstr($sysObjectId, ".1.3.6.1.4.1.534")) { $os = "powerware"; }
}
?>

View File

@@ -1,6 +1,6 @@
<?php
echo("Temperatures : ");
echo("Temperatures: ");
include_dir("includes/discovery/temperatures");

View File

@@ -0,0 +1,32 @@
<?php
global $valid_sensor;
if($device['os'] == "powerware")
{
# XUPS-MIB::xupsEnvAmbientTemp.0 = INTEGER: 52
# XUPS-MIB::xupsEnvAmbientLowerLimit.0 = INTEGER: 0
# XUPS-MIB::xupsEnvAmbientUpperLimit.0 = INTEGER: 70
$oids = snmp_walk($device, "xupsEnvAmbientTemp", "-Osqn", "XUPS-MIB");
if ($debug) { echo($oids."\n"); }
$oids = trim($oids);
if ($oids) echo("Powerware Ambient Temperature ");
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$descr) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$temperature_id = $split_oid[count($split_oid)-1];
$temperature_oid = ".1.3.6.1.4.1.534.1.6.1.$temperature_id";
$lowlimit = snmp_get($device,"upsEnvAmbientLowerLimit.$temperature_id", "-Ovq", "XUPS-MIB");
$highlimit = snmp_get($device,"upsEnvAmbientUpperLimit.$temperature_id", "-Ovq", "XUPS-MIB");
$temperature = snmp_get($device, $temperature_oid, "-Ovq");
$descr = "Ambient" . (count(explode("\n",$oids)) == 1 ? '' : ' ' . ($temperature_id+1));
discover_sensor($valid_sensor, 'temperature', $device, $temperature_oid, '1.6.1.'.$temperature_id, 'powerware', $descr, '1', '1', $lowlimit, NULL, NULL, $highlimit, $temperature);
}
}
}
?>

View File

@@ -1,309 +1,8 @@
<?php
echo("Voltages : ");
echo("Voltages: ");
## LMSensors Voltages
if ($device['os'] == "linux")
{
$oids = snmp_walk($device, "lmVoltSensorsDevice", "-OsqnU", "LM-SENSORS-MIB");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("LM-SENSORS ");
$divisor = 1000;
$type = "lmsensors";
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.2021.13.16.4.1.3." . $index;
$current = snmp_get($device, $oid, "-Oqv", "LM-SENSORS-MIB") / $divisor;
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
}
## Areca Voltages
if ($device['os'] == "areca")
{
$oids = snmp_walk($device, "1.3.6.1.4.1.18928.1.2.2.1.8.1.2", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("Areca ");
$divisor = 1000;
$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.8.1.3." . $index;
$current = snmp_get($device, $oid, "-Oqv", "") / $divisor;
if ($descr != '"Battery Status"' || $current != 0.255) # FIXME not sure if this is supposed to be a voltage, but without BBU it's 225, then ignore.
{
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
}
}
## APC Voltages
if ($device['os'] == "apc")
{
$oids = snmp_walk($device, "1.3.6.1.4.1.318.1.1.8.5.3.3.1.3", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("APC In ");
$divisor = 1;
$type = "apc";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$current) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$index = $split_oid[count($split_oid)-3];
$oid = "1.3.6.1.4.1.318.1.1.8.5.3.3.1.3." . $index . ".1.1";
$descr = "Input Feed " . chr(64+$index);
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, "3.3.1.3.$index", $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
$oids = snmp_walk($device, "1.3.6.1.4.1.318.1.1.8.5.4.3.1.3", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo(" APC Out ");
$divisor = 1;
$type = "apc";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$current) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$index = $split_oid[count($split_oid)-3];
$oid = "1.3.6.1.4.1.318.1.1.8.5.4.3.1.3." . $index . ".1.1";
$descr = "Output Feed"; if (count(explode("\n", $oids)) > 1) { $descr .= " $index"; }
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, "4.3.1.3.$index", $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
$oids = snmp_get($device, "1.3.6.1.4.1.318.1.1.1.3.2.1.0", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids)
{
echo(" APC In ");
list($oid,$current) = explode(" ",$oids);
$divisor = 1;
$type = "apc";
$index = "3.2.1.0";
$descr = "Input";
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = snmp_get($device, "1.3.6.1.4.1.318.1.1.1.4.2.1.0", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids)
{
echo(" APC Out ");
list($oid,$current) = explode(" ",$oids);
$divisor = 1;
$type = "apc";
$index = "4.2.1.0";
$descr = "Output";
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
## Supermicro Voltages
if ($device['os'] == "linux")
{
$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";
$divisor = "1000";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
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.".$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") / $divisor;
$limit = snmp_get($device, $limit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB") / $divisor;
$lowlimit = snmp_get($device, $lowlimit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB") / $divisor;
$monitor = snmp_get($device, $monitor_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
$descr = trim(str_ireplace("Voltage", "", $descr));
if ($monitor == 'true')
{
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', $lowlimit, NULL, $limit, NULL, $current);
}
}
}
}
}
## MGE UPS Voltages
if ($device['os'] == "mgeups")
{
echo("MGE ");
$oids = trim(snmp_walk($device, "1.3.6.1.4.1.705.1.7.1", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.4.1.705.1.7.2.1.2.$i";
$descr = "Output"; if ($numPhase > 1) $descr .= " Phase $i";
$current = snmp_get($device, $volt_oid, "-Oqv");
if (!$current)
{
$volt_oid .= ".0";
$current = snmp_get($device, $volt_oid, "-Oqv");
}
$current /= 10;
$type = "mge-ups";
$divisor = 10;
$index = $i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.4.1.705.1.6.1", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.4.1.705.1.6.2.1.2.$i";
$descr = "Input"; if ($numPhase > 1) $descr .= " Phase $i";
$current = snmp_get($device, $volt_oid, "-Oqv");
if (!$current)
{
$volt_oid .= ".0";
$current = snmp_get($device, $volt_oid, "-Oqv");
}
$current /= 10;
$type = "mge-ups";
$divisor = 10;
$index = 100+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
## RFC1628 UPS Voltages
if ($device['os'] == "netmanplus" || $device['os'] == "deltaups")
{
echo("RFC1628 ");
$oids = snmp_walk($device, "1.3.6.1.2.1.33.1.2.5", "-Osqn", "UPS-MIB");
if ($debug) { echo($oids."\n"); }
$oids = trim($oids);
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$descr) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$volt_id = $split_oid[count($split_oid)-1];
$volt_oid = "1.3.6.1.2.1.33.1.2.5.$volt_id";
$divisor = 10;
$volt = snmp_get($device, $volt_oid, "-O vq") / $divisor;
#$volt = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $volt_oid")) / $divisor;
$descr = "Battery" . (count(explode("\n",$oids)) == 1 ? '' : ' ' . ($volt_id+1));
$type = "rfc1628";
$index = "1.2.5.".$volt_id;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.4.3.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.2.1.33.1.4.4.1.2.$i";
$descr = "Output"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = $i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.3.2.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = "1.3.6.1.2.1.33.1.3.3.1.3.$i";
$descr = "Input"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = 100+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.5.2.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = "1.3.6.1.2.1.33.1.5.3.1.2.$i";
$descr = "Bypass"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = 200+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
if ($device['os'] == "gamatronicups")
{
for($i = 1; $i <= 3 ;$i++)
{
$volt_oid = "GAMATRONIC-MIB::gamatronicLTD.5.4.1.1.2.$i";
$descr = "Input Phase $i";
$volt = snmp_get($device, $volt_oid, "-Oqv");
$type = "gamatronicups";
$divisor = 1;
$index = $i;
$lowlimit = 0;
$limit = NULL;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
for($i = 1; $i <= 3 ;$i++)
{
$volt_oid = "GAMATRONIC-MIB::gamatronicLTD.5.5.1.1.2.$i";
$descr = "Output Phase $i";
$volt = snmp_get($device, $volt_oid, "-Oqv");
$type = "gamatronicups";
$divisor = 1;
$index = 100+$i;
$lowlimit = 0;
$limit = NULL;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
}
include_dir("includes/discovery/voltages");
if($debug) { print_r($valid['voltage']); }

View File

@@ -0,0 +1,73 @@
<?php
global $valid_sensor;
## APC Voltages
if ($device['os'] == "apc")
{
$oids = snmp_walk($device, "1.3.6.1.4.1.318.1.1.8.5.3.3.1.3", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("APC In ");
$divisor = 1;
$type = "apc";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$current) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$index = $split_oid[count($split_oid)-3];
$oid = "1.3.6.1.4.1.318.1.1.8.5.3.3.1.3." . $index . ".1.1";
$descr = "Input Feed " . chr(64+$index);
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, "3.3.1.3.$index", $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
$oids = snmp_walk($device, "1.3.6.1.4.1.318.1.1.8.5.4.3.1.3", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo(" APC Out ");
$divisor = 1;
$type = "apc";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$current) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$index = $split_oid[count($split_oid)-3];
$oid = "1.3.6.1.4.1.318.1.1.8.5.4.3.1.3." . $index . ".1.1";
$descr = "Output Feed"; if (count(explode("\n", $oids)) > 1) { $descr .= " $index"; }
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, "4.3.1.3.$index", $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
$oids = snmp_get($device, "1.3.6.1.4.1.318.1.1.1.3.2.1.0", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids)
{
echo(" APC In ");
list($oid,$current) = explode(" ",$oids);
$divisor = 1;
$type = "apc";
$index = "3.2.1.0";
$descr = "Input";
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = snmp_get($device, "1.3.6.1.4.1.318.1.1.1.4.2.1.0", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids)
{
echo(" APC Out ");
list($oid,$current) = explode(" ",$oids);
$divisor = 1;
$type = "apc";
$index = "4.2.1.0";
$descr = "Output";
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
?>

View File

@@ -0,0 +1,30 @@
<?php
global $valid_sensor;
## Areca Voltages
if ($device['os'] == "areca")
{
$oids = snmp_walk($device, "1.3.6.1.4.1.18928.1.2.2.1.8.1.2", "-OsqnU", "");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("Areca ");
$divisor = 1000;
$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.8.1.3." . $index;
$current = snmp_get($device, $oid, "-Oqv", "") / $divisor;
if ($descr != '"Battery Status"' || $current != 0.255) # FIXME not sure if this is supposed to be a voltage, but without BBU it's 225, then ignore.
{
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
}
}
?>

View File

@@ -0,0 +1,34 @@
<?php
global $valid_sensor;
if ($device['os'] == "gamatronicups")
{
for($i = 1; $i <= 3 ;$i++)
{
$volt_oid = "GAMATRONIC-MIB::gamatronicLTD.5.4.1.1.2.$i";
$descr = "Input Phase $i";
$volt = snmp_get($device, $volt_oid, "-Oqv");
$type = "gamatronicups";
$divisor = 1;
$index = $i;
$lowlimit = 0;
$limit = NULL;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
for($i = 1; $i <= 3 ;$i++)
{
$volt_oid = "GAMATRONIC-MIB::gamatronicLTD.5.5.1.1.2.$i";
$descr = "Output Phase $i";
$volt = snmp_get($device, $volt_oid, "-Oqv");
$type = "gamatronicups";
$divisor = 1;
$index = 100+$i;
$lowlimit = 0;
$limit = NULL;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
}
?>

View File

@@ -0,0 +1,27 @@
<?php
global $valid_sensor;
## LMSensors Voltages
if ($device['os'] == "linux")
{
$oids = snmp_walk($device, "lmVoltSensorsDevice", "-OsqnU", "LM-SENSORS-MIB");
if ($debug) { echo($oids."\n"); }
if ($oids) echo("LM-SENSORS ");
$divisor = 1000;
$type = "lmsensors";
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.2021.13.16.4.1.3." . $index;
$current = snmp_get($device, $oid, "-Oqv", "LM-SENSORS-MIB") / $divisor;
echo discover_sensor($valid_sensor, 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
}
?>

View File

@@ -0,0 +1,48 @@
<?php
global $valid_sensor;
## MGE UPS Voltages
if ($device['os'] == "mgeups")
{
echo("MGE ");
$oids = trim(snmp_walk($device, "1.3.6.1.4.1.705.1.7.1", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.4.1.705.1.7.2.1.2.$i";
$descr = "Output"; if ($numPhase > 1) $descr .= " Phase $i";
$current = snmp_get($device, $volt_oid, "-Oqv");
if (!$current)
{
$volt_oid .= ".0";
$current = snmp_get($device, $volt_oid, "-Oqv");
}
$current /= 10;
$type = "mge-ups";
$divisor = 10;
$index = $i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.4.1.705.1.6.1", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.4.1.705.1.6.2.1.2.$i";
$descr = "Input"; if ($numPhase > 1) $descr .= " Phase $i";
$current = snmp_get($device, $volt_oid, "-Oqv");
if (!$current)
{
$volt_oid .= ".0";
$current = snmp_get($device, $volt_oid, "-Oqv");
}
$current /= 10;
$type = "mge-ups";
$divisor = 10;
$index = 100+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
?>

View File

@@ -0,0 +1,74 @@
<?php
global $valid_sensor;
## RFC1628 UPS Voltages
if ($device['os'] == "netmanplus" || $device['os'] == "deltaups")
{
echo("RFC1628 ");
$oids = snmp_walk($device, "1.3.6.1.2.1.33.1.2.5", "-Osqn", "UPS-MIB");
if ($debug) { echo($oids."\n"); }
$oids = trim($oids);
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
list($oid,$descr) = explode(" ", $data,2);
$split_oid = explode('.',$oid);
$volt_id = $split_oid[count($split_oid)-1];
$volt_oid = "1.3.6.1.2.1.33.1.2.5.$volt_id";
$divisor = 10;
$volt = snmp_get($device, $volt_oid, "-O vq") / $divisor;
#$volt = trim(shell_exec($config['snmpget'] . " -O qv -$snmpver -c $community $hostname:$port $volt_oid")) / $divisor;
$descr = "Battery" . (count(explode("\n",$oids)) == 1 ? '' : ' ' . ($volt_id+1));
$type = "rfc1628";
$index = "1.2.5.".$volt_id;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $volt);
}
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.4.3.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = ".1.3.6.1.2.1.33.1.4.4.1.2.$i";
$descr = "Output"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = $i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.3.2.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = "1.3.6.1.2.1.33.1.3.3.1.3.$i";
$descr = "Input"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = 100+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
$oids = trim(snmp_walk($device, "1.3.6.1.2.1.33.1.5.2.0", "-OsqnU"));
if ($debug) { echo($oids."\n"); }
list($unused,$numPhase) = explode(' ',$oids);
for($i = 1; $i <= $numPhase;$i++)
{
$volt_oid = "1.3.6.1.2.1.33.1.5.3.1.2.$i";
$descr = "Bypass"; if ($numPhase > 1) $descr .= " Phase $i";
$type = "rfc1628";
$divisor = 10; if ($device['os'] == "netmanplus") { $divisor = 1; };
$current = snmp_get($device, $volt_oid, "-Oqv") / $divisor;
$index = 200+$i;
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current);
}
}
?>

View File

@@ -0,0 +1,45 @@
<?php
global $valid_sensor;
## Supermicro Voltages
if ($device['os'] == "linux")
{
$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";
$divisor = "1000";
foreach(explode("\n", $oids) as $data)
{
$data = trim($data);
if ($data)
{
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.".$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") / $divisor;
$limit = snmp_get($device, $limit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB") / $divisor;
$lowlimit = snmp_get($device, $lowlimit_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB") / $divisor;
$monitor = snmp_get($device, $monitor_oid, "-Oqv", "SUPERMICRO-HEALTH-MIB");
$descr = trim(str_ireplace("Voltage", "", $descr));
if ($monitor == 'true')
{
echo discover_sensor($valid_sensor, 'voltage', $device, $volt_oid, $index, $type, $descr, $divisor, '1', $lowlimit, NULL, $limit, NULL, $current);
}
}
}
}
}
?>

View File

@@ -252,6 +252,10 @@ $os = "gamatronicups";
$config['os'][$os]['text'] = "Gamatronic UPS Stack";
$config['os'][$os]['type'] = "power";
$os = "powerware";
$config['os'][$os]['text'] = "Powerware UPS";
$config['os'][$os]['type'] = "power";
$os = "deltaups";
$config['os'][$os]['text'] = "Delta UPS";
$config['os'][$os]['type'] = "power";

2379
mibs/XUPS-MIB Normal file
View File

File diff suppressed because it is too large Load Diff