From 1ab6f3cdedd85513cf3a6d822bee767540874505 Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Mon, 9 Nov 2009 15:52:04 +0000 Subject: [PATCH] updates additions git-svn-id: http://www.observium.org/svn/observer/trunk@505 61d68cd4-352d-0410-923a-c4978735b2b8 --- discovery.php | 3 + html/includes/authenticate.inc | 2 +- html/includes/graphs/device_cpu_unix.inc.php | 38 +- .../graphs/device_cpu_windows.inc.php | 38 +- html/includes/graphs/device_hrstorage.inc.php | 2 - html/includes/graphs/device_load_unix.inc.php | 2 +- .../graphs/device_memory_unix.inc.php | 2 +- html/includes/graphs/hrProcessor.inc.php | 28 + html/includes/graphs/hrstorage.inc.php | 5 +- html/pages/device/health.inc.php | 6 + html/pages/device/health/hrprocessors.inc.php | 52 + includes/discovery/hr-device.inc.php | 44 + includes/discovery/storage.php | 9 +- includes/functions-poller.inc.php | 4 +- includes/polling/device-netstats.inc.php | 2 +- includes/polling/device-unix.inc.php | 103 +- includes/polling/device-windows.inc.php | 102 +- includes/polling/hr-mib.inc.php | 1 + includes/polling/hr-mib_processor.inc.php | 41 + includes/polling/ucd-mib.inc.php | 4 - mibs/ENTITY-MIB.txt | 1332 ----------------- test-discovery.php | 5 +- 22 files changed, 268 insertions(+), 1557 deletions(-) create mode 100755 html/includes/graphs/hrProcessor.inc.php create mode 100644 html/pages/device/health/hrprocessors.inc.php create mode 100755 includes/discovery/hr-device.inc.php create mode 100755 includes/polling/hr-mib_processor.inc.php delete mode 100644 mibs/ENTITY-MIB.txt diff --git a/discovery.php b/discovery.php index 98ad3fc28..56b9d0707 100755 --- a/discovery.php +++ b/discovery.php @@ -62,6 +62,9 @@ while ($device = mysql_fetch_array($device_query)) { ## Discover Storage include("includes/discovery/storage.php"); + ## hr-device.inc.php + include("includes/discovery/hr-device.inc.php"); + if($device['os'] == "Netscreen") { } if($device['os'] == "JunOS") { include("includes/discovery/bgp-peers.php"); } diff --git a/html/includes/authenticate.inc b/html/includes/authenticate.inc index 334ae3f13..8bc4e0615 100644 --- a/html/includes/authenticate.inc +++ b/html/includes/authenticate.inc @@ -43,7 +43,7 @@ if($row['username'] && $row['username'] == $_SESSION['username']) { setcookie("username", $_SESSION['username'], time()+60*60*24*100, "/"); setcookie("password", $_SESSION['password'], time()+60*60*24*100, "/"); } -} else { +} elseif ($_SESSION['username']) { $auth_message = "Authentication Failed"; unset ($_SESSION['authenticated']); mysql_query("INSERT INTO authlog (`user`,`address`,`result`) VALUES ('".$_SESSION['username']."', '".$_SERVER["REMOTE_ADDR"]."', 'authentication failure')"); diff --git a/html/includes/graphs/device_cpu_unix.inc.php b/html/includes/graphs/device_cpu_unix.inc.php index 31ca5c005..b400b1aad 100644 --- a/html/includes/graphs/device_cpu_unix.inc.php +++ b/html/includes/graphs/device_cpu_unix.inc.php @@ -1,9 +1,41 @@ diff --git a/html/includes/graphs/device_cpu_windows.inc.php b/html/includes/graphs/device_cpu_windows.inc.php index 31ca5c005..b400b1aad 100644 --- a/html/includes/graphs/device_cpu_windows.inc.php +++ b/html/includes/graphs/device_cpu_windows.inc.php @@ -1,9 +1,41 @@ diff --git a/html/includes/graphs/device_hrstorage.inc.php b/html/includes/graphs/device_hrstorage.inc.php index 3ec0b5cec..64ad6bf64 100644 --- a/html/includes/graphs/device_hrstorage.inc.php +++ b/html/includes/graphs/device_hrstorage.inc.php @@ -12,10 +12,8 @@ include("common.inc.php"); if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE"; } elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D"; } elseif($iter=="7") {$colour="FF0084"; $iter = "0"; } - $descr = str_pad($fs[hrStorageDescr], 14); $descr = substr($descr,0,14); - $text = str_replace("/", "_", $fs['hrStorageDescr']); $rrd = $config['rrd_dir'] . "/$hostname/hrStorage-".$fs['hrStorageIndex'].".rrd"; $rrd_options .= " DEF:$fs[storage_id]=$rrd:used:AVERAGE"; $rrd_options .= " DEF:$fs[storage_id]s=$rrd:size:AVERAGE"; diff --git a/html/includes/graphs/device_load_unix.inc.php b/html/includes/graphs/device_load_unix.inc.php index d764b7bb1..038370768 100644 --- a/html/includes/graphs/device_load_unix.inc.php +++ b/html/includes/graphs/device_load_unix.inc.php @@ -2,7 +2,7 @@ include("common.inc.php"); -$rrd_filename = $config['rrd_dir'] . "/" . $hostname . "/load.rrd"; +$rrd_filename = $config['rrd_dir'] . "/" . $hostname . "/ucd_load.rrd"; $rrd_options .= " DEF:1min=$rrd_filename:1min:AVERAGE"; $rrd_options .= " DEF:5min=$rrd_filename:5min:AVERAGE"; diff --git a/html/includes/graphs/device_memory_unix.inc.php b/html/includes/graphs/device_memory_unix.inc.php index 2d3ef2c9e..dc34d3c6b 100644 --- a/html/includes/graphs/device_memory_unix.inc.php +++ b/html/includes/graphs/device_memory_unix.inc.php @@ -2,7 +2,7 @@ include("common.inc.php"); -$rrd_filename = $config['rrd_dir'] . "/" . $hostname . "/mem.rrd"; +$rrd_filename = $config['rrd_dir'] . "/" . $hostname . "/ucd_mem.rrd"; $rrd_options .= " -b 1024"; diff --git a/html/includes/graphs/hrProcessor.inc.php b/html/includes/graphs/hrProcessor.inc.php new file mode 100755 index 000000000..69efb98f1 --- /dev/null +++ b/html/includes/graphs/hrProcessor.inc.php @@ -0,0 +1,28 @@ + diff --git a/html/includes/graphs/hrstorage.inc.php b/html/includes/graphs/hrstorage.inc.php index 8827b4e0e..8fe22ffe9 100644 --- a/html/includes/graphs/hrstorage.inc.php +++ b/html/includes/graphs/hrstorage.inc.php @@ -14,9 +14,8 @@ $rrd_options .= " -b 1024"; if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE"; } elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D"; } elseif($iter=="7") {$colour="FF0084"; $iter = "0"; } - $descr = str_pad($fs[hrStorageDescr], 12); - $descr = substr($descr,0,12); - $text = str_replace("/", "_", $fs['hrStorageDescr']); + $descr = substr(str_pad($fs[hrStorageDescr], 12),0,12); + $descr = str_replace(":","\:",$descr); $rrd = $config['rrd_dir'] . "/$hostname/hrStorage-".$fs['hrStorageIndex'].".rrd"; $rrd_options .= " DEF:$fs[storage_id]=$rrd:used:AVERAGE"; $rrd_options .= " DEF:$fs[storage_id]s=$rrd:size:AVERAGE"; diff --git a/html/pages/device/health.inc.php b/html/pages/device/health.inc.php index 356a36379..85b010498 100644 --- a/html/pages/device/health.inc.php +++ b/html/pages/device/health.inc.php @@ -4,16 +4,22 @@ $temp = mysql_result(mysql_query("select count(*) from temperature WHERE temp_ho $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); $cpm = mysql_result(mysql_query("select count(*) from cpmCPU 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); + if($temp) { $datas[] = 'temp'; } if($storage) { $datas[] = 'storage'; } if($cemp) { $datas[] = 'cemp'; } if($cpm) { $datas[] = 'cpm'; } +if($hrprocessor) { $datas[] = 'hrprocessors'; } + $type_text['temp'] = "Temperatures"; $type_text['cemp'] = "Memory Pools"; $type_text['cpm'] = "Processor Usage"; $type_text['storage'] = "Disk Usage"; +$type_text['hrprocessors'] = "Processor Usage"; + echo("
diff --git a/html/pages/device/health/hrprocessors.inc.php b/html/pages/device/health/hrprocessors.inc.php new file mode 100644 index 000000000..deb61d2d3 --- /dev/null +++ b/html/pages/device/health/hrprocessors.inc.php @@ -0,0 +1,52 @@ +"); + echo(""); + $i = '1'; + $procs = mysql_query("SELECT * FROM `hrDevice` WHERE device_id = '" . $device['device_id'] . "' AND hrDeviceType = 'hrDeviceProcessor'"); + while($proc = mysql_fetch_array($procs)) { + + $proc_url = "?page=device/".$device['device_id']."/health/hrprocessors/"; + + $proc_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$proc['entPhysicalDescr']; + $proc_popup .= "
"; + $proc_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; + + if($proc['cpuCPMTotal5minRev'] > '60') { $proc_colour='#cc0000'; } else { $proc_colour='#0000cc'; } + echo(" + + + "); + + echo(""); + + + $i++; + } + echo("
" . $proc['entPhysicalDescr'] . "" . $proc['hrProcessorTotal5minRev'] . "%
"); + + $daily_graph = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$day&to=$now&width=211&height=100"; + $daily_url = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$day&to=$now&width=400&height=150"; + + $weekly_graph = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$week&to=$now&width=211&height=100"; + $weekly_url = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$week&to=$now&width=400&height=150"; + + $monthly_graph = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$month&to=$now&width=211&height=100"; + $monthly_url = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$month&to=$now&width=400&height=150"; + + $yearly_graph = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$year&to=$now&width=211&height=100"; + $yearly_url = "graph.php?id=" . $proc['hrDevice_id'] . "&type=hrProcessor&from=$year&to=$now&width=400&height=150"; + + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("
"); + echo("
"); + + +?> diff --git a/includes/discovery/hr-device.inc.php b/includes/discovery/hr-device.inc.php new file mode 100755 index 000000000..73bfa917e --- /dev/null +++ b/includes/discovery/hr-device.inc.php @@ -0,0 +1,44 @@ + diff --git a/includes/discovery/storage.php b/includes/discovery/storage.php index 89180c161..2e48c6ec8 100755 --- a/includes/discovery/storage.php +++ b/includes/discovery/storage.php @@ -2,19 +2,21 @@ unset( $storage_exists ); - echo("hrStorage : "); + echo("HOST-RESOURCES-MIB Storage : "); - $oids = shell_exec($config['snmpwalk'] . " -m HOST-RESOURCES-MIB -Osq -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " hrStorageIndex"); + $oids = shell_exec($config['snmpwalk'] . " -CI -m HOST-RESOURCES-MIB -Osq -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " hrStorageIndex"); $oids = trim(str_replace("hrStorageIndex.","",$oids)); + echo(".. $oids .. "); + foreach(explode("\n", $oids) as $data) { + if($data) { $data = trim($data); list($oid,$hrStorageIndex) = explode(" ", $data); $temp = shell_exec($config['snmpget'] . " -m HOST-RESOURCES-MIB:HOST-RESOURCES-TYPES -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " hrStorageDescr.$oid hrStorageAllocationUnits.$oid hrStorageSize.$oid hrStorageType.$oid"); $temp = trim($temp); list($descr, $units, $size, $fstype) = explode("\n", $temp); list($units) = explode(" ", $units); - $allow = 1; foreach($config['ignore_mount'] as $bi) { if($descr == $bi) { @@ -39,6 +41,7 @@ } $storage_exists[] = $device[device_id]." $hrStorageIndex"; } else { echo("X"); }; + } } diff --git a/includes/functions-poller.inc.php b/includes/functions-poller.inc.php index a08a8f07c..887e9283e 100644 --- a/includes/functions-poller.inc.php +++ b/includes/functions-poller.inc.php @@ -2,14 +2,14 @@ function snmp_cache_cip($oid, $device, $array, $mib = 0) { global $config; - $cmd = $config['snmpbulkwalk'] . " -O snq -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " "; + $cmd = $config['snmpbulkwalk'] . " -O snQ -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " "; if($mib) { $cmd .= "-m $mib "; } $cmd .= $oid; $data = trim(shell_exec($cmd)); $device_id = $device['device_id']; #echo("Caching: $oid\n"); foreach(explode("\n", $data) as $entry) { - list ($this_oid, $this_value) = split(" ", $entry); + list ($this_oid, $this_value) = split("=", $entry); $this_oid = trim($this_oid); $this_value = trim($this_value); $this_oid = substr($this_oid, 30); diff --git a/includes/polling/device-netstats.inc.php b/includes/polling/device-netstats.inc.php index 878195593..c5a6ee770 100755 --- a/includes/polling/device-netstats.inc.php +++ b/includes/polling/device-netstats.inc.php @@ -20,7 +20,7 @@ if($device[os] != "Snom") { 'snmpOutBadValues','snmpOutGenErrs','snmpOutGetRequests','snmpOutGetNexts','snmpOutSetRequests','snmpOutGetResponses','snmpOutTraps', 'snmpEnableAuthenTraps','snmpSilentDrops','snmpProxyDrops'); - $oids['tcp'] = array ('tcpRtoMin', 'tcpRtoMax', 'tcpMaxConn', 'tcpActiveOpens', 'tcpPassiveOpens', 'tcpAttemptFails', 'tcpEstabResets', 'tcpCurrEstab', + $oids['tcp'] = array ('tcpActiveOpens', 'tcpPassiveOpens', 'tcpAttemptFails', 'tcpEstabResets', 'tcpCurrEstab', 'tcpInSegs', 'tcpOutSegs', 'tcpRetransSegs', 'tcpInErrs', 'tcpOutRsts', 'tcpHCInSegs', 'tcpHCOutSegs'); $oids['udp'] = array ('udpInDatagrams','udpOutDatagrams','udpInErrors','udpNoPorts'); diff --git a/includes/polling/device-unix.inc.php b/includes/polling/device-unix.inc.php index f18d1ca98..bfcca578f 100755 --- a/includes/polling/device-unix.inc.php +++ b/includes/polling/device-unix.inc.php @@ -1,9 +1,5 @@ diff --git a/includes/polling/hr-mib.inc.php b/includes/polling/hr-mib.inc.php index 934aa85e6..003c6a22a 100755 --- a/includes/polling/hr-mib.inc.php +++ b/includes/polling/hr-mib.inc.php @@ -32,5 +32,6 @@ if (!is_file($hrSystem_rrd)) { rrdtool_update($hrSystem_rrd, "N:$hrSystemNumUsers:$hrSystemProcesses:$uptime"); include("hr-mib_storage.inc.php"); // Run HOST-RESOURCES-MIB Storage +include("hr-mib_processor.inc.php"); // Run HOST-RESOURCES-MIB ProcessorLoad ?> diff --git a/includes/polling/hr-mib_processor.inc.php b/includes/polling/hr-mib_processor.inc.php new file mode 100755 index 000000000..252e6d6b3 --- /dev/null +++ b/includes/polling/hr-mib_processor.inc.php @@ -0,0 +1,41 @@ + diff --git a/includes/polling/ucd-mib.inc.php b/includes/polling/ucd-mib.inc.php index 54dd9a905..08214859e 100755 --- a/includes/polling/ucd-mib.inc.php +++ b/includes/polling/ucd-mib.inc.php @@ -40,8 +40,6 @@ if (!is_file($cpurrd)) { rrdtool_update($cpurrd, "N:$cpuUser:$cpuSystem:$cpuNice:$cpuIdle"); -## If the device isn't monowall or pfsense, monitor all the pretty things -if($device[os] != "m0n0wall" && $device[os] != "Voswall" && $device[os] != "pfSense" ) { if (!is_file($memrrd)) { shell_exec($config['rrdtool'] . " create $memrrd \ --step 300 \ @@ -93,5 +91,3 @@ if($device[os] != "m0n0wall" && $device[os] != "Voswall" && $device[os] != "pfSe rrdtool_update($loadrrd, "N:$load1:$load5:$load10"); rrdtool_update($memrrd, "N:$memTotalSwap:$memAvailSwap:$memTotalReal:$memAvailReal:$memTotalFree:$memShared:$memBuffer:$memCached"); -} // end Non-m0n0wall - diff --git a/mibs/ENTITY-MIB.txt b/mibs/ENTITY-MIB.txt deleted file mode 100644 index 39794415c..000000000 --- a/mibs/ENTITY-MIB.txt +++ /dev/null @@ -1,1332 +0,0 @@ --- extracted from rfc2737.txt --- at Wed Dec 15 07:07:49 1999 - -ENTITY-MIB DEFINITIONS ::= BEGIN - -IMPORTS - MODULE-IDENTITY, - OBJECT-TYPE, - mib-2, - NOTIFICATION-TYPE - FROM SNMPv2-SMI - TDomain, - TAddress, - TEXTUAL-CONVENTION, - AutonomousType, - RowPointer, - TimeStamp, - TruthValue - FROM SNMPv2-TC - MODULE-COMPLIANCE, - OBJECT-GROUP, - NOTIFICATION-GROUP - FROM SNMPv2-CONF - SnmpAdminString - FROM SNMP-FRAMEWORK-MIB; - -entityMIB MODULE-IDENTITY - LAST-UPDATED "9912070000Z" - ORGANIZATION "IETF ENTMIB Working Group" - CONTACT-INFO - "WG E-mail: entmib@cisco.com - Subscribe: majordomo@cisco.com - msg body: subscribe entmib - - Keith McCloghrie - ENTMIB Working Group Chair - Cisco Systems Inc. - 170 West Tasman Drive - San Jose, CA 95134 - +1 408-526-5260 - kzm@cisco.com - - Andy Bierman - ENTMIB Working Group Editor - Cisco Systems Inc. - 170 West Tasman Drive - San Jose, CA 95134 - +1 408-527-3711 - abierman@cisco.com" - DESCRIPTION - "The MIB module for representing multiple logical - entities supported by a single SNMP agent." - REVISION "9912070000Z" - DESCRIPTION - "Initial Version of Entity MIB (Version 2). - This revision obsoletes RFC 2037. - This version published as RFC 2737." - REVISION "9610310000Z" - DESCRIPTION - "Initial version (version 1), published as - RFC 2037." - ::= { mib-2 47 } - - -entityMIBObjects OBJECT IDENTIFIER ::= { entityMIB 1 } - --- MIB contains four groups - -entityPhysical OBJECT IDENTIFIER ::= { entityMIBObjects 1 } - -entityLogical OBJECT IDENTIFIER ::= { entityMIBObjects 2 } - -entityMapping OBJECT IDENTIFIER ::= { entityMIBObjects 3 } - -entityGeneral OBJECT IDENTIFIER ::= { entityMIBObjects 4 } - --- Textual Conventions - -PhysicalIndex ::= TEXTUAL-CONVENTION - STATUS current - DESCRIPTION - "An arbitrary value which uniquely identifies the physical - entity. The value should be a small positive integer; index - values for different physical entities are not necessarily - contiguous." - SYNTAX INTEGER (1..2147483647) - - -PhysicalClass ::= TEXTUAL-CONVENTION - STATUS current - DESCRIPTION - "An enumerated value which provides an indication of the - general hardware type of a particular physical entity. - There are no restrictions as to the number of - entPhysicalEntries of each entPhysicalClass, which must be - instantiated by an agent. - - The enumeration 'other' is applicable if the physical entity - class is known, but does not match any of the supported - values. - - The enumeration 'unknown' is applicable if the physical - entity class is unknown to the agent. - - The enumeration 'chassis' is applicable if the physical - entity class is an overall container for networking - equipment. Any class of physical entity except a stack may - be contained within a chassis, and a chassis may only be - contained within a stack. - - The enumeration 'backplane' is applicable if the physical - entity class is some sort of device for aggregating and - forwarding networking traffic, such as a shared backplane in - a modular ethernet switch. Note that an agent may model a - backplane as a single physical entity, which is actually - implemented as multiple discrete physical components (within - a chassis or stack). - - The enumeration 'container' is applicable if the physical - entity class is capable of containing one or more removable - physical entities, possibly of different types. For example, - each (empty or full) slot in a chassis will be modeled as a - container. Note that all removable physical entities should - be modeled within a container entity, such as field- - replaceable modules, fans, or power supplies. Note that all - known containers should be modeled by the agent, including - empty containers. - - The enumeration 'powerSupply' is applicable if the physical - entity class is a power-supplying component. - - The enumeration 'fan' is applicable if the physical entity - class is a fan or other heat-reduction component. - - The enumeration 'sensor' is applicable if the physical - entity class is some sort of sensor, such as a temperature - sensor within a router chassis. - - The enumeration 'module' is applicable if the physical - entity class is some sort of self-contained sub-system. If - it is removable, then it should be modeled within a - container entity, otherwise it should be modeled directly - within another physical entity (e.g., a chassis or another - module). - - The enumeration 'port' is applicable if the physical entity - class is some sort of networking port, capable of receiving - and/or transmitting networking traffic. - - The enumeration 'stack' is applicable if the physical entity - class is some sort of super-container (possibly virtual), - intended to group together multiple chassis entities. A - stack may be realized by a 'virtual' cable, a real - interconnect cable, attached to multiple chassis, or may in - fact be comprised of multiple interconnect cables. A stack - should not be modeled within any other physical entities, - but a stack may be contained within another stack. Only - chassis entities should be contained within a stack." - SYNTAX INTEGER { - other(1), - unknown(2), - chassis(3), - backplane(4), - container(5), -- e.g., chassis slot or daughter-card holder - powerSupply(6), - fan(7), - sensor(8), - module(9), -- e.g., plug-in card or daughter-card - port(10), - stack(11) -- e.g., stack of multiple chassis entities - } - - -SnmpEngineIdOrNone ::= TEXTUAL-CONVENTION - STATUS current - DESCRIPTION - "A specially formatted SnmpEngineID string for use with the - Entity MIB. - - If an instance of an object of SYNTAX SnmpEngineIdOrNone has - a non-zero length, then the object encoding and semantics - are defined by the SnmpEngineID textual convention (see RFC - 2571 [RFC2571]). - - If an instance of an object of SYNTAX SnmpEngineIdOrNone - contains a zero-length string, then no appropriate - SnmpEngineID is associated with the logical entity (i.e., - SNMPv3 not supported)." - SYNTAX OCTET STRING (SIZE (0..32)) - - --- empty string or SnmpEngineID --- The Physical Entity Table - -entPhysicalTable OBJECT-TYPE - SYNTAX SEQUENCE OF EntPhysicalEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains one row per physical entity. There is - always at least one row for an 'overall' physical entity." - ::= { entityPhysical 1 } - - -entPhysicalEntry OBJECT-TYPE - SYNTAX EntPhysicalEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about a particular physical entity. - - Each entry provides objects (entPhysicalDescr, - entPhysicalVendorType, and entPhysicalClass) to help an NMS - identify and characterize the entry, and objects - (entPhysicalContainedIn and entPhysicalParentRelPos) to help - an NMS relate the particular entry to other entries in this - table." - INDEX { - entPhysicalIndex } - ::= { entPhysicalTable 1 } - - -EntPhysicalEntry ::= SEQUENCE { - entPhysicalIndex PhysicalIndex, - entPhysicalDescr SnmpAdminString, - entPhysicalVendorType AutonomousType, - entPhysicalContainedIn INTEGER, - entPhysicalClass PhysicalClass, - entPhysicalParentRelPos INTEGER, - entPhysicalName SnmpAdminString, - entPhysicalHardwareRev SnmpAdminString, - entPhysicalFirmwareRev SnmpAdminString, - entPhysicalSoftwareRev SnmpAdminString, - entPhysicalSerialNum SnmpAdminString, - entPhysicalMfgName SnmpAdminString, - entPhysicalModelName SnmpAdminString, - entPhysicalAlias SnmpAdminString, - entPhysicalAssetID SnmpAdminString, - entPhysicalIsFRU TruthValue } - - -entPhysicalIndex OBJECT-TYPE - SYNTAX PhysicalIndex - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The index for this entry." - ::= { entPhysicalEntry 1 } - - -entPhysicalDescr OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A textual description of physical entity. This object - should contain a string which identifies the manufacturer's - name for the physical entity, and should be set to a - distinct value for each version or model of the physical - entity." - ::= { entPhysicalEntry 2 } - - -entPhysicalVendorType OBJECT-TYPE - SYNTAX AutonomousType - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "An indication of the vendor-specific hardware type of the - physical entity. Note that this is different from the - definition of MIB-II's sysObjectID. - - An agent should set this object to a enterprise-specific - registration identifier value indicating the specific - equipment type in detail. The associated instance of - entPhysicalClass is used to indicate the general type of - hardware device. - - If no vendor-specific registration identifier exists for - this physical entity, or the value is unknown by this agent, - then the value { 0 0 } is returned." - ::= { entPhysicalEntry 3 } - - -entPhysicalContainedIn OBJECT-TYPE - SYNTAX INTEGER (0..2147483647) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of entPhysicalIndex for the physical entity which - 'contains' this physical entity. A value of zero indicates - this physical entity is not contained in any other physical - entity. Note that the set of 'containment' relationships - define a strict hierarchy; that is, recursion is not - allowed. - - In the event a physical entity is contained by more than one - physical entity (e.g., double-wide modules), this object - should identify the containing entity with the lowest value - of entPhysicalIndex." - ::= { entPhysicalEntry 4 } - - -entPhysicalClass OBJECT-TYPE - SYNTAX PhysicalClass - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "An indication of the general hardware type of the physical - entity. - - An agent should set this object to the standard enumeration - value which most accurately indicates the general class of - the physical entity, or the primary class if there is more - than one. - - If no appropriate standard registration identifier exists - for this physical entity, then the value 'other(1)' is - returned. If the value is unknown by this agent, then the - value 'unknown(2)' is returned." - ::= { entPhysicalEntry 5 } - - -entPhysicalParentRelPos OBJECT-TYPE - SYNTAX INTEGER (-1..2147483647) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "An indication of the relative position of this 'child' - component among all its 'sibling' components. Sibling - components are defined as entPhysicalEntries which share the - same instance values of each of the entPhysicalContainedIn - and entPhysicalClass objects. - - An NMS can use this object to identify the relative ordering - for all sibling components of a particular parent - (identified by the entPhysicalContainedIn instance in each - sibling entry). - - This value should match any external labeling of the - physical component if possible. For example, for a container - (e.g., card slot) labeled as 'slot #3', - entPhysicalParentRelPos should have the value '3'. Note - that the entPhysicalEntry for the module plugged in slot 3 - should have an entPhysicalParentRelPos value of '1'. - - If the physical position of this component does not match - any external numbering or clearly visible ordering, then - user documentation or other external reference material - should be used to determine the parent-relative position. If - this is not possible, then the the agent should assign a - consistent (but possibly arbitrary) ordering to a given set - of 'sibling' components, perhaps based on internal - representation of the components. - - If the agent cannot determine the parent-relative position - for some reason, or if the associated value of - entPhysicalContainedIn is '0', then the value '-1' is - returned. Otherwise a non-negative integer is returned, - indicating the parent-relative position of this physical - entity. - - Parent-relative ordering normally starts from '1' and - continues to 'N', where 'N' represents the highest - positioned child entity. However, if the physical entities - (e.g., slots) are labeled from a starting position of zero, - then the first sibling should be associated with a - entPhysicalParentRelPos value of '0'. Note that this - ordering may be sparse or dense, depending on agent - implementation. - - The actual values returned are not globally meaningful, as - each 'parent' component may use different numbering - algorithms. The ordering is only meaningful among siblings - of the same parent component. - - The agent should retain parent-relative position values - across reboots, either through algorithmic assignment or use - of non-volatile storage." - ::= { entPhysicalEntry 6 } - - -entPhysicalName OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The textual name of the physical entity. The value of this - object should be the name of the component as assigned by - the local device and should be suitable for use in commands - entered at the device's `console'. This might be a text - name, such as `console' or a simple component number (e.g., - port or module number), such as `1', depending on the - physical component naming syntax of the device. - - If there is no local name, or this object is otherwise not - applicable, then this object contains a zero-length string. - - Note that the value of entPhysicalName for two physical - entities will be the same in the event that the console - interface does not distinguish between them, e.g., slot-1 - and the card in slot-1." - ::= { entPhysicalEntry 7 } - - -entPhysicalHardwareRev OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The vendor-specific hardware revision string for the - physical entity. The preferred value is the hardware - revision identifier actually printed on the component itself - (if present). - - Note that if revision information is stored internally in a - non-printable (e.g., binary) format, then the agent must - convert such information to a printable format, in an - implementation-specific manner. - - If no specific hardware revision string is associated with - the physical component, or this information is unknown to - the agent, then this object will contain a zero-length - string." - ::= { entPhysicalEntry 8 } - - -entPhysicalFirmwareRev OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The vendor-specific firmware revision string for the - physical entity. - - Note that if revision information is stored internally in a - non-printable (e.g., binary) format, then the agent must - convert such information to a printable format, in an - implementation-specific manner. - - If no specific firmware programs are associated with the - physical component, or this information is unknown to the - agent, then this object will contain a zero-length string." - ::= { entPhysicalEntry 9 } - - -entPhysicalSoftwareRev OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The vendor-specific software revision string for the - physical entity. - - Note that if revision information is stored internally in a - non-printable (e.g., binary) format, then the agent must - convert such information to a printable format, in an - implementation-specific manner. - - If no specific software programs are associated with the - physical component, or this information is unknown to the - agent, then this object will contain a zero-length string." - ::= { entPhysicalEntry 10 } - - -entPhysicalSerialNum OBJECT-TYPE - SYNTAX SnmpAdminString (SIZE (0..32)) - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The vendor-specific serial number string for the physical - entity. The preferred value is the serial number string - actually printed on the component itself (if present). - - On the first instantiation of an physical entity, the value - of entPhysicalSerialNum associated with that entity is set - to the correct vendor-assigned serial number, if this - information is available to the agent. If a serial number - is unknown or non-existent, the entPhysicalSerialNum will be - set to a zero-length string instead. - - Note that implementations which can correctly identify the - serial numbers of all installed physical entities do not - need to provide write access to the entPhysicalSerialNum - object. Agents which cannot provide non-volatile storage for - the entPhysicalSerialNum strings are not required to - implement write access for this object. - - Not every physical component will have a serial number, or - even need one. Physical entities for which the associated - value of the entPhysicalIsFRU object is equal to 'false(2)' - (e.g., the repeater ports within a repeater module), do not - need their own unique serial number. An agent does not have - to provide write access for such entities, and may return a - zero-length string. - - If write access is implemented for an instance of - entPhysicalSerialNum, and a value is written into the - instance, the agent must retain the supplied value in the - entPhysicalSerialNum instance associated with the same - physical entity for as long as that entity remains - instantiated. This includes instantiations across all re- - initializations/reboots of the network management system, - including those which result in a change of the physical - entity's entPhysicalIndex value." - ::= { entPhysicalEntry 11 } - - -entPhysicalMfgName OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The name of the manufacturer of this physical component. - The preferred value is the manufacturer name string actually - printed on the component itself (if present). - Note that comparisons between instances of the - entPhysicalModelName, entPhysicalFirmwareRev, - entPhysicalSoftwareRev, and the entPhysicalSerialNum - objects, are only meaningful amongst entPhysicalEntries with - the same value of entPhysicalMfgName. - - If the manufacturer name string associated with the physical - component is unknown to the agent, then this object will - contain a zero-length string." - ::= { entPhysicalEntry 12 } - - -entPhysicalModelName OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The vendor-specific model name identifier string associated - with this physical component. The preferred value is the - customer-visible part number, which may be printed on the - component itself. - - If the model name string associated with the physical - component is unknown to the agent, then this object will - contain a zero-length string." - ::= { entPhysicalEntry 13 } - - -entPhysicalAlias OBJECT-TYPE - SYNTAX SnmpAdminString (SIZE (0..32)) - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "This object is an 'alias' name for the physical entity as - specified by a network manager, and provides a non-volatile - 'handle' for the physical entity. - - On the first instantiation of an physical entity, the value - of entPhysicalAlias associated with that entity is set to - the zero-length string. However, agent may set the value to - a locally unique default value, instead of a zero-length - string. - - If write access is implemented for an instance of - entPhysicalAlias, and a value is written into the instance, - the agent must retain the supplied value in the - entPhysicalAlias instance associated with the same physical - entity for as long as that entity remains instantiated. - This includes instantiations across all re- - initializations/reboots of the network management system, - including those which result in a change of the physical - entity's entPhysicalIndex value." - ::= { entPhysicalEntry 14 } - - -entPhysicalAssetID OBJECT-TYPE - SYNTAX SnmpAdminString (SIZE (0..32)) - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "This object is a user-assigned asset tracking identifier - for the physical entity as specified by a network manager, - and provides non-volatile storage of this information. - - On the first instantiation of an physical entity, the value - of entPhysicalAssetID associated with that entity is set to - the zero-length string. - - Not every physical component will have a asset tracking - identifier, or even need one. Physical entities for which - the associated value of the entPhysicalIsFRU object is equal - to 'false(2)' (e.g., the repeater ports within a repeater - module), do not need their own unique asset tracking - identifier. An agent does not have to provide write access - for such entities, and may instead return a zero-length - string. - - If write access is implemented for an instance of - entPhysicalAssetID, and a value is written into the - instance, the agent must retain the supplied value in the - entPhysicalAssetID instance associated with the same - physical entity for as long as that entity remains - instantiated. This includes instantiations across all re- - initializations/reboots of the network management system, - including those which result in a change of the physical - entity's entPhysicalIndex value. - - If no asset tracking information is associated with the - physical component, then this object will contain a zero- - length string." - ::= { entPhysicalEntry 15 } - - -entPhysicalIsFRU OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This object indicates whether or not this physical entity - is considered a 'field replaceable unit' by the vendor. If - this object contains the value 'true(1)' then this - entPhysicalEntry identifies a field replaceable unit. For - all entPhysicalEntries which represent components that are - permanently contained within a field replaceable unit, the - value 'false(2)' should be returned for this object." - ::= { entPhysicalEntry 16 } - - --- The Logical Entity Table - -entLogicalTable OBJECT-TYPE - SYNTAX SEQUENCE OF EntLogicalEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains one row per logical entity. For agents - which implement more than one naming scope, at least one - entry must exist. Agents which instantiate all MIB objects - within a single naming scope are not required to implement - this table." - ::= { entityLogical 1 } - - -entLogicalEntry OBJECT-TYPE - SYNTAX EntLogicalEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about a particular logical entity. Entities - may be managed by this agent or other SNMP agents (possibly) - in the same chassis." - INDEX { - entLogicalIndex } - ::= { entLogicalTable 1 } - - -EntLogicalEntry ::= SEQUENCE { - entLogicalIndex INTEGER, - entLogicalDescr SnmpAdminString, - entLogicalType AutonomousType, - entLogicalCommunity OCTET STRING, - entLogicalTAddress TAddress, - entLogicalTDomain TDomain, - entLogicalContextEngineID SnmpEngineIdOrNone, - entLogicalContextName SnmpAdminString } - - -entLogicalIndex OBJECT-TYPE - SYNTAX INTEGER (1..2147483647) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The value of this object uniquely identifies the logical - entity. The value should be a small positive integer; index - values for different logical entities are are not - necessarily contiguous." - ::= { entLogicalEntry 1 } - - -entLogicalDescr OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A textual description of the logical entity. This object - should contain a string which identifies the manufacturer's - name for the logical entity, and should be set to a distinct - value for each version of the logical entity." - ::= { entLogicalEntry 2 } - - -entLogicalType OBJECT-TYPE - SYNTAX AutonomousType - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "An indication of the type of logical entity. This will - typically be the OBJECT IDENTIFIER name of the node in the - SMI's naming hierarchy which represents the major MIB - module, or the majority of the MIB modules, supported by the - logical entity. For example: - a logical entity of a regular host/router -> mib-2 - a logical entity of a 802.1d bridge -> dot1dBridge - a logical entity of a 802.3 repeater -> snmpDot3RptrMgmt - If an appropriate node in the SMI's naming hierarchy cannot - be identified, the value 'mib-2' should be used." - ::= { entLogicalEntry 3 } - - -entLogicalCommunity OBJECT-TYPE - SYNTAX OCTET STRING (SIZE (0..255)) - MAX-ACCESS read-only - STATUS deprecated - DESCRIPTION - "An SNMPv1 or SNMPv2C community-string which can be used to - access detailed management information for this logical - entity. The agent should allow read access with this - community string (to an appropriate subset of all managed - objects) and may also return a community string based on the - privileges of the request used to read this object. Note - that an agent may return a community string with read-only - privileges, even if this object is accessed with a read- - write community string. However, the agent must take care - not to return a community string which allows more - privileges than the community string used to access this - object. - - A compliant SNMP agent may wish to conserve naming scopes by - representing multiple logical entities in a single 'default' - naming scope. This is possible when the logical entities - represented by the same value of entLogicalCommunity have no - object instances in common. For example, 'bridge1' and - 'repeater1' may be part of the main naming scope, but at - least one additional community string is needed to represent - 'bridge2' and 'repeater2'. - - Logical entities 'bridge1' and 'repeater1' would be - represented by sysOREntries associated with the 'default' - naming scope. - - For agents not accessible via SNMPv1 or SNMPv2C, the value - of this object is the empty string. This object may also - contain an empty string if a community string has not yet - been assigned by the agent, or no community string with - suitable access rights can be returned for a particular SNMP - request. - - Note that this object is deprecated. Agents which implement - SNMPv3 access should use the entLogicalContextEngineID and - entLogicalContextName objects to identify the context - associated with each logical entity. SNMPv3 agents may - return a zero-length string for this object, or may continue - to return a community string (e.g., tri-lingual agent - support)." - ::= { entLogicalEntry 4 } - - -entLogicalTAddress OBJECT-TYPE - SYNTAX TAddress - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The transport service address by which the logical entity - receives network management traffic, formatted according to - the corresponding value of entLogicalTDomain. - - For snmpUDPDomain, a TAddress is 6 octets long, the initial - 4 octets containing the IP-address in network-byte order and - the last 2 containing the UDP port in network-byte order. - Consult 'Transport Mappings for Version 2 of the Simple - Network Management Protocol' (RFC 1906 [RFC1906]) for - further information on snmpUDPDomain." - ::= { entLogicalEntry 5 } - - -entLogicalTDomain OBJECT-TYPE - SYNTAX TDomain - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates the kind of transport service by which the - logical entity receives network management traffic. - Possible values for this object are presently found in the - Transport Mappings for SNMPv2 document (RFC 1906 - [RFC1906])." - ::= { entLogicalEntry 6 } - - -entLogicalContextEngineID OBJECT-TYPE - SYNTAX SnmpEngineIdOrNone - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The authoritative contextEngineID that can be used to send - an SNMP message concerning information held by this logical - entity, to the address specified by the associated - 'entLogicalTAddress/entLogicalTDomain' pair. - - This object, together with the associated - entLogicalContextName object, defines the context associated - with a particular logical entity, and allows access to SNMP - engines identified by a contextEngineId and contextName - pair. - - If no value has been configured by the agent, a zero-length - string is returned, or the agent may choose not to - instantiate this object at all." - ::= { entLogicalEntry 7 } - - -entLogicalContextName OBJECT-TYPE - SYNTAX SnmpAdminString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The contextName that can be used to send an SNMP message - concerning information held by this logical entity, to the - address specified by the associated - 'entLogicalTAddress/entLogicalTDomain' pair. - - This object, together with the associated - entLogicalContextEngineID object, defines the context - associated with a particular logical entity, and allows - access to SNMP engines identified by a contextEngineId and - contextName pair. - - If no value has been configured by the agent, a zero-length - string is returned, or the agent may choose not to - instantiate this object at all." - ::= { entLogicalEntry 8 } - - -entLPMappingTable OBJECT-TYPE - SYNTAX SEQUENCE OF EntLPMappingEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains zero or more rows of logical entity to - physical equipment associations. For each logical entity - known by this agent, there are zero or more mappings to the - physical resources which are used to realize that logical - entity. - - An agent should limit the number and nature of entries in - this table such that only meaningful and non-redundant - information is returned. For example, in a system which - contains a single power supply, mappings between logical - entities and the power supply are not useful and should not - be included. - - Also, only the most appropriate physical component which is - closest to the root of a particular containment tree should - be identified in an entLPMapping entry. - - For example, suppose a bridge is realized on a particular - module, and all ports on that module are ports on this - bridge. A mapping between the bridge and the module would be - useful, but additional mappings between the bridge and each - of the ports on that module would be redundant (since the - entPhysicalContainedIn hierarchy can provide the same - information). If, on the other hand, more than one bridge - was utilizing ports on this module, then mappings between - each bridge and the ports it used would be appropriate. - - Also, in the case of a single backplane repeater, a mapping - for the backplane to the single repeater entity is not - necessary." - ::= { entityMapping 1 } - - -entLPMappingEntry OBJECT-TYPE - SYNTAX EntLPMappingEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about a particular logical entity to physical - equipment association. Note that the nature of the - association is not specifically identified in this entry. - It is expected that sufficient information exists in the - MIBs used to manage a particular logical entity to infer how - physical component information is utilized." - INDEX { - entLogicalIndex, - entLPPhysicalIndex } - ::= { entLPMappingTable 1 } - - -EntLPMappingEntry ::= SEQUENCE { - entLPPhysicalIndex PhysicalIndex } - - -entLPPhysicalIndex OBJECT-TYPE - SYNTAX PhysicalIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of this object identifies the index value of a - particular entPhysicalEntry associated with the indicated - entLogicalEntity." - ::= { entLPMappingEntry 1 } - - --- logical entity/component to alias table - -entAliasMappingTable OBJECT-TYPE - SYNTAX SEQUENCE OF EntAliasMappingEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains zero or more rows, representing - mappings of logical entity and physical component to - external MIB identifiers. Each physical port in the system - may be associated with a mapping to an external identifier, - which itself is associated with a particular logical - entity's naming scope. A 'wildcard' mechanism is provided - to indicate that an identifier is associated with more than - one logical entity." - ::= { entityMapping 2 } - - -entAliasMappingEntry OBJECT-TYPE - SYNTAX EntAliasMappingEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about a particular physical equipment, logical - entity to external identifier binding. Each logical - entity/physical component pair may be associated with one - alias mapping. The logical entity index may also be used as - a 'wildcard' (refer to the entAliasLogicalIndexOrZero object - DESCRIPTION clause for details.) - - Note that only entPhysicalIndex values which represent - physical ports (i.e. associated entPhysicalClass value is - 'port(10)') are permitted to exist in this table." - INDEX { - entPhysicalIndex, - entAliasLogicalIndexOrZero } - ::= { entAliasMappingTable 1 } - - -EntAliasMappingEntry ::= SEQUENCE { - entAliasLogicalIndexOrZero INTEGER, - entAliasMappingIdentifier RowPointer } - - -entAliasLogicalIndexOrZero OBJECT-TYPE - SYNTAX INTEGER (0..2147483647) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The value of this object identifies the logical entity - which defines the naming scope for the associated instance - of the 'entAliasMappingIdentifier' object. - - If this object has a non-zero value, then it identifies the - logical entity named by the same value of entLogicalIndex. - - If this object has a value of zero, then the mapping between - the physical component and the alias identifier for this - entAliasMapping entry is associated with all unspecified - logical entities. That is, a value of zero (the default - mapping) identifies any logical entity which does not have - an explicit entry in this table for a particular - entPhysicalIndex/entAliasMappingIdentifier pair. - - For example, to indicate that a particular interface (e.g., - physical component 33) is identified by the same value of - ifIndex for all logical entities, the following instance - might exist: - - entAliasMappingIdentifier.33.0 = ifIndex.5 - - In the event an entPhysicalEntry is associated differently - for some logical entities, additional entAliasMapping - entries may exist, e.g.: - - entAliasMappingIdentifier.33.0 = ifIndex.6 - entAliasMappingIdentifier.33.4 = ifIndex.1 - entAliasMappingIdentifier.33.5 = ifIndex.1 - entAliasMappingIdentifier.33.10 = ifIndex.12 - - Note that entries with non-zero entAliasLogicalIndexOrZero - index values have precedence over any zero-indexed entry. In - this example, all logical entities except 4, 5, and 10, - associate physical entity 33 with ifIndex.6." - ::= { entAliasMappingEntry 1 } - - -entAliasMappingIdentifier OBJECT-TYPE - SYNTAX RowPointer - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of this object identifies a particular conceptual - row associated with the indicated entPhysicalIndex and - entLogicalIndex pair. - - Since only physical ports are modeled in this table, only - entries which represent interfaces or ports are allowed. If - an ifEntry exists on behalf of a particular physical port, - then this object should identify the associated 'ifEntry'. - For repeater ports, the appropriate row in the - 'rptrPortGroupTable' should be identified instead. - - For example, suppose a physical port was represented by - entPhysicalEntry.3, entLogicalEntry.15 existed for a - repeater, and entLogicalEntry.22 existed for a bridge. Then - there might be two related instances of - entAliasMappingIdentifier: - entAliasMappingIdentifier.3.15 == rptrPortGroupIndex.5.2 - entAliasMappingIdentifier.3.22 == ifIndex.17 - It is possible that other mappings (besides interfaces and - repeater ports) may be defined in the future, as required. - - Bridge ports are identified by examining the Bridge MIB and - appropriate ifEntries associated with each 'dot1dBasePort', - and are thus not represented in this table." - ::= { entAliasMappingEntry 2 } - - --- physical mapping table - -entPhysicalContainsTable OBJECT-TYPE - SYNTAX SEQUENCE OF EntPhysicalContainsEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A table which exposes the container/'containee' - relationships between physical entities. This table provides - all the information found by constructing the virtual - containment tree for a given entPhysicalTable, but in a more - direct format. - - In the event a physical entity is contained by more than one - other physical entity (e.g., double-wide modules), this - table should include these additional mappings, which cannot - be represented in the entPhysicalTable virtual containment - tree." - ::= { entityMapping 3 } - - -entPhysicalContainsEntry OBJECT-TYPE - SYNTAX EntPhysicalContainsEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single container/'containee' relationship." - INDEX { - entPhysicalIndex, - entPhysicalChildIndex } - ::= { entPhysicalContainsTable 1 } - - -EntPhysicalContainsEntry ::= SEQUENCE { - entPhysicalChildIndex PhysicalIndex } - - -entPhysicalChildIndex OBJECT-TYPE - SYNTAX PhysicalIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of entPhysicalIndex for the contained physical - entity." - ::= { entPhysicalContainsEntry 1 } - - --- last change time stamp for the whole MIB - -entLastChangeTime OBJECT-TYPE - SYNTAX TimeStamp - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of sysUpTime at the time a conceptual row is - created, modified, or deleted in any of these tables: - - entPhysicalTable - - entLogicalTable - - entLPMappingTable - - entAliasMappingTable - - entPhysicalContainsTable - " - ::= { entityGeneral 1 } - - --- Entity MIB Trap Definitions - -entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 } - -entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 } - - -entConfigChange NOTIFICATION-TYPE - STATUS current - DESCRIPTION - "An entConfigChange notification is generated when the value - of entLastChangeTime changes. It can be utilized by an NMS - to trigger logical/physical entity table maintenance polls. - - An agent should not generate more than one entConfigChange - 'notification-event' in a given time interval (five seconds - is the suggested default). A 'notification-event' is the - transmission of a single trap or inform PDU to a list of - notification destinations. - - If additional configuration changes occur within the - throttling period, then notification-events for these - changes should be suppressed by the agent until the current - throttling period expires. At the end of a throttling - period, one notification-event should be generated if any - configuration changes occurred since the start of the - throttling period. In such a case, another throttling period - is started right away. - - An NMS should periodically check the value of - entLastChangeTime to detect any missed entConfigChange - notification-events, e.g., due to throttling or transmission - loss." - ::= { entityMIBTrapPrefix 1 } - --- conformance information - -entityConformance OBJECT IDENTIFIER ::= { entityMIB 3 } - -entityCompliances OBJECT IDENTIFIER ::= { entityConformance 1 } - -entityGroups OBJECT IDENTIFIER ::= { entityConformance 2 } - - --- compliance statements - -entityCompliance MODULE-COMPLIANCE - STATUS deprecated - DESCRIPTION - "The compliance statement for SNMP entities which implement - version 1 of the Entity MIB." - - MODULE - MANDATORY-GROUPS { - entityPhysicalGroup, - entityLogicalGroup, - entityMappingGroup, - entityGeneralGroup, - entityNotificationsGroup } - - ::= { entityCompliances 1 } - - -entity2Compliance MODULE-COMPLIANCE - STATUS current - DESCRIPTION - "The compliance statement for SNMP entities which implement - version 2 of the Entity MIB." - - MODULE - MANDATORY-GROUPS { - entityPhysicalGroup, - entityPhysical2Group, - entityGeneralGroup, - entityNotificationsGroup } - - GROUP entityLogical2Group - DESCRIPTION - "Implementation of this group is not mandatory for agents - which model all MIB object instances within a single naming - scope." - GROUP entityMappingGroup - DESCRIPTION - "Implementation of the entPhysicalContainsTable is mandatory - for all agents. Implementation of the entLPMappingTable and - entAliasMappingTables are not mandatory for agents which - model all MIB object instances within a single naming scope. - - Note that the entAliasMappingTable may be useful for all - agents, however implementation of the entityLogicalGroup or - entityLogical2Group is required to support this table." - OBJECT entPhysicalSerialNum - MIN-ACCESS not-accessible - DESCRIPTION - "Read and write access is not required for agents which - cannot identify serial number information for physical - entities, and/or cannot provide non-volatile storage for - NMS-assigned serial numbers. - - Write access is not required for agents which can identify - serial number information for physical entities, but cannot - provide non-volatile storage for NMS-assigned serial - numbers. - - Write access is not required for physical entities for - physical entities for which the associated value of the - entPhysicalIsFRU object is equal to 'false(2)'." - OBJECT entPhysicalAlias - MIN-ACCESS read-only - DESCRIPTION - "Write access is required only if the associated - entPhysicalClass value is equal to 'chassis(3)'." - OBJECT entPhysicalAssetID - MIN-ACCESS not-accessible - DESCRIPTION - "Read and write access is not required for agents which - cannot provide non-volatile storage for NMS-assigned asset - identifiers. - - Write access is not required for physical entities for which - the associated value of entPhysicalIsFRU is equal to - 'false(2)'." - ::= { entityCompliances 2 } - --- MIB groupings - -entityPhysicalGroup OBJECT-GROUP - OBJECTS { - entPhysicalDescr, - entPhysicalVendorType, - entPhysicalContainedIn, - entPhysicalClass, - entPhysicalParentRelPos, - entPhysicalName } - STATUS current - DESCRIPTION - "The collection of objects which are used to represent - physical system components, for which a single agent - provides management information." - ::= { entityGroups 1 } - -entityLogicalGroup OBJECT-GROUP - OBJECTS { - entLogicalDescr, - entLogicalType, - entLogicalCommunity, - entLogicalTAddress, - entLogicalTDomain } - STATUS deprecated - DESCRIPTION - "The collection of objects which are used to represent the - list of logical entities for which a single agent provides - management information." - ::= { entityGroups 2 } - -entityMappingGroup OBJECT-GROUP - OBJECTS { - entLPPhysicalIndex, - entAliasMappingIdentifier, - entPhysicalChildIndex } - STATUS current - DESCRIPTION - "The collection of objects which are used to represent the - associations between multiple logical entities, physical - components, interfaces, and port identifiers for which a - single agent provides management information." - ::= { entityGroups 3 } - -entityGeneralGroup OBJECT-GROUP - OBJECTS { - entLastChangeTime } - STATUS current - DESCRIPTION - "The collection of objects which are used to represent - general entity information for which a single agent provides - management information." - ::= { entityGroups 4 } - -entityNotificationsGroup NOTIFICATION-GROUP - NOTIFICATIONS { - entConfigChange } - STATUS current - DESCRIPTION - "The collection of notifications used to indicate Entity MIB - data consistency and general status information." - ::= { entityGroups 5 } - -entityPhysical2Group OBJECT-GROUP - OBJECTS { - entPhysicalHardwareRev, - entPhysicalFirmwareRev, - entPhysicalSoftwareRev, - entPhysicalSerialNum, - entPhysicalMfgName, - entPhysicalModelName, - entPhysicalAlias, - entPhysicalAssetID, - entPhysicalIsFRU } - STATUS current - DESCRIPTION - "The collection of objects which are used to represent - physical system components, for which a single agent - provides management information. This group augments the - objects contained in the entityPhysicalGroup." - ::= { entityGroups 6 } - -entityLogical2Group OBJECT-GROUP - OBJECTS { - entLogicalDescr, - entLogicalType, - entLogicalTAddress, - entLogicalTDomain, - entLogicalContextEngineID, - entLogicalContextName } - STATUS current - DESCRIPTION - "The collection of objects which are used to represent the - list of logical entities for which a single SNMP entity - provides management information." - ::= { entityGroups 7 } - -END --- --- Copyright (C) The Internet Society (1999). All Rights Reserved. --- --- This document and translations of it may be copied and furnished to --- others, and derivative works that comment on or otherwise explain it --- or assist in its implementation may be prepared, copied, published --- and distributed, in whole or in part, without restriction of any --- kind, provided that the above copyright notice and this paragraph are --- included on all such copies and derivative works. However, this --- document itself may not be modified in any way, such as by removing --- the copyright notice or references to the Internet Society or other --- Internet organizations, except as needed for the purpose of --- developing Internet standards in which case the procedures for --- copyrights defined in the Internet Standards process must be --- followed, or as required to translate it into languages other than --- English. --- --- The limited permissions granted above are perpetual and will not be --- revoked by the Internet Society or its successors or assigns. --- --- This document and the information contained herein is provided on an --- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING --- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING --- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION --- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF --- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. --- - diff --git a/test-discovery.php b/test-discovery.php index d59e32aa8..1fe4cae52 100755 --- a/test-discovery.php +++ b/test-discovery.php @@ -3,6 +3,7 @@ include("config.php"); include("includes/functions.php"); +include("includes/functions-poller.inc.php"); $start = utime(); @@ -47,7 +48,7 @@ while ($device = mysql_fetch_array($device_query)) { echo($device['hostname'] . "(".$device['sysName']."|".$device['device_id'].")\n"); - include("includes/discovery/".$type.".php"); + include("includes/discovery/".$type); echo("\n"); $devices_polled++; } @@ -55,7 +56,7 @@ while ($device = mysql_fetch_array($device_query)) { $end = utime(); $run = $end - $start; $proctime = substr($run, 0, 5); -echo("$devices_polled devices polled in $proctime secs\n"); +echo("$devices_polled devices polled in $proctime secs\n $mysql SQL"); ?>