├── mibs ├── CPQ-IDA.mib ├── CPQ-IDE.mib ├── CPQ-RACK.mib ├── CPQ-SCSI.mib ├── CPQ-STDEQ.mib ├── CPQ-APPLIANCE.mib ├── CPQ-THRSH.mib └── CPQ-CR.mib ├── README ├── ChangeLog └── check_hp /mibs/CPQ-IDA.mib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lairsdragon/check_hp/HEAD/mibs/CPQ-IDA.mib -------------------------------------------------------------------------------- /mibs/CPQ-IDE.mib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lairsdragon/check_hp/HEAD/mibs/CPQ-IDE.mib -------------------------------------------------------------------------------- /mibs/CPQ-RACK.mib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lairsdragon/check_hp/HEAD/mibs/CPQ-RACK.mib -------------------------------------------------------------------------------- /mibs/CPQ-SCSI.mib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lairsdragon/check_hp/HEAD/mibs/CPQ-SCSI.mib -------------------------------------------------------------------------------- /mibs/CPQ-STDEQ.mib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lairsdragon/check_hp/HEAD/mibs/CPQ-STDEQ.mib -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | WHAT DOES IT DO 2 | =============== 3 | 4 | Check CPUs, fans, array controllers, logical / physical drives, temperature and 5 | power supplies on your Proliant servers or blade systems through SNMP. 6 | 7 | The plugin uses Compaq/HPs Insight Manager SNMP Agents installed on either 8 | Windows or Linux machines to check CPUs, fans, array controllers, logical / 9 | physical drives, temperature and power supplies on your Proliant servers or 10 | blade systems. 11 | 12 | Compaq MIBs are included in the attached archive. The new version 2 is a 13 | complete rewrite in Perl and only uses the OID-Trees, so you don't need to add 14 | the Compaq MIBs to your local configuration. 15 | 16 | Please do not misread the "-d" parameter as i guess jleonard78 did. The "-d" 17 | parameter stands for "DEBUG" and is not intended for production use inside 18 | Nagios! check_hp will give you information about which object failed if there 19 | is any. 20 | 21 | 22 | USAGE 23 | ===== 24 | 25 | Make sure you have all REQUIREMENTS in place (see below), then simply run 26 | "./check_hp --help" for more details. 27 | 28 | 29 | REQUIREMENTS 30 | ============ 31 | 32 | Please update the 'lib' path at the top of check_hp to fit your distribution. 33 | check_hp needs to locate the utils.pm library that comes with nagios-plugins. 34 | 35 | You will need the Net::SNMP package as well. In most distributions this is 36 | available as a package named "libsnmp-perl" - so make sure to install it if you 37 | stumble accross an error starting with "Can't locate Net/SNMP.pm in @INC [...]". 38 | 39 | Please pay attention to include at least one parameter in the nagios/icinga 40 | configuration or you may stumble over an "**ePN" error complaining about using 41 | an uninitialized value $opt. This could be due to a know issue, for more details 42 | see: 43 | 44 | http://tracker.nagios.org/view.php?id=88 45 | 46 | You do not need anything else from this package other than "check_hp" script 47 | itself. The MIBs folder is purely for your information. 48 | 49 | 50 | OUTPUT 51 | ====== 52 | 53 | Please do not misread the "-d" parameter, which stands for "DEBUG" and is not 54 | intended for production use! check_hp will output information about which 55 | object failed if there is any: 56 | 57 | Compaq/HP Agent Check: cpqDaCntlrCondition (0:degraded) cpqDaLogDrvStatus (0.1: 58 | recovering) cpqDaLogDrvCondition (0.1:degraded) cpqDaPhyDrvStatus (0.0:failed) 59 | cpqDaPhyDrvCondition (0.0:failed) 60 | 61 | 62 | == 63 | $Id: README 50 2013-08-26 07:37:02Z gunny $ 64 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | Version 3.2 (untested) 2 | ====================== 3 | Finally I woke up again to this... thanks Alexandre Rigaud Colonna, I have been 4 | lazy and completely forgot about it. 5 | 6 | 7 | Version 3.1 (unofficial) 8 | ======================== 9 | Added ignore-states option. This is still about cpqFcaHostCntlrStates and as a 10 | result to an exchange with Mr. Winter about issues with un-connected FCA's. 11 | 12 | That also solves what was correctly suggested by Michael Friedhoff back in 13 | 2016 (sorry man I didn't get back to you about this!!). 14 | 15 | 16 | Version 3.0 (unofficial) 17 | ======================== 18 | IPv6 support addded! My thanks for pointing out that this could be useful go 19 | to Kevin Gorman. 20 | 21 | Added support for component names only being passed to the warning switch as 22 | hinted to by Nicola Bressan. 23 | 24 | Fixed the broken parameter comparison for "cpqHeEventLogCondition" and sub-OID 25 | concatenation where there are no sub-OIDs. Thanks for pointing out the issue 26 | Joe Giles! 27 | 28 | Added missing cpqFcaHostCntlrStates - my thanks go to Wolfgang Winter. 29 | 30 | Added 'blade' formfactor to cpqFormFactors - thanks to Peter Vermeulen! 31 | 32 | 33 | Version 2.20 34 | ============ 35 | Quick progress these days... as of Andrew Gray's inquiry I added support for 36 | retrieving Smart Array CPU information. This is not active by default and may 37 | be used to check and/or gather performance data. 38 | 39 | As usual I cleaned some code parts. This time there are some improvements to 40 | the output of '--help' and more important to the output of the debug switch 41 | ('-d|--debug'). Enjoy! 42 | 43 | 44 | Version 2.19 45 | ============ 46 | The plugin now displays some product information like model, serial number, 47 | form factor and asset tag (if given). Thanks to Billy Szkoda for asking for 48 | this feature! 49 | 50 | Some minor code cleanup done in between. 51 | 52 | Please note: this information is now retrieved by default on every query. If 53 | you don't need or don't like the idea, or you'd rather have higher performance 54 | on a big network, just skip this using '-x cpqSystemInfo' and you'll get the 55 | behaviour as it was before. 56 | 57 | 58 | Version 2.18 59 | ============ 60 | Updated state information for newer generations of HP equipment. Thanks to 61 | Jason Wasser who pointet out an error and by debugging helped discover the 62 | missing information provided by new Gen9 servers. This release now includes 63 | the latest MIBS as they are freely available with the HP SIM 7.4 release. 64 | Last not least, after Jason pointed this out, the /usr/lib64/nagios/plugins 65 | folder is now automatically searched as well. 66 | 67 | 68 | Version 2.17 69 | ============ 70 | Added check for a Drive Array's accelerator condition as suggested by Robert 71 | Brooks. Thanks! 72 | 73 | 74 | Version 2.16 75 | ============ 76 | REALLY fixes broken versions 2.14 + 2.15 (automatic lib-folder discovery). 77 | 78 | 79 | Version 2.15 80 | ============ 81 | Fixes broken version 2.14 (change introducing automatic lib-folder discovery). 82 | 83 | 84 | Version 2.14 85 | ============ 86 | Thanks this time to an improvement by Steffen Weinreich who added a parameter 87 | that allow "requiring" the presence of some subsystems (they not being there 88 | during the check being the issue at hand). Use it by specifying the following: 89 | 90 | -r subsystem1,subsystem2,... 91 | 92 | 93 | Version 2.13 94 | ============ 95 | Many thanks to Rod Payne, Buffalo NY, for the current addition. He suggested it 96 | would be helpful to specify particular values that should be treated as 97 | warnings. Specifically this could mean that instead of treating all NIC logical 98 | group problems as warnings, he would want to make “redundancyReduced” a warning 99 | and leave “redundancyLost” as critical. He extended the code to allow the 100 | warning exception to be more specific using the following syntax: 101 | 102 | -w cpqNicIfLogMapStatus=6 103 | 104 | 105 | Version 2.12 106 | ============ 107 | Got a few nice inputs from George Hansper, who thought it better to indicate 108 | more details about single component units in order to have the possibility to 109 | exclude some specific device (maybe not a best practice to be followed, but 110 | nevertheless a valid requirement in some specific and possibly temporary cases). 111 | 112 | 113 | Version 2.11 114 | ============ 115 | Some more testing done by Martin Boer together with some nice feedback on how 116 | to shorten down and beautify the code: 117 | 118 | - replaced a lot of silly 'elsif' statements with a single (but safe) 'eval' 119 | - introduced a '-w' parameter to set some failures to WARNING states instead 120 | of CRITICAL since "you don't consider a bad disk in a RAID configuration 121 | necessarily something you want to find out in the middle of the night" 122 | 123 | 124 | Version 2.10 125 | ============ 126 | Some changes include: 127 | 128 | - definitions now moved into a hash of hashes instead of different arrays 129 | - some cleanup to the '--help' parameter (now hinted at when none is given) 130 | - added an '--exclude' parameter for different checks as requested by 'Mastrboy' 131 | 132 | 133 | Version 2.9 134 | =========== 135 | Thanks again to Jean Prat for: 136 | 137 | - adding cpqNicIfLogMapStatus 138 | - adding cpqNicIfPhysAdapterStatus 139 | - giving component names a more readable form 140 | 141 | 142 | Version 2.8 143 | =========== 144 | One more issue fixed with the cpqHeEventLogCondition. Thanks to Seth Rice for 145 | his support while debugging. 146 | 147 | 148 | Version 2.7 149 | =========== 150 | Minor bug introduced by the cpqHeResilientMemCondition check should now be ok. 151 | This comes together with some small cleanup around that part. 152 | 153 | Thanks to Peter Tauber for pointing it out and verifying. 154 | 155 | 156 | Version 2.6 157 | =========== 158 | Thanks and credits to Milan Karalic for cpqHeResilientMemCondition! 159 | 160 | Major thanks to Jean Prat for the "few" things that follow here: 161 | 162 | - debug printout for inexistent OID-trees 163 | - support for cpqDaTapeDrvStatus (tape drives) 164 | - support for cpqHeEventLogCondition (event log) 165 | - support for cpqFcaHostCntlrStatus (fibre channel components) 166 | 167 | Code indentation cleanup for the parts taken from check_ifoperstatus. 168 | 169 | 170 | Version 2.5 171 | =========== 172 | Minor fix for a bug I introduced when putting this under version control. 173 | Now it should all work nicely again. 174 | 175 | 176 | Version 2.4 177 | =========== 178 | The plugin has now been put under version control and a proper ChangeLog is 179 | included. 180 | 181 | 182 | Version 2.3 183 | =========== 184 | The README now includes documentation about all requirements: 185 | 186 | - path to nagios-plugins “utils.pm” 187 | - the distribution’s “libsnmp-perl” package if you are missing Net/SNMP.pm 188 | 189 | 190 | Version 2.2 191 | =========== 192 | A minor update: 193 | 194 | - one typo fixed, which would have prevented the output of the actual state of 195 | physical drives (the error itself would have been reported) 196 | - the README now includes a hint about the debug option “-d”, which is not 197 | intended to be used in production 198 | 199 | 200 | Version 2.1 201 | =========== 202 | This is mainly the same as version 2 (see below), except it now handles a 203 | counter for every hardware component checked. If zero values are returned by 204 | the snmp agent, the plugin exits with a WARNING state. 205 | 206 | 207 | Version 2.0 208 | =========== 209 | First release of this all-perl, mib-translation-table-free, all-in-one 210 | version. 211 | 212 | Check CPUs, fans, array controllers, logical / physical drives, temperature 213 | and power supplies on your Proliant servers or blade systems through SNMP. 214 | 215 | The plugin uses Compaq/HPs Insight Manager SNMP Agents installed on either 216 | Windows or Linux machines to check CPUs, fans, array controllers, logical / 217 | physical drives, temperature and power supplies on your Proliant servers or 218 | blade systems. 219 | 220 | Compaq MIBs are included in the attached archive. The new version 2 is a 221 | complete rewrite in Perl and only uses the OID-Trees, so you don’t need to add 222 | the Compaq MIBs to your local configuration. 223 | -------------------------------------------------------------------------------- /mibs/CPQ-APPLIANCE.mib: -------------------------------------------------------------------------------- 1 | -- **************************************************************************** 2 | -- 3 | -- Appliance MIB Management Functions 4 | -- Management Information Base for SNMP Network Management 5 | -- 6 | -- 7 | -- Copyright 2000,2003 Hewlett-Packard Development Company, L.P. 8 | -- 9 | -- Hewlett-Packard Company shall not be liable for technical or 10 | -- editorial errors or omissions contained herein. The information in 11 | -- this document is provided "as is" without warranty of any kind and 12 | -- is subject to change without notice. The warranties for HP products 13 | -- are set forth in the express limited warranty statements 14 | -- accompanying such products. Nothing herein should be construed as 15 | -- constituting an additional warranty. 16 | -- 17 | -- Confidential computer software. Valid license from HP required for 18 | -- possession, use or copying. Consistent with FAR 12.211 and 12.212, 19 | -- Commercial Computer Software, Computer Software Documentation, and 20 | -- Technical Data for Commercial Items are licensed to the U.S. 21 | -- Government under vendor's standard commercial license. 22 | -- 23 | -- Refer to the READMIB.RDM file for more information about the 24 | -- organization of the information in the Compaq Enterprise. 25 | -- 26 | -- The Compaq Enterprise number is 232. 27 | -- The ASN.1 prefix to, and including the Compaq Enterprise is: 28 | -- 1.3.6.1.4.1.232 29 | -- 30 | -- **************************************************************************** 31 | 32 | CPQAPPLIANCE-MIB DEFINITIONS ::= BEGIN 33 | 34 | IMPORTS 35 | compaq FROM CPQHOST-MIB 36 | enterprises FROM RFC1155-SMI 37 | Counter FROM RFC1155-SMI 38 | DisplayString FROM RFC1213-MIB 39 | OBJECT-TYPE FROM RFC-1212 40 | TRAP-TYPE FROM RFC-1215 41 | sysName FROM RFC1213-MIB 42 | cpqHoTrapFlags FROM CPQHOST-MIB; 43 | 44 | -- compaq OBJECT IDENTIFIER ::= { enterprises 232 } 45 | 46 | cpqApplianceMgmt OBJECT IDENTIFIER ::= { compaq 21 } 47 | 48 | cpqApMibRev OBJECT IDENTIFIER ::= { cpqApplianceMgmt 1 } 49 | cpqApComponent OBJECT IDENTIFIER ::= { cpqApplianceMgmt 2 } 50 | 51 | cpqApInterface OBJECT IDENTIFIER ::= { cpqApComponent 1 } 52 | cpqApConfig OBJECT IDENTIFIER ::= { cpqApComponent 2 } 53 | 54 | cpqApOsCommon OBJECT IDENTIFIER ::= { cpqApInterface 4 } 55 | 56 | -- **************************************************************************** 57 | -- Appliance MIB Information MIB Revision 58 | -- ====================================== 59 | -- 60 | -- The compaq enterprise (1.3.6.1.4.1.232) 61 | -- cpqApplianceMgmt Group (1.3.6.1.4.1.232.21) 62 | -- cpqApMibRev Group (1.3.6.1.4.1.232.21.1) 63 | -- 64 | -- 65 | -- An SNMP agent conforming to this document will return a 66 | -- cpqApMibRevMajor of one (1) and a cpqApMibRevMinor of zero (0). 67 | -- 68 | -- Implementation of the cpqApMibRev group is mandatory for all agents 69 | -- supporting the Compaq Appliance MIB Management MIB. 70 | -- 71 | -- Note: This MIB was created after the initial Compaq Appliance was 72 | -- shipped (the Compaq TaskSmart Server for Internet Caching). 73 | -- The initial appliance placed the OID 1.3.6.1.4.1.232.21.1 74 | -- into the 'sysObjectId' variable in MIB-II's System group. 75 | -- This will not have any adverse affects to this MIB. Future 76 | -- Appliances will not collide with any of the OID's in this MIB. 77 | -- 78 | -- **************************************************************************** 79 | 80 | cpqApMibRevMajor OBJECT-TYPE 81 | SYNTAX INTEGER (1..65535) 82 | ACCESS read-only 83 | STATUS mandatory 84 | DESCRIPTION 85 | "The Major Revision level of the MIB. 86 | 87 | A change in the major revision level represents a major change 88 | in the architecture of the MIB. A change in the major revision 89 | level may indicate a significant change in the information 90 | supported and/or the meaning of the supported information, 91 | correct interpretation of data may require a MIB document with 92 | the same major revision level." 93 | ::= { cpqApMibRev 1 } 94 | 95 | cpqApMibRevMinor OBJECT-TYPE 96 | SYNTAX INTEGER (0..65535) 97 | ACCESS read-only 98 | STATUS mandatory 99 | DESCRIPTION 100 | "The Minor Revision level of the MIB. 101 | 102 | A change in the minor revision level may represent some minor 103 | additional support, no changes to any pre-existing information 104 | has occurred." 105 | ::= { cpqApMibRev 2 } 106 | 107 | cpqApMibCondition OBJECT-TYPE 108 | SYNTAX INTEGER { 109 | other(1), 110 | ok(2), 111 | degraded(3), 112 | failed(4) 113 | } 114 | ACCESS read-only 115 | STATUS mandatory 116 | DESCRIPTION 117 | "The overall condition of the Appliance MIB. 118 | 119 | This object represents the overall status of the Appliance 120 | MIB management system represented by this MIB." 121 | 122 | ::= { cpqApMibRev 3 } 123 | 124 | -- **************************************************************************** 125 | -- Appliance MIB OS Common Group 126 | -- ============================ 127 | -- 128 | -- The compaq enterprise (1.3.6.1.4.1.232) 129 | -- cpqApplianceMgmt Group (1.3.6.1.4.1.232.21) 130 | -- cpqApComponent Group (1.3.6.1.4.1.232.21.2) 131 | -- cpqApInterface Group (1.3.6.1.4.1.232.21.2.1) 132 | -- cpqApOsCommon Group (1.3.6.1.4.1.232.21.2.1.4) 133 | -- 134 | -- Implementation of the cpqApOsCommon group is mandatory for all 135 | -- agents that support the Appliance MIB Management MIB. 136 | -- 137 | -- **************************************************************************** 138 | 139 | cpqApOsCommonPollFreq OBJECT-TYPE 140 | SYNTAX INTEGER (0..2147483647) 141 | ACCESS read-write 142 | STATUS mandatory 143 | DESCRIPTION 144 | "The Agent's polling frequency. 145 | 146 | The frequency, in seconds, at which the Agent requests 147 | information from. A frequency of zero indicates that the 148 | Agent retrieves the information upon request of a 149 | management station, it does not poll at a specific interval. 150 | 151 | If the poll frequency is zero (0) all attempts to write to this 152 | object will fail. If the poll frequency is non-zero, 153 | setting this value will change the polling frequency of the 154 | Agent. Setting the poll frequency to zero will always 155 | fail, an agent may also choose to fail any request to change 156 | the poll frequency to a value that would severely impact system 157 | performance." 158 | ::= { cpqApOsCommon 1 } 159 | 160 | 161 | -- **************************************************************************** 162 | -- Appliance MIB Status Group 163 | -- ========================= 164 | -- 165 | -- The compaq enterprise (1.3.6.1.4.1.232) 166 | -- cpqApplianceMgmt Group (1.3.6.1.4.1.232.21) 167 | -- cpqApComponent Group (1.3.6.1.4.1.232.21.2) 168 | -- cpqApConfig Group (1.3.6.1.4.1.232.21.2.2) 169 | -- 170 | -- The cpqApConfig group describes the configuration information for 171 | -- the instrumented Appliance product. 172 | -- 173 | -- Implementation of the cpqApConfig group is mandatory for agents 174 | -- supporting the Appliance MIB Management MIB. 175 | -- 176 | -- **************************************************************************** 177 | 178 | cpqApApplianceId OBJECT-TYPE 179 | SYNTAX INTEGER 180 | ACCESS read-only 181 | STATUS mandatory 182 | DESCRIPTION 183 | "A unique identifier of the Appliance. 184 | 185 | This can be used by management consoles to allow specific logic 186 | which pertains to the particular appliance. For example, this 187 | might be used to provide custom graphics for a particular 188 | appliance. Each appliance that needs differentiation 189 | will be give a different appliance ID." 190 | ::= { cpqApConfig 1 } 191 | 192 | cpqApApplianceDescription OBJECT-TYPE 193 | SYNTAX DisplayString (SIZE (0..80)) 194 | ACCESS read-only 195 | STATUS mandatory 196 | DESCRIPTION 197 | "The text description of this Appliance." 198 | ::= { cpqApConfig 2 } 199 | END 200 | 201 | -------------------------------------------------------------------------------- /check_hp: -------------------------------------------------------------------------------- 1 | #! /usr/bin/perl -w 2 | # 3 | # check_hp - nagios plugin 4 | # 5 | # Copyright (C) 2008-2016 Guenther Mair, 6 | # Derived from check_ifoperstatus by Christoph Kron. 7 | # 8 | # This program is free software; you can redistribute it and/or 9 | # modify it under the terms of the GNU General Public License 10 | # as published by the Free Software Foundation; either version 2 11 | # of the License, or (at your option) any later version. 12 | # 13 | # This program is distributed in the hope that it will be useful, 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | # GNU General Public License for more details. 17 | # 18 | # You should have received a copy of the GNU General Public License 19 | # along with this program; if not, write to the Free Software 20 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 | # 22 | # 23 | # Report bugs to: guenther.mair@hoslo.ch 24 | # 25 | # $Id: check_hp 82 2018-01-03 14:27:03Z gunny $ 26 | # 27 | 28 | my $libexec; 29 | 30 | BEGIN { 31 | my @lib_folders = qw(/usr/local/nagios/libexec/ /usr/lib/nagios/plugins/ /usr/lib64/nagios/plugins/); 32 | foreach my $lib (@lib_folders) { 33 | if (-d $lib) { 34 | $libexec = $lib; 35 | last; 36 | } 37 | } 38 | } 39 | 40 | use POSIX; 41 | use strict; 42 | 43 | use lib $libexec; 44 | use utils qw($TIMEOUT %ERRORS &print_revision &support); 45 | use Socket 1.94 qw(AF_INET AF_INET6 inet_ntop getaddrinfo sockaddr_in sockaddr_in6); 46 | 47 | use Net::SNMP; 48 | use Getopt::Long; 49 | &Getopt::Long::config('bundling'); 50 | 51 | 52 | ## function prototypes 53 | 54 | sub in_array($@); 55 | sub print_help(); 56 | sub usage(); 57 | sub process_arguments(); 58 | 59 | 60 | ## module-specific variables 61 | 62 | my $PROGNAME = "check_hp"; 63 | my $REVISION = '$Rev: 82 $'; 64 | my $debug; 65 | my $exclude = ''; 66 | my $ignore = ''; 67 | my $warnings = ''; 68 | my $required = ''; 69 | my @all_exclude; 70 | my @all_ignore; 71 | my @all_warnings; 72 | my @all_required; 73 | my $countComponents = 0; 74 | my $state = 'OK'; 75 | my $answer = ""; 76 | my $result; 77 | my $maxcpu = undef; 78 | my $maxcommands = undef; 79 | my $maxlatency = undef; 80 | my $collect_perfdata = undef; 81 | my $perfdata = ""; 82 | 83 | 84 | ## variables for argument handling 85 | 86 | my $opt_h; 87 | my $opt_V; 88 | my $status; 89 | 90 | 91 | ## snmp specific variables 92 | 93 | my $timeout; 94 | my $hostname; 95 | my $domain = 'udp/ipv4'; 96 | my $session; 97 | my $error; 98 | my $response; 99 | my $key; 100 | my $community = "public"; 101 | my $snmpversion = 1; 102 | my $maxmsgsize = 1472; # Net::SNMP default is 1472 103 | my ($seclevel, $authproto, $secname, $authpass, $privpass, $auth, $priv); 104 | my $context = ""; 105 | my $port = 161; 106 | my @snmpoids; 107 | 108 | 109 | ## Compaq/HP system information 110 | 111 | my $cpqSystemInfo = '1.3.6.1.4.1.232.2.2'; 112 | 113 | my $cpqSiProductName = '1.3.6.1.4.1.232.2.2.4.2.0'; 114 | my $cpqSiFormFactor = '1.3.6.1.4.1.232.2.2.2.2.0'; 115 | my $cpqSiSysSerialNum = '1.3.6.1.4.1.232.2.2.2.1.0'; 116 | my $cpqSiAssetTag = '1.3.6.1.4.1.232.2.2.2.3.0'; 117 | 118 | 119 | ## Compaq/HP drive array - controller performance data 120 | 121 | my $cpqDaCntlrPerfEntry = '1.3.6.1.4.1.232.3.2.7.1.1'; 122 | 123 | my $cpqDaCntlrPerfCpuPercentBusy = '1.3.6.1.4.1.232.3.2.7.1.1.5'; 124 | my $cpqDaCntlrPerfCommandCount = '1.3.6.1.4.1.232.3.2.7.1.1.6'; 125 | my $cpqDaCntlrPerfAvgLatency = '1.3.6.1.4.1.232.3.2.7.1.1.7'; 126 | 127 | 128 | ## Compaq/HP health information 129 | 130 | my $cpqHeTemperatureCelsius = '1.3.6.1.4.1.232.6.2.6.8.1.4'; 131 | 132 | 133 | ## Compaq/HP system states 134 | 135 | my %cpqGenericStates = ( 136 | '1', 'other', 137 | '2', 'ok', 138 | '3', 'degraded', 139 | '4', 'failed'); 140 | 141 | my %cpqFormFactors = ( 142 | '1', 'unknown', 143 | '2', 'portable', 144 | '3', 'laptop', 145 | '4', 'desktop', 146 | '5', 'tower', 147 | '6', 'mini-tower', 148 | '7', 'rack-mount', 149 | '8', 'blade'); 150 | 151 | my %cpqDaLogDrvStates = ( 152 | '1', 'other', 153 | '2', 'ok', 154 | '3', 'failed', 155 | '4', 'unconfigured', 156 | '5', 'recovering', 157 | '6', 'readyForRebuild', 158 | '7', 'rebuilding', 159 | '8', 'wrongDrive', 160 | '9', 'badConnect', 161 | '10', 'overheating', 162 | '11', 'shutdown', 163 | '12', 'expanding', 164 | '13', 'notAvailable', 165 | '14', 'queuedForExpansion', 166 | '15', 'multipathAccessDegraded', 167 | '16', 'erasing', 168 | '17', 'predictiveSpareRebuildReady', 169 | '18', 'rapidParityInitInProgress', 170 | '19', 'rapidParityInitPending', 171 | '20', 'noAccessEncryptedNoCntlrKey', 172 | '21', 'unencryptedToEncryptedInProgress', 173 | '22', 'newLogDrvKeyRekeyInProgress', 174 | '23', 'noAccessEncryptedCntlrEncryptnNotEnbld', 175 | '24', 'unencryptedToEncryptedNotStarted', 176 | '25', 'newLogDrvKeyRekeyRequestReceived'); 177 | 178 | my %cpqDaPhyDrvStates = ( 179 | '1', 'other', 180 | '2', 'ok', 181 | '3', 'failed', 182 | '4', 'predictiveFailure', 183 | '5', 'erasing', 184 | '6', 'eraseDone', 185 | '7', 'eraseQueued', 186 | '8', 'ssdWearOut', 187 | '9', 'notAuthenticated'); 188 | 189 | my %cpqDaPhyDrvSmartStates = ( 190 | '1', 'other', 191 | '2', 'ok', 192 | '3', 'replaceDrive', 193 | '4', 'replaceDriveSSDWearOut'); 194 | 195 | my %cpqDaTapeDrvStates = ( 196 | '1', 'unknown', 197 | '2', 'ok', 198 | '3', 'degraded', 199 | '4', 'failed', 200 | '5', 'offline', 201 | '6', 'missingWasOk', 202 | '7', 'missingWasOffline'); 203 | 204 | my %cpqSeCpuStates = ( 205 | '1', 'unknown', 206 | '2', 'ok', 207 | '3', 'degraded', 208 | '4', 'failed', 209 | '5', 'disabled'); 210 | 211 | my %cpqHeResilientMemStates = ( 212 | '1', 'other', 213 | '2', 'notProtected', 214 | '3', 'protected', 215 | '4', 'degraded', 216 | '5', 'dimmEcc', 217 | '6', 'mirrorNoFaults', 218 | '7', 'mirrorWithFaults', 219 | '8', 'hotSpareNoFaults', 220 | '9', 'hotSpareWithFaults', 221 | '10', 'xorNoFaults', 222 | '11', 'xorWithFaults', 223 | '12', 'advancedEcc', 224 | '13', 'advancedEccWithFaults', 225 | '14', 'lockStep', 226 | '15', 'lockStepWithFaults'); 227 | 228 | my %cpqNicIfLogMapStates = ( 229 | '1', 'unknown', 230 | '2', 'ok', 231 | '3', 'primaryFailed', 232 | '4', 'standbyFailed', 233 | '5', 'groupFailed', 234 | '6', 'redundancyReduced', 235 | '7', 'redundancyLost'); 236 | 237 | my %cpqNicIfPhysAdapterStates = ( 238 | '1', 'unknown', 239 | '2', 'ok', 240 | '3', 'generalFailure', 241 | '4', 'linkFailure'); 242 | 243 | my %cpqFcaHostCntlrStates = ( 244 | '1', 'other', 245 | '2', 'ok', 246 | '3', 'failed', 247 | '4', 'shutdown', 248 | '5', 'loopDegraded', 249 | '6', 'loopFailed', 250 | '7', 'notConnected'); 251 | 252 | ## Compaq/HP system OIDs (ascending numeric order), names and state-types 253 | 254 | my %cpqComponents = ( 255 | cpqSeCpuStatus => { 256 | OID => '1.3.6.1.4.1.232.1.2.2.1.1.6', 257 | name => 'CPU status', 258 | type => 'cpqSeCpuStates', 259 | }, 260 | cpqDaCntlrCondition => { 261 | OID => '1.3.6.1.4.1.232.3.2.2.1.1.6', 262 | name => 'controller status', 263 | type => 'cpqGenericStates', 264 | }, 265 | cpqDaAccelCondition => { 266 | OID => '1.3.6.1.4.1.232.3.2.2.2.1.9', 267 | name => 'array accelerator status', 268 | type => 'cpqGenericStates', 269 | }, 270 | cpqDaLogDrvStatus => { 271 | OID => '1.3.6.1.4.1.232.3.2.3.1.1.4', 272 | name => 'logical drive status', 273 | type => 'cpqDaLogDrvStates', 274 | }, 275 | cpqDaLogDrvCondition => { 276 | OID => '1.3.6.1.4.1.232.3.2.3.1.1.11', 277 | name => 'logical drive and associated physical state', 278 | type => 'cpqGenericStates', 279 | }, 280 | cpqDaPhyDrvStatus => { 281 | OID => '1.3.6.1.4.1.232.3.2.5.1.1.6', 282 | name => 'physical drive status', 283 | type => 'cpqDaPhyDrvStates', 284 | }, 285 | cpqDaPhyDrvCondition => { 286 | OID => '1.3.6.1.4.1.232.3.2.5.1.1.37', 287 | name => 'physical drive condition', 288 | type => 'cpqGenericStates', 289 | }, 290 | cpqDaPhyDrvSmartStatus => { 291 | OID => '1.3.6.1.4.1.232.3.2.5.1.1.57', 292 | name => 'physical drive S.M.A.R.T status', 293 | type => 'cpqDaPhyDrvSmartStates', 294 | }, 295 | cpqDaTapeDrvStatus => { 296 | OID => '1.3.6.1.4.1.232.3.2.9.1.1.8', 297 | name => 'tape drive status', 298 | type => 'cpqDaTapeDrvStates', 299 | }, 300 | cpqHeEventLogCondition => { 301 | OID => '1.3.6.1.4.1.232.6.2.11.2.0', 302 | name => 'overall IML entries', 303 | type => 'cpqGenericStates', 304 | }, 305 | cpqHeThermalSystemFanStatus => { 306 | OID => '1.3.6.1.4.1.232.6.2.6.4', 307 | name => 'status of the processor fan(s)', 308 | type => 'cpqGenericStates', 309 | }, 310 | cpqHeThermalCpuFanStatus => { 311 | OID => '1.3.6.1.4.1.232.6.2.6.5', 312 | name => 'status of the fan(s)', 313 | type => 'cpqGenericStates', 314 | }, 315 | cpqHeFltTolFanCondition => { 316 | OID => '1.3.6.1.4.1.232.6.2.6.7.1.9', 317 | name => 'condition of the fan', 318 | type => 'cpqGenericStates', 319 | }, 320 | cpqHeTemperatureCondition => { 321 | OID => '1.3.6.1.4.1.232.6.2.6.8.1.6', 322 | name => 'temperature sensor condition', 323 | type => 'cpqGenericStates', 324 | }, 325 | cpqHeFltTolPwrSupplyCondition => { 326 | OID => '1.3.6.1.4.1.232.6.2.9.1', 327 | name => 'overall condition of power supply subsystem', 328 | type => 'cpqGenericStates', 329 | }, 330 | cpqHeFltTolPowerSupplyCondition => { 331 | OID => '1.3.6.1.4.1.232.6.2.9.3.1.4', 332 | name => 'condition of the power supply', 333 | type => 'cpqGenericStates', 334 | }, 335 | cpqRackCommonEnclosureFanCondition => { 336 | OID => '1.3.6.1.4.1.232.22.2.3.1.3.1.11', 337 | name => 'condition of the rack fan', 338 | type => 'cpqGenericStates', 339 | }, 340 | cpqRackPowerSupplyCondition => { 341 | OID => '1.3.6.1.4.1.232.22.2.5.1.1.1.17', 342 | name => 'condition of the power supply', 343 | type => 'cpqGenericStates', 344 | }, 345 | cpqHeResilientMemCondition => { 346 | OID => '1.3.6.1.4.1.232.6.2.14.4', 347 | name => 'condition of the memory protection subsystem', 348 | type => 'cpqHeResilientMemStates', 349 | }, 350 | cpqNicIfLogMapStatus => { 351 | OID => '1.3.6.1.4.1.232.18.2.2.1.1.11', 352 | name => 'status of the NIC logical group', 353 | type => 'cpqNicIfLogMapStates', 354 | }, 355 | cpqFcaHostCntlrStatus => { 356 | OID => '1.3.6.1.4.1.232.16.2.7.1.1.4', 357 | name => 'fibre channel host controller status', 358 | type => 'cpqFcaHostCntlrStates', 359 | }, 360 | cpqNicIfPhysAdapterStatus => { 361 | OID => '1.3.6.1.4.1.232.18.2.3.1.1.14', 362 | name => 'physical adapter status', 363 | type => 'cpqNicIfPhysAdapterStates', 364 | }); 365 | 366 | 367 | ## validate arguments 368 | 369 | process_arguments(); 370 | 371 | 372 | ## just in case of problems, let's avoid blocking the calling process for too long 373 | 374 | $SIG{'ALRM'} = sub { 375 | print ("ERROR: No snmp response from $hostname (alarm)\n"); 376 | exit $ERRORS{"UNKNOWN"}; 377 | }; 378 | 379 | alarm($timeout); 380 | 381 | 382 | ## main function 383 | print "Compaq/HP Agent Check: " if ( ! defined $debug); 384 | 385 | ## fetch and print system information 386 | if (in_array('cpqSystemInfo', @all_exclude)) { 387 | print "\ncpqSystemInfo will not be checked.\n" if (defined $debug); 388 | } else { 389 | print_system_information(); 390 | } 391 | 392 | ## verify information 393 | for my $component (keys %cpqComponents) { 394 | if (in_array($component, @all_exclude)) { 395 | print " excluding '".$component."' from check\n" if (defined $debug); 396 | next; 397 | } 398 | 399 | $result = fetch_status($cpqComponents{$component}{OID}, $cpqComponents{$component}{name}, $cpqComponents{$component}{type}, $component); 400 | if ((in_array($component, @all_required)) && ($result < 0)) { 401 | print " " . $cpqComponents{$component}{name} . " (NOT FOUND)"; 402 | print " required '".$component."' not found\n" if (defined $debug); 403 | $state = 'CRITICAL'; 404 | } 405 | } 406 | 407 | ## verify smart array controller performance 408 | if ($maxcpu || $maxcommands || $maxlatency || $collect_perfdata) { 409 | $perfdata = verify_performance_data(); 410 | } 411 | 412 | ## set status information 413 | if ($countComponents == 0) { 414 | $state = "UNKNOWN"; 415 | $answer = " no cpq/hp component found"; 416 | } elsif ( ! defined $debug && $state eq 'OK') { 417 | $answer = " overall system state OK"; 418 | } 419 | 420 | ## terminate with exit code 421 | printf("%s%s\n", $answer, $perfdata); 422 | exit $ERRORS{$state}; 423 | 424 | 425 | ## subroutines 426 | 427 | sub ltrim { my $s = shift; $s =~ s/^\s+//; return $s }; 428 | sub rtrim { my $s = shift; $s =~ s/\s+$//; return $s }; 429 | sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s }; 430 | 431 | sub in_array($@) { 432 | my $needle = shift(@_); 433 | my %items = map {$_ => 1} @_; 434 | return (exists($items{$needle})) ? 1 : 0; 435 | } 436 | 437 | sub verify_performance_data { 438 | my $key; 439 | my $value; 440 | 441 | my $cpu = 0; 442 | my $commands = 0; 443 | my $latency = 0; 444 | 445 | print "\nNow checking performance data:\n" if (defined $debug); 446 | 447 | if ( ! defined ($response = $session->get_table($cpqDaCntlrPerfEntry))) { 448 | printf(" - %-35s - OID-tree %s not found\n", "cpqDaCntlrPerfEntry", $cpqDaCntlrPerfEntry) if (defined $debug); 449 | } else { 450 | while (($key, $value) = each %{$response}) { 451 | printf(" * %-35s = %s\n", $key, $value) if (defined $debug); 452 | 453 | if ($key =~ /^${cpqDaCntlrPerfCpuPercentBusy}/) { $cpu = int $value; } 454 | elsif ($key =~ /^${cpqDaCntlrPerfCommandCount}/) { $commands = int $value; } 455 | elsif ($key =~ /^${cpqDaCntlrPerfAvgLatency}/) { $latency = int $value; } 456 | } 457 | } 458 | 459 | # verify CPU information 460 | $cpu = 'unknown' if ($cpu == -1); 461 | printf(" * %-35s = %s", "cpqDaCntlrPerfCpuPercentBusy", $cpu) if (defined $debug); 462 | if (defined $maxcpu && $maxcpu < $cpu) { 463 | printf(" CPU too busy (%s%%/%s%%)", $maxcpu, $cpu); 464 | $state = 'WARNING' if ($state ne 'CRITICAL'); 465 | } 466 | printf("\n") if (defined $debug); 467 | 468 | # verify command count 469 | printf(" * %-35s = %s", "cpqDaCntlrPerfCommandCount", $commands) if (defined $debug); 470 | if (defined $maxcommands && $maxcommands < $commands) { 471 | printf(" too many commands counted (%s%%/%s%%)", $maxcommands, $commands); 472 | $state = 'WARNING' if ($state ne 'CRITICAL'); 473 | } 474 | printf("\n") if (defined $debug); 475 | 476 | # verify average latency 477 | printf(" * %-35s = %s", "cpqDaCntlrPerfAvgLatency", $latency) if (defined $debug); 478 | if (defined $maxlatency && $maxlatency < $latency) { 479 | printf(" average latency too high (%s%%/%s%%)", $maxlatency, $latency); 480 | $state = 'WARNING' if ($state ne 'CRITICAL'); 481 | } 482 | 483 | if (defined $debug) { 484 | return "\n"; 485 | } else { 486 | return sprintf("|cpqDaCpu=%s cpqDaCmdCount=%s cpqDaAvgLatency=%s", $cpu, $commands, $latency); 487 | } 488 | } 489 | 490 | sub print_system_information { 491 | my $key; 492 | my $value; 493 | 494 | my $si = ""; # system information (response string) 495 | my $pn = ""; # cpqSiProductName 496 | my $ff = 0; # cpqSiFormFactor 497 | my $sn = ""; # cpqSiSysSerialNum 498 | my $at = ""; # cpqSiAssetTag 499 | 500 | printf("cpqSystemInfo OID-tree (key-value pairs):\n") if (defined $debug); 501 | if ( ! defined ($response = $session->get_table($cpqSystemInfo))) { 502 | printf(" - %-35s - OID-tree %s not found\n", "cpqSystemInfo", $cpqSystemInfo) if (defined $debug); 503 | } else { 504 | while (($key, $value) = each %{$response}) { 505 | printf(" * %-35s = %s\n", $key, $value) if (defined $debug); 506 | if ($key =~ /^${cpqSiProductName}/) { $pn = rtrim($value); } 507 | elsif ($key =~ /^${cpqSiFormFactor}/) { $ff = int $value; } 508 | elsif ($key =~ /^${cpqSiSysSerialNum}/) { $sn = rtrim($value); } 509 | elsif ($key =~ /^${cpqSiAssetTag}/) { $at = rtrim($value); } 510 | } 511 | 512 | $si = ($pn eq "") ? 'unknown model' : $pn; 513 | if ($ff > 0) { $si .= ' (' . $cpqFormFactors{$ff} . ')'; } 514 | if ($sn ne "") { $si .= ' S/N ' . $sn; } 515 | if ($at ne "") { $si .= ' AssetTag ' . $at; } 516 | 517 | print "\n" if (defined $debug); 518 | print $si; 519 | print "\n" if (defined $debug); 520 | } 521 | } 522 | 523 | # 524 | # $_[0] component OID 525 | # $_[1] component description 526 | # $_[2] component type 527 | # $_[3] component name 528 | # 529 | sub fetch_status { 530 | my $value; 531 | 532 | if ($_[3] eq "cpqHeEventLogCondition") { 533 | if ( ! defined ($response = $session->get_request($_[0]))) { 534 | printf(" - %-35s - %s (OID %s not found, ignoring)\n", $_[3], $_[1], $_[0]) if (defined $debug); 535 | # tree not found, ignore! 536 | return -1; 537 | } 538 | } elsif ( ! defined ($response = $session->get_table($_[0]))) { 539 | printf(" - %-35s - %s (OID-tree %s not found, ignoring)\n", $_[3], $_[1], $_[0]) if (defined $debug); 540 | # tree not found, ignore! 541 | return -1; 542 | } 543 | 544 | while (($key, $value) = each %{$response}) { 545 | my $component_value = $_[3] . '=' . $value; 546 | # my $component_unit = (defined $key) ? ($_[3] . '.' . substr($key, length($_[0])+1)) : $_[3]; 547 | my $component_unit = $_[3] . '.' . 548 | (($_[3] eq "cpqHeEventLogCondition") 549 | ? substr($key, length($_[0])-1) 550 | : substr($key, length($_[0])+1)); 551 | if ($value > 2) { 552 | # 1 = other/unknow => assume OK 553 | # 2 = ok => OK 554 | # 3 = failure/worse => CRITICAL/WARNING 555 | if (in_array($component_unit, @all_exclude)) { 556 | next; 557 | } elsif (in_array($key, @all_ignore) || in_array($_[3], @all_ignore) || in_array($component_value, @all_ignore)) { 558 | printf("critical state ignored because of setting %s\n", $component_value) if (defined $debug); 559 | next; 560 | } elsif ((in_array($key, @all_warnings) || in_array($_[3], @all_warnings) || in_array($component_value, @all_warnings)) && $state ne 'CRITICAL') { 561 | printf("critical state reduced to warning because of setting %s\n", $component_value) if (defined $debug); 562 | $state = 'WARNING'; 563 | } else { 564 | $state = 'CRITICAL'; 565 | } 566 | } 567 | if (defined $debug || $value > 2) { 568 | # eval to something like '$cpqGenericStates{$value}' 569 | my $stateValue = eval("\$" . $_[2] . "{" . $value . "}"); 570 | my $keyInfo = (defined $key && (length($key) > (length($_[0])+2))) ? (substr($key, length($_[0])+1) . ": ") : ""; 571 | 572 | if (defined $debug) { 573 | printf(" * %-35s = %s [%s (%s%s) %s]\n", $component_unit, $value, $_[1], $keyInfo, $stateValue, $_[2]); 574 | } else { 575 | printf(" %s (%s%s)", $_[1], $keyInfo, $stateValue); 576 | } 577 | } 578 | $countComponents++; 579 | } 580 | return 0; 581 | } 582 | 583 | sub usage() { 584 | printf("\nMissing arguments!\n\n"); 585 | printf("Usage:\n\n"); 586 | printf("%s -H [-C ] [-d] [-x excludecomponent1,excludecomponent2,...]\n", $PROGNAME); 587 | printf("Copyright (C) 2008-2015 Guenther Mair\n\n"); 588 | printf("See '%s --help' for details.\n", $PROGNAME); 589 | printf("\n\n"); 590 | exit $ERRORS{"UNKNOWN"}; 591 | } 592 | 593 | sub print_help() { 594 | printf("%s plugin\n", $PROGNAME); 595 | printf("\n+---------+---------+---------+---------+---------+---------+---------+---------\n\n"); 596 | printf("Module specific parameters\n\n"); 597 | printf(" -d (--debug) debug / verbose mode (print checked details)\n"); 598 | printf(" -x (--exclude) exclude components from check (separate by commas, may\n"); 599 | printf(" also contain the special value 'cpqSystemInfo')\n"); 600 | printf(" -i (--ignore) ignore NOT-OK-states for these components\n"); 601 | printf(" (separate by commas); specific values to be selected may\n"); 602 | printf(" be specified as in '-i cpqFcaHostCntlrStatus=7' or\n"); 603 | printf(" '-i cpqNicIfLogMapStatus' (independent of value)\n"); 604 | printf(" -w (--warnings) use warnings instead of criticals for these components\n"); 605 | printf(" (separate by commas); specific values to be selected may\n"); 606 | printf(" be specified as in '-w cpqNicIfLogMapStatus=6' or\n"); 607 | printf(" '-w cpqNicIfLogMapStatus' (independent of value)\n"); 608 | printf(" -r (--required) report critical if any of these components is not found\n"); 609 | printf(" (separate by commas)\n"); 610 | printf("\n+---------+---------+---------+---------+---------+---------+---------+---------\n\n"); 611 | printf("Currently the module supports the following components\n\n * " . join(",\n * ", keys %cpqComponents) . "\n"); 612 | printf("\n+---------+---------+---------+---------+---------+---------+---------+---------\n\n"); 613 | printf("Smarty Array specific parameters (not verified by default)\n\n"); 614 | printf(" -c (--maxcpu) maximum cpu busy value the array controller (percent)\n"); 615 | printf(" --maxcommands maximum number of read/write commands per second\n"); 616 | printf(" --maxlatency maximum average command latency in 1/100000 second units\n"); 617 | printf(" --perfdata gather performance data only (you will also get performance\n"); 618 | printf(" data output if using any of the commands above):\n\n"); 619 | printf(" (a) cpqDaCpu (cpqDaCntlrPerfCpuPercentBusy)\n"); 620 | printf(" (b) cpqDaCmdCount (cpqDaCntlrPerfCommandCount)\n"); 621 | printf(" (c) cpqDaAvgLatency (cpqDaCntlrPerfAvgLatency)\n"); 622 | printf("\n+---------+---------+---------+---------+---------+---------+---------+---------\n\n"); 623 | printf("SNMP parameters\n\n"); 624 | printf(" -H (--hostname) hostname to query (required)\n"); 625 | printf(" -C (--community) SNMP read community (defaults to public, used with SNMP\n"); 626 | printf(" v1 and v2c)\n"); 627 | printf(" -v (--snmpversion) 1 for SNMP v1 (default)\n"); 628 | printf(" 2 for SNMP v2c\n"); 629 | printf(" SNMP v2c will use get_bulk for less overhead\n"); 630 | printf(" -L (--seclevel) choice of 'noAuthNoPriv', 'authNoPriv', or 'authPriv'\n"); 631 | printf(" -U (--secname) username for SNMPv3 context\n"); 632 | printf(" -a (--authproto) authentication protocol (MD5 or SHA1)\n"); 633 | printf(" -A (--authpass) authentication password (cleartext ASCII or localized key\n"); 634 | printf(" in hex with 0x prefix generated by using 'snmpkey'\n"); 635 | printf(" utility auth password and authEngineID)\n"); 636 | printf(" -X (--privpass) privacy password (cleartext ASCII or localized key\n"); 637 | printf(" in hex with 0x prefix generated by using 'snmpkey'\n"); 638 | printf(" utility privacy password and authEngineID)\n"); 639 | printf(" -p (--port) SNMP port (default 161)\n"); 640 | printf(" -M (--maxmsgsize) max message size - usefull only for v1 or v2c\n"); 641 | printf(" -t (--timeout) seconds before the plugin times out (default=%s)\n", $TIMEOUT); 642 | printf(" -V (--version) plugin version\n"); 643 | printf(" -h (--help) show this usage screen\n\n"); 644 | print_revision($PROGNAME, '$Revision: 82 $'); 645 | } 646 | 647 | sub process_arguments() { 648 | $status = GetOptions( 649 | "V" => \$opt_V, "version" => \$opt_V, 650 | "h" => \$opt_h, "help" => \$opt_h, 651 | "d" => \$debug, "debug" => \$debug, 652 | "c=i" => \$maxcpu, "maxcpu=i" => \$maxcpu, 653 | "maxcommands=i" => \$maxcommands, 654 | "maxlatency=i" => \$maxlatency, 655 | "perfdata" => \$collect_perfdata, 656 | "x=s" => \$exclude, "exclude=s" => \$exclude, 657 | "i=s" => \$ignore, "ignore=s" => \$ignore, 658 | "w=s" => \$warnings, "warnings=s" => \$warnings, 659 | "r=s" => \$required, "required=s" => \$required, 660 | "v=i" => \$snmpversion, "snmpversion=i" => \$snmpversion, 661 | "C=s" => \$community, "community=s" => \$community, 662 | "L=s" => \$seclevel, "seclevel=s" => \$seclevel, 663 | "a=s" => \$authproto, "authproto=s" => \$authproto, 664 | "U=s" => \$secname, "secname=s" => \$secname, 665 | "A=s" => \$authpass, "authpass=s" => \$authpass, 666 | "X=s" => \$privpass, "privpass=s" => \$privpass, 667 | "p=i" => \$port, "port=i" => \$port, 668 | "H=s" => \$hostname, "hostname=s" => \$hostname, 669 | "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize, 670 | "t=i" => \$timeout, "timeout=i" => \$timeout, 671 | ); 672 | 673 | @all_exclude = split(/,/, $exclude); 674 | @all_ignore = split(/,/, $ignore); 675 | @all_warnings = split(/,/, $warnings); 676 | @all_required = split(/,/, $required); 677 | 678 | if ($status == 0) { 679 | print_help(); 680 | exit $ERRORS{'OK'}; 681 | } 682 | 683 | if ($opt_V) { 684 | print_revision($PROGNAME,'$Revision: 82 $'); 685 | exit $ERRORS{'OK'}; 686 | } 687 | 688 | if ($opt_h) { 689 | print_help(); 690 | exit $ERRORS{'OK'}; 691 | } 692 | 693 | # verify validity of hostname 694 | my ($err, @addrs) = getaddrinfo($hostname, 0); 695 | if ($err != 0) { 696 | usage(); 697 | exit $ERRORS{"UNKNOWN"}; 698 | } 699 | 700 | # check IPv4/IPv6 for details see http://backreference.org/2014/12/11/some-common-networking-operations-in-perl/ 701 | if ($addrs[0]->{family} == AF_INET) { 702 | # port is always 0 when resolving a hostname 703 | my ($port, $addr4) = sockaddr_in($addrs[0]->{addr}); 704 | $domain = 'udp/ipv4'; 705 | $hostname = inet_ntop(AF_INET, $addr4); 706 | } else { 707 | my ($port, $addr6, $scope_id, $flowinfo) = sockaddr_in6($addrs[0]->{addr}); 708 | $domain = 'udp/ipv6'; 709 | $hostname = inet_ntop(AF_INET6, $addr6); 710 | } 711 | printf("IPv4/IPv6 host address: %s\n", $hostname) if (defined $debug); 712 | 713 | $timeout = $TIMEOUT unless (defined $timeout); 714 | 715 | if ($snmpversion =~ /3/) { 716 | # Must define a security level even though default is noAuthNoPriv 717 | # v3 requires a security username 718 | if (defined $seclevel && defined $secname) { 719 | 720 | # Must define a security level even though defualt is noAuthNoPriv 721 | unless (grep /^$seclevel$/, qw(noAuthNoPriv authNoPriv authPriv)) { 722 | usage(); 723 | exit $ERRORS{"UNKNOWN"}; 724 | } 725 | 726 | # Authentication wanted 727 | if ($seclevel eq 'authNoPriv' || $seclevel eq 'authPriv') { 728 | unless ($authproto eq 'MD5' || $authproto eq 'SHA1') { 729 | usage(); 730 | exit $ERRORS{"UNKNOWN"}; 731 | } 732 | 733 | if ( ! defined $authpass) { 734 | usage(); 735 | exit $ERRORS{"UNKNOWN"}; 736 | } else { 737 | $auth = ($authpass =~ /^0x/) ? "-authkey => $authpass" : "-authpassword => $authpass"; 738 | } 739 | } 740 | 741 | # Privacy (DES encryption) wanted 742 | if ($seclevel eq 'authPriv') { 743 | if ( ! defined $privpass) { 744 | usage(); 745 | exit $ERRORS{"UNKNOWN"}; 746 | } else { 747 | $priv = ($privpass =~ /^0x/) ? "-privkey => $privpass" : "-privpassword => $privpass"; 748 | } 749 | } 750 | } else { 751 | usage(); 752 | exit $ERRORS{'UNKNOWN'}; ; 753 | } 754 | } # end snmpv3 755 | 756 | # start snmpv1 / snmpv2 757 | if ($snmpversion =~ /[12]/) { 758 | ($session, $error) = Net::SNMP->session( 759 | -hostname => $hostname, 760 | -port => $port, 761 | -domain => $domain, 762 | -community => $community, 763 | -version => $snmpversion, 764 | -maxmsgsize => $maxmsgsize 765 | ); 766 | 767 | if ( ! defined($session)) { 768 | $state = 'UNKNOWN'; 769 | $answer = $error; 770 | printf("%s: %s\n", $state, $answer); 771 | exit $ERRORS{$state}; 772 | } 773 | } elsif ($snmpversion =~ /3/) { 774 | if ($seclevel eq 'noAuthNoPriv') { 775 | ($session, $error) = Net::SNMP->session( 776 | -hostname => $hostname, 777 | -port => $port, 778 | -domain => $domain, 779 | -version => $snmpversion, 780 | -username => $secname 781 | ); 782 | } elsif ($seclevel eq 'authNoPriv') { 783 | ($session, $error) = Net::SNMP->session( 784 | -hostname => $hostname, 785 | -port => $port, 786 | -domain => $domain, 787 | -version => $snmpversion, 788 | -username => $secname, 789 | $auth, 790 | -authprotocol => $authproto 791 | ); 792 | } elsif ($seclevel eq 'authPriv') { 793 | ($session, $error) = Net::SNMP->session( 794 | -hostname => $hostname, 795 | -port => $port, 796 | -domain => $domain, 797 | -version => $snmpversion, 798 | -username => $secname, 799 | $auth, 800 | -authprotocol => $authproto, 801 | $priv 802 | ); 803 | } 804 | 805 | if ( ! defined($session)) { 806 | $state = 'UNKNOWN'; 807 | $answer = $error; 808 | printf("%s: %s\n", $state, $answer); 809 | exit $ERRORS{$state}; 810 | } 811 | 812 | } else { 813 | $state = 'UNKNOWN'; 814 | printf("%s: No support for SNMP v%s yet\n", $state, $snmpversion); 815 | exit $ERRORS{$state}; 816 | } 817 | } 818 | -------------------------------------------------------------------------------- /mibs/CPQ-THRSH.mib: -------------------------------------------------------------------------------- 1 | -- **************************************************************************** 2 | -- 3 | -- Threshold Management Functions 4 | -- Management Information Base for SNMP Network Management 5 | -- 6 | -- 7 | -- Copyright 1993,2003 Hewlett-Packard Development Company, L.P. 8 | -- 9 | -- Hewlett-Packard Company shall not be liable for technical or 10 | -- editorial errors or omissions contained herein. The information in 11 | -- this document is provided "as is" without warranty of any kind and 12 | -- is subject to change without notice. The warranties for HP products 13 | -- are set forth in the express limited warranty statements 14 | -- accompanying such products. Nothing herein should be construed as 15 | -- constituting an additional warranty. 16 | -- 17 | -- Confidential computer software. Valid license from HP required for 18 | -- possession, use or copying. Consistent with FAR 12.211 and 12.212, 19 | -- Commercial Computer Software, Computer Software Documentation, and 20 | -- Technical Data for Commercial Items are licensed to the U.S. 21 | -- Government under vendor's standard commercial license. 22 | -- 23 | -- Refer to the READMIB.RDM file for more information about the 24 | -- organization of the information in the Compaq Enterprise. 25 | -- 26 | -- The Compaq Enterprise number is 232. 27 | -- The ASN.1 prefix to, and including the Compaq Enterprise is: 28 | -- 1.3.6.1.4.1.232 29 | -- 30 | -- **************************************************************************** 31 | 32 | CPQTHRSH-MIB DEFINITIONS ::= BEGIN 33 | 34 | IMPORTS 35 | compaq FROM CPQHOST-MIB 36 | enterprises FROM RFC1155-SMI 37 | DisplayString FROM RFC1213-MIB 38 | OBJECT-TYPE FROM RFC-1212 39 | TRAP-TYPE FROM RFC-1215 40 | sysName FROM RFC1213-MIB 41 | cpqHoTrapFlags FROM CPQHOST-MIB; 42 | 43 | -- compaq OBJECT IDENTIFIER ::= { enterprises 232 } 44 | 45 | cpqThresholdMgmt OBJECT IDENTIFIER ::= { compaq 10 } 46 | cpqMeMibRev OBJECT IDENTIFIER ::= { cpqThresholdMgmt 1 } 47 | cpqMeComponent OBJECT IDENTIFIER ::= { cpqThresholdMgmt 2 } 48 | 49 | cpqMeInterface OBJECT IDENTIFIER ::= { cpqMeComponent 1 } 50 | cpqMeAlarm OBJECT IDENTIFIER ::= { cpqMeComponent 2 } 51 | 52 | cpqMeOsCommon OBJECT IDENTIFIER ::= { cpqMeInterface 4 } 53 | 54 | -- **************************************************************************** 55 | -- Threshold Information MIB Revision 56 | -- ================================== 57 | -- 58 | -- The compaq enterprise (1.3.6.1.4.1.232) 59 | -- cpqThresholdMgmt Group (1.3.6.1.4.1.232.10) 60 | -- cpqMeMibRev Group (1.3.6.1.4.1.232.10.1) 61 | -- 62 | -- 63 | -- An SNMP agent conforming to this document will return a 64 | -- cpqMeMibRevMajor of one (1) and a cpqMeMibRevMinor of four (4). 65 | -- 66 | -- Implementation of the cpqMeMibRev group is mandatory for all agents 67 | -- supporting the Threshold Management MIB. 68 | -- 69 | -- **************************************************************************** 70 | 71 | cpqMeMibRevMajor OBJECT-TYPE 72 | SYNTAX INTEGER (1..65535) 73 | ACCESS read-only 74 | STATUS mandatory 75 | DESCRIPTION 76 | "The Major Revision level of the MIB. 77 | 78 | A change in the major revision level represents a major change 79 | in the architecture of the MIB. A change in the major revision 80 | level may indicate a significant change in the information 81 | supported and/or the meaning of the supported information, 82 | correct interpretation of data may require a MIB document with 83 | the same major revision level." 84 | ::= { cpqMeMibRev 1 } 85 | 86 | cpqMeMibRevMinor OBJECT-TYPE 87 | SYNTAX INTEGER (0..65535) 88 | ACCESS read-only 89 | STATUS mandatory 90 | DESCRIPTION 91 | "The Minor Revision level of the MIB. 92 | 93 | A change in the minor revision level may represent some minor 94 | additional support, no changes to any pre-existing information 95 | has occurred." 96 | ::= { cpqMeMibRev 2 } 97 | 98 | cpqMeMibCondition OBJECT-TYPE 99 | SYNTAX INTEGER { 100 | other(1), 101 | ok(2), 102 | degraded(3), 103 | failed(4) 104 | } 105 | ACCESS read-only 106 | STATUS mandatory 107 | DESCRIPTION 108 | "The overall condition. 109 | 110 | This object represents the overall status of the 111 | threshold management system represented by this MIB." 112 | ::= { cpqMeMibRev 3 } 113 | 114 | -- **************************************************************************** 115 | -- Threshold Information OS Common Group 116 | -- ===================================== 117 | -- 118 | -- The compaq enterprise (1.3.6.1.4.1.232) 119 | -- cpqThresholdMgmt Group (1.3.6.1.4.1.232.10) 120 | -- cpqMeComponent Group (1.3.6.1.4.1.232.10.2) 121 | -- cpqMeInterface Group (1.3.6.1.4.1.232.10.2.1) 122 | -- cpqMeOsCommon Group (1.3.6.1.4.1.232.10.2.1.4) 123 | -- cpqMeOsCommonModuleTable (1.3.6.1.4.1.232.10.2.1.4.2) deprecated 124 | -- 125 | -- Implementation of the cpqMeOsCommon group is mandatory for all 126 | -- agents that support the Threshold Management MIB. 127 | -- 128 | -- **************************************************************************** 129 | 130 | cpqMeOsCommonPollFreq OBJECT-TYPE 131 | SYNTAX INTEGER (1..2147483647) 132 | ACCESS read-write 133 | STATUS mandatory 134 | DESCRIPTION 135 | "The Insight Agent's minimum polling frequency. 136 | 137 | The minimum frequency, in seconds, at which the Insight Agent 138 | will permit the cpqMeAlarmInterval to be SET (for an entry in 139 | the cpqMeAlarm table). Changing this variable to smaller values 140 | will allow a management station to modify or add entries in the 141 | cpqMeAlarm table that can have smaller cpqMeAlarmInterval values 142 | and will therefore be polled more frequently. An agent may also 143 | choose to fail any request to change the poll frequency to a 144 | value that would severely impact system performance." 145 | ::= { cpqMeOsCommon 1 } 146 | 147 | cpqMeOsCommonModuleTable OBJECT-TYPE 148 | SYNTAX SEQUENCE OF CpqMeOsCommonModuleEntry 149 | ACCESS not-accessible 150 | STATUS deprecated 151 | DESCRIPTION 152 | "A table of software modules that provide an interface to the 153 | device this MIB describes." 154 | ::= { cpqMeOsCommon 2 } 155 | 156 | cpqMeOsCommonModuleEntry OBJECT-TYPE 157 | SYNTAX CpqMeOsCommonModuleEntry 158 | ACCESS not-accessible 159 | STATUS deprecated 160 | DESCRIPTION 161 | "A description of a software modules that provide an interface 162 | to the device this MIB describes." 163 | INDEX { cpqMeOsCommonModuleIndex } 164 | ::= { cpqMeOsCommonModuleTable 1 } 165 | 166 | CpqMeOsCommonModuleEntry ::= SEQUENCE { 167 | cpqMeOsCommonModuleIndex INTEGER, 168 | cpqMeOsCommonModuleName DisplayString, 169 | cpqMeOsCommonModuleVersion DisplayString, 170 | cpqMeOsCommonModuleDate OCTET STRING, 171 | cpqMeOsCommonModulePurpose DisplayString 172 | } 173 | 174 | cpqMeOsCommonModuleIndex OBJECT-TYPE 175 | SYNTAX INTEGER (0..255) 176 | ACCESS read-only 177 | STATUS deprecated 178 | DESCRIPTION 179 | "A unique index for this module description." 180 | ::= { cpqMeOsCommonModuleEntry 1 } 181 | 182 | cpqMeOsCommonModuleName OBJECT-TYPE 183 | SYNTAX DisplayString (SIZE (0..255)) 184 | ACCESS read-only 185 | STATUS deprecated 186 | DESCRIPTION 187 | "The module name." 188 | ::= { cpqMeOsCommonModuleEntry 2 } 189 | 190 | cpqMeOsCommonModuleVersion OBJECT-TYPE 191 | SYNTAX DisplayString (SIZE (0..5)) 192 | ACCESS read-only 193 | STATUS deprecated 194 | DESCRIPTION 195 | "The module version in XX.YY format. 196 | 197 | Where XX is the major version number and YY is the minor version 198 | number. This field will be a null (size 0) string if the agent 199 | cannot provide the module version." 200 | ::= { cpqMeOsCommonModuleEntry 3 } 201 | 202 | cpqMeOsCommonModuleDate OBJECT-TYPE 203 | SYNTAX OCTET STRING (SIZE (7)) 204 | ACCESS read-only 205 | STATUS deprecated 206 | DESCRIPTION 207 | "The module date. 208 | 209 | field octets contents range 210 | ===== ====== ======= ===== 211 | 1 1-2 year 0..65536 212 | 2 3 month 1..12 213 | 3 4 day 1..31 214 | 4 5 hour 0..23 215 | 5 6 minute 0..59 216 | 6 7 second 0..60 217 | (use 60 for leap-second) 218 | 219 | 220 | This field will be set to year = 0 if the agent cannot provide 221 | the module date. The hour, minute, and second field will be set 222 | to zero (0) if they are not relevant. The year field is set 223 | with the most significant octet first." 224 | ::= { cpqMeOsCommonModuleEntry 4 } 225 | 226 | cpqMeOsCommonModulePurpose OBJECT-TYPE 227 | SYNTAX DisplayString (SIZE (0..255)) 228 | ACCESS read-only 229 | STATUS deprecated 230 | DESCRIPTION 231 | "The purpose of the module described in this entry." 232 | ::= { cpqMeOsCommonModuleEntry 5 } 233 | 234 | -- **************************************************************************** 235 | -- Threshold Information Alarm Group 236 | -- ================================= 237 | -- 238 | -- The compaq enterprise (1.3.6.1.4.1.232) 239 | -- cpqThresholdMgmt Group (1.3.6.1.4.1.232.10) 240 | -- cpqMeComponent Group (1.3.6.1.4.1.232.10.2) 241 | -- cpqMeAlarm Group (1.3.6.1.4.1.232.10.2.2) 242 | -- cpqMeAlarmTable (1.3.6.1.4.1.232.10.2.2.2) 243 | -- 244 | -- The cpqMeAlarms group describes the table for controlling 245 | -- Threshold Management software's user definable threshold functions. 246 | -- 247 | -- The Threshold Management alarm group provides a flexible way 248 | -- for users and/or management software to start the sampling of any 249 | -- integer SNMP object on the server being managed for comparison to 250 | -- given thresholds. Once started the Threshold Management will 251 | -- poll the selected object, compare it to given thresholds, and 252 | -- issue an SNMP trap if the value crosses the threshold. Only 253 | -- variables that resolve to an ASN.1 primitive type of INTEGER 254 | -- (INTEGER, Counter, Gauge, or TimeTicks) may be monitored in this way. 255 | -- 256 | -- This function has a hysteresis mechanism to limit the generation of 257 | -- trap events. This mechanism generates one event as a threshold is 258 | -- crossed in the appropriate direction. No more events are generated 259 | -- for that threshold until the opposite threshold is crossed. 260 | -- 261 | -- 262 | -- 263 | -- Implementation of the cpqMeAlarm group is optional for agents 264 | -- supporting the Threshold Management MIB. 265 | -- 266 | -- **************************************************************************** 267 | 268 | 269 | cpqMeAlarmNextIndex OBJECT-TYPE 270 | SYNTAX INTEGER 271 | ACCESS read-only 272 | STATUS mandatory 273 | DESCRIPTION 274 | "The index of the next available entry in the cpqMeAlarm 275 | table. If the maximum number of entries to the cpqMeAlarm 276 | table has been reached, this index will contain -1." 277 | ::= { cpqMeAlarm 1 } 278 | 279 | 280 | cpqMeAlarmTable OBJECT-TYPE 281 | SYNTAX SEQUENCE OF CpqMeAlarmEntry 282 | ACCESS not-accessible 283 | STATUS mandatory 284 | DESCRIPTION 285 | "A list of alarm entries." 286 | ::= { cpqMeAlarm 2 } 287 | 288 | cpqMeAlarmEntry OBJECT-TYPE 289 | SYNTAX CpqMeAlarmEntry 290 | ACCESS not-accessible 291 | STATUS mandatory 292 | DESCRIPTION 293 | "A list of parameters that set up a periodic checking 294 | for alarm conditions." 295 | INDEX { cpqMeAlarmIndex } 296 | ::= { cpqMeAlarmTable 1 } 297 | 298 | CpqMeAlarmEntry ::= SEQUENCE { 299 | cpqMeAlarmIndex INTEGER, 300 | cpqMeAlarmInterval INTEGER, 301 | cpqMeAlarmVariable OBJECT IDENTIFIER, 302 | cpqMeAlarmSampleType INTEGER, 303 | cpqMeAlarmValue INTEGER, 304 | cpqMeAlarmStartupAlarm INTEGER, 305 | cpqMeAlarmRisingThreshold INTEGER, 306 | cpqMeAlarmFallingThreshold INTEGER, 307 | cpqMeAlarmPermanence INTEGER, 308 | cpqMeAlarmOwner DisplayString, 309 | cpqMeAlarmStatus INTEGER, 310 | cpqMeAlarmSeverity INTEGER, 311 | cpqMeAlarmExtendedDescription DisplayString 312 | } 313 | 314 | cpqMeAlarmIndex OBJECT-TYPE 315 | SYNTAX INTEGER (1..65535) 316 | ACCESS read-only 317 | STATUS mandatory 318 | DESCRIPTION 319 | "An index that uniquely identifies an entry in the 320 | cpqMeAlarm table. Each such entry defines a 321 | diagnostic sample at a particular interval 322 | for an object on the device." 323 | ::= { cpqMeAlarmEntry 1 } 324 | 325 | cpqMeAlarmInterval OBJECT-TYPE 326 | SYNTAX INTEGER (1..2147483647) 327 | ACCESS read-write 328 | STATUS mandatory 329 | DESCRIPTION 330 | "The interval, in seconds, between consecutive samples of 331 | the data. When setting this variable, care should be given 332 | to ensure that the variable being monitored will not exceed 333 | 2^31 - 1 and roll over. 334 | 335 | The first sample will be taken immediately upon the 336 | cpqMeAlarmStatus being set to valid(1). 337 | 338 | This object may not be modified if the associated 339 | cpqMeAlarmStatus object is equal to valid(1)." 340 | ::= { cpqMeAlarmEntry 2 } 341 | 342 | cpqMeAlarmVariable OBJECT-TYPE 343 | SYNTAX OBJECT IDENTIFIER 344 | ACCESS read-write 345 | STATUS mandatory 346 | DESCRIPTION 347 | "The object identifier of the particular variable to be 348 | sampled. Only variables that resolve to an ASN.1 primitive 349 | type of INTEGER (INTEGER, Counter, Gauge, or TimeTicks) may 350 | be sampled. 351 | 352 | Because SNMP access control is articulated entirely 353 | in terms of the contents of MIB views, no access 354 | control mechanism exists that can restrict the value of 355 | this object to identify only those objects that exist 356 | in a particular MIB view. Because there is thus no 357 | acceptable means of restricting the read access that 358 | could be obtained through the alarm mechanism, the 359 | agent must only grant write access to this object in 360 | those views that have read access to all objects on 361 | the agent. 362 | 363 | During a set operation, if the supplied variable 364 | name is not available in the selected MIB view, a 365 | badValue error must be returned. If at any time 366 | the variable name of an established cpqMeAlarmEntry is 367 | no longer available in the selected MIB view, the 368 | agent must change the status of this cpqMeAlarmEntry 369 | to tempUnavailable(5). 370 | 371 | This object may not be modified if the associated 372 | cpqMeAlarmStatus object is equal to valid(1)." 373 | ::= { cpqMeAlarmEntry 3 } 374 | 375 | cpqMeAlarmSampleType OBJECT-TYPE 376 | SYNTAX INTEGER { 377 | absoluteValue(1), 378 | deltaValue(2), 379 | absSuppressRisingTrap(3), 380 | absSuppressFallingTrap(4) 381 | } 382 | ACCESS read-write 383 | STATUS mandatory 384 | DESCRIPTION 385 | "The method of sampling the selected variable and 386 | calculating the value to be compared against the 387 | thresholds. 388 | 389 | If the sample type (cpqMeAlarmSampleType) is 390 | absoluteValue(1), the most recent sampled value of 391 | the selected variable (cpqMeAlarmVariable) will be 392 | compared directly with the thresholds 393 | (cpqMeAlarmRisingThreshold and cpqMeAlarmFallingThreshold). 394 | 395 | If the sample type (cpqMeAlarmSampleType) is 396 | deltaValue(2), the most recently sampled value minus 397 | the previous sampled value is compared with the threshold 398 | values (cpqMeAlarmRisingThreshold and 399 | cpqMeAlarmFallingThreshold). 400 | 401 | If the sample type is absSupressRisingValue(3), only 402 | comparisons with the cpqMeAlarmFallingThreshold are 403 | performed. If the sample type is absSupressFallingValue(4), 404 | only comparisons with the cpqMeAlarmRisingThreshold are 405 | performed. 406 | 407 | This object may not be modified if the associated 408 | cpqMeAlarmStatus object is equal to valid(1)." 409 | ::= { cpqMeAlarmEntry 4 } 410 | 411 | cpqMeAlarmValue OBJECT-TYPE 412 | SYNTAX INTEGER 413 | ACCESS read-only 414 | STATUS mandatory 415 | DESCRIPTION 416 | "The value of the object identifier (cpqMeAlarmVariable) 417 | during the last sampling period. The value during the 418 | current sampling period is not made available until 419 | the period is completed. 420 | 421 | If the sample type (cpqMeAlarmSampleType) is 422 | absoluteValue(1), absSupressRisingValue(3), or 423 | absSupressFallingValue(4), the value (cpqMeAlarmValue) 424 | should become the actual value obtained during this 425 | sampling period. 426 | 427 | If the sample type (cpqMeAlarmSampleType) is 428 | deltaValue(2), the value (cpqMeAlarmValue) should 429 | become the most recently sampled value minus the 430 | previous sample (cpqMeAlarmValue)." 431 | ::= { cpqMeAlarmEntry 5 } 432 | 433 | cpqMeAlarmStartupAlarm OBJECT-TYPE 434 | SYNTAX INTEGER { 435 | risingAlarm(1), 436 | fallingAlarm(2), 437 | risingOrFallingAlarm(3) 438 | } 439 | ACCESS read-write 440 | STATUS mandatory 441 | DESCRIPTION 442 | "The alarm that may be sent when this entry is first 443 | set to valid. 444 | 445 | If the sample type (cpqMeAlarmSampleType) is 446 | absoluteValue(1), then the following comparisons are 447 | used to generate an event. 448 | 449 | If cpqMeAlarmStartupAlarm is equal to risingAlarm(1) or 450 | risingOrFallingAlarm(3), then a single event will be 451 | generated if the first sample after this entry becomes 452 | valid is greater than or equal to this threshold. If 453 | cpqMeAlarmStartupAlarm is equal to fallingAlarm(2) or 454 | risingOrFallingAlarm(3), then a single event will be 455 | generated if the first sample after this entry becomes 456 | valid is less than or equal to this threshold. 457 | 458 | This object may not be modified if the associated 459 | cpqMeAlarmStatus object is equal to valid(1)." 460 | ::= { cpqMeAlarmEntry 6 } 461 | 462 | cpqMeAlarmRisingThreshold OBJECT-TYPE 463 | SYNTAX INTEGER 464 | ACCESS read-write 465 | STATUS mandatory 466 | DESCRIPTION 467 | "A threshold for the sampled object identifier 468 | (cpqMeAlarmVariable). 469 | 470 | If the sample type (cpqMeAlarmSampleType) is 471 | absoluteValue(1), then the following describes the 472 | comparison. When the current sampled value is greater 473 | than or equal to this threshold, and the value 474 | (cpqMeAlarmValue) at the last sampling interval was 475 | less than this threshold, a single event will be generated. 476 | If cpqMeAlarmStartupAlarm is equal to risingAlarm(1) or 477 | risingOrFallingAlarm(3), then a single event will be 478 | generated if the first sample after this entry becomes 479 | valid is greater than or equal to this threshold. 480 | After a rising event is generated, another such event 481 | will not be generated until the sampled value 482 | falls below this threshold and reaches the falling 483 | threshold (cpaMeAlarmFallingThreshold). 484 | 485 | If the sample type (cpqMeAlarmSampleType) is 486 | deltaValue(2), then the following describes the 487 | comparison. When the most recently sampled value minus 488 | the previous sampled value is greater than or equal to 489 | the threshold (cpqMeAlarmRisingThreshold), and the 490 | current alarm value (cpqMeAlarmValue) is less than the 491 | threshold value (cpqMeAlarmRisingThreshold) a single 492 | event will be generated. After a rising event is 493 | generated, another such event will not be generated 494 | until the most recently sampled value minus the previous 495 | sampled value falls below this threshold 496 | (cpqMeAlarmRisingThreshold) and reaches the falling 497 | threshold (cpqMeAlarmFallingThreshold). 498 | 499 | This object may not be modified if the associated 500 | cpqMeAlarmStatus object is equal to valid(1)." 501 | ::= { cpqMeAlarmEntry 7 } 502 | 503 | cpqMeAlarmFallingThreshold OBJECT-TYPE 504 | SYNTAX INTEGER 505 | ACCESS read-write 506 | STATUS mandatory 507 | DESCRIPTION 508 | "A threshold for the sampled object identifier 509 | (cpqMeAlarmVariable). 510 | 511 | If the sample type (cpqMeAlarmSampleType) is 512 | absoluteValue(1), then the following describes the 513 | comparison. When the current sampled value is less 514 | than or equal to this threshold, and the value 515 | (cpqMeAlarmValue) at the last sampling interval was 516 | greater than this threshold, a single event will be 517 | generated. If cpqMeAlarmStartupAlarm is equal to 518 | fallingAlarm(2) or risingOrFallingAlarm(3), then a 519 | single event will be generated if the first sample after 520 | this entry becomes valid is less than or equal to this 521 | threshold. After a falling event is generated, another 522 | such event will not be generated until the sampled value 523 | rises above this threshold and reaches the rising 524 | threshold (cpaMeAlarmRisingThreshold). 525 | 526 | If the sample type (cpqMeAlarmSampleType) is 527 | deltaValue(2), then the following describes the 528 | comparison. When the most recently sampled value minus 529 | the previous sampled value is less than or equal to 530 | the threshold (cpqMeAlarmFallingThreshold), and the 531 | current alarm value (cpqMeAlarmValue) is greater than the 532 | threshold value (cpqMeAlarmFallingThreshold) a single 533 | event will be generated. After a falling event is 534 | generated, another such event will not be generated 535 | until the most recently sampled value minus the previous 536 | sampled value rises above this threshold 537 | (cpqMeAlarmFallingThreshold) and reaches the rising 538 | threshold (cpqMeAlarmRisingThreshold). 539 | 540 | This object may not be modified if the associated 541 | cpqMeAlarmStatus object is equal to valid(1)." 542 | ::= { cpqMeAlarmEntry 8 } 543 | 544 | cpqMeAlarmPermanence OBJECT-TYPE 545 | SYNTAX INTEGER { 546 | temporary(1), 547 | permanent(2) 548 | } 549 | ACCESS read-write 550 | STATUS mandatory 551 | DESCRIPTION 552 | "This specifies if the threshold management software should 553 | recreate this entry if it is brought down and then 554 | restarted. A temporary entry will not be recreated after a 555 | restart. A permanent entry will be recreated after a 556 | restart and requires an explicit invalidation to be 557 | removed." 558 | ::= { cpqMeAlarmEntry 9 } 559 | 560 | cpqMeAlarmOwner OBJECT-TYPE 561 | SYNTAX DisplayString (SIZE (0..127)) 562 | ACCESS read-write 563 | STATUS mandatory 564 | DESCRIPTION 565 | "The entity that configured this entry and is 566 | therefore using the resources assigned to it. 567 | 568 | This string is used to model an administratively 569 | assigned name of the owner of a resource. This 570 | information is taken from the NVT ASCII character set. 571 | It is suggested that this name contain one or more 572 | of the following: 573 | IP address, management station name, network manager's 574 | name, location, or phone number. 575 | In some cases the agent itself will be the owner of 576 | an entry. In these cases, this string shall be set 577 | to a string starting with 'monitor'. 578 | 579 | SNMP access control is articulated entirely in terms of 580 | the contents of MIB views; access to a particular SNMP 581 | object instance depends only upon its presence or 582 | absence in a particular MIB view and never upon its 583 | value or the value of related object instances. Thus, 584 | objects of this type afford resolution of resource 585 | contention only among cooperating managers; they 586 | realize no access control function with respect 587 | to uncooperative parties." 588 | ::= { cpqMeAlarmEntry 10 } 589 | 590 | cpqMeAlarmStatus OBJECT-TYPE 591 | SYNTAX INTEGER { 592 | valid(1), 593 | createRequest(2), 594 | underCreation(3), 595 | invalid(4), 596 | tempUnavailable(5) 597 | } 598 | ACCESS read-write 599 | STATUS mandatory 600 | DESCRIPTION 601 | "The status of this alarm entry. 602 | 603 | Setting this object to the value invalid(4) has the 604 | effect of invalidating the corresponding entry. 605 | That is, it effectively disassociates the mapping 606 | identified with said entry. 607 | It is an implementation-specific matter as to whether 608 | the agent removes an invalidated entry from the table. 609 | Accordingly, management stations must be prepared to 610 | receive tabular information from agents that corresponds 611 | to entries currently not in use. Proper 612 | interpretation of such entries requires examination 613 | of the relevant cpqMeAlarmStatus object. 614 | 615 | An existing instance of this object cannot be set to 616 | createRequest(2). This object may only be set to 617 | createRequest(2) when this instance is created. When 618 | this object is created, the agent may wish to create 619 | supplemental object instances to complete a conceptual 620 | row in this table. Immediately after completing the 621 | create operation, the agent must set this object to 622 | underCreation(3). 623 | 624 | Entries shall exist in the underCreation(3) state until 625 | the management station is finished configuring the 626 | entry and sets this object to valid(1) or aborts, 627 | setting this object to invalid(4). The agent will 628 | deny a request to modify an underCreation(3) entry to 629 | be that of createRequest(2) in order to lessen problems 630 | arising when multiple management stations may be trying 631 | to add an entry with the same index. If the agent 632 | determines that an entry has been in the 633 | underCreation(3) state for an abnormally long time, 634 | it may decide that the management station has 635 | crashed. If the agent makes this decision, 636 | it may set this object to invalid(4) to reclaim the 637 | entry. A prudent agent will understand that the 638 | management station may need to wait for human input 639 | and will allow for that possibility in its 640 | determination of this abnormally long period. 641 | 642 | If the agent has an entry which is valid(4) and it 643 | is unable to query the particular ASN.1 object specified, 644 | the agent should set the status to tempUnavailable(5). 645 | The agent should continue to query that ASN.1 object, 646 | and upon a successful query, the agent should set the 647 | status back to valid(4)." 648 | ::= { cpqMeAlarmEntry 11 } 649 | 650 | cpqMeAlarmSeverity OBJECT-TYPE 651 | SYNTAX INTEGER { 652 | unknown(1), 653 | normal(2), 654 | minor(3), 655 | warning(4), 656 | major(5), 657 | critical(6) 658 | } 659 | ACCESS read-write 660 | STATUS mandatory 661 | DESCRIPTION 662 | "This is used to correlate the severity of a particular alarm 663 | entry. The management console can use this to relate the 664 | severity of an alarm entry to the end user." 665 | ::= {cpqMeAlarmEntry 12} 666 | 667 | cpqMeAlarmExtendedDescription OBJECT-TYPE 668 | SYNTAX DisplayString (SIZE (0..127)) 669 | ACCESS read-write 670 | STATUS mandatory 671 | DESCRIPTION 672 | "This string contains meaningful information about the MIB 673 | variable which has the threshold set upon it. This information 674 | will be bound to a trap and is intended to allow a management 675 | console to have specific customized information about the MIB 676 | variable which caused the trap." 677 | ::= {cpqMeAlarmEntry 13} 678 | 679 | -- **************************************************************************** 680 | -- Threshold Management Trap Definitions 681 | -- ===================================== 682 | -- 683 | -- The SNMP trap messages must not be bigger than 484 octets (bytes). 684 | -- 685 | -- Trap support in an SNMP agent implementation is optional. An SNMP 686 | -- agent implementation may support all, some, or none of the traps. 687 | -- If traps are supported, The user should be provided with the option of 688 | -- disabling traps. 689 | -- 690 | -- 691 | -- ************************************************************************** 692 | 693 | cpqMeRisingAlarm TRAP-TYPE 694 | ENTERPRISE compaq 695 | VARIABLES { cpqMeAlarmVariable, cpqMeAlarmSampleType, 696 | cpqMeAlarmValue, cpqMeAlarmRisingThreshold, 697 | cpqMeAlarmOwner } 698 | DESCRIPTION 699 | "Rising Threshold passed. 700 | 701 | An alarm entry has crossed its rising threshold. The 702 | instances of those objects contained within the variable 703 | list are those of the alarm entry which generated this trap." 704 | 705 | --#TYPE "Rising Threshold Passed (10001)" 706 | --#SUMMARY "%s: Variable %s has value %d >= %d." 707 | --#ARGUMENTS {4,0,2,3} 708 | --#SEVERITY MAJOR 709 | --#TIMEINDEX 99 710 | 711 | ::= 10001 712 | 713 | cpqMeFallingAlarm TRAP-TYPE 714 | ENTERPRISE compaq 715 | VARIABLES { cpqMeAlarmVariable, cpqMeAlarmSampleType, 716 | cpqMeAlarmValue, cpqMeAlarmFallingThreshold, 717 | cpqMeAlarmOwner } 718 | DESCRIPTION 719 | "Falling Threshold passed. 720 | 721 | An alarm entry has crossed its falling threshold. The 722 | instances of those objects contained within the variable 723 | list are those of the alarm entry which generated this trap." 724 | 725 | --#TYPE "Falling Threshold Passed (10002)" 726 | --#SUMMARY "%s: Variable %s has value %d <= %d." 727 | --#ARGUMENTS {4,0,2,3} 728 | --#SEVERITY INFORMATIONAL 729 | --#TIMEINDEX 99 730 | 731 | ::= 10002 732 | 733 | 734 | cpqMe2RisingAlarm TRAP-TYPE 735 | ENTERPRISE compaq 736 | VARIABLES { sysName, cpqHoTrapFlags, 737 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 738 | cpqMeAlarmValue, cpqMeAlarmRisingThreshold, 739 | cpqMeAlarmOwner } 740 | DESCRIPTION 741 | "Rising Threshold passed. 742 | 743 | An alarm entry has crossed its rising threshold. The 744 | instances of those objects contained within the variable 745 | list are those of the alarm entry which generated this trap." 746 | 747 | --#TYPE "Rising Threshold Passed (10003)" 748 | --#SUMMARY "%s: Variable %s has value %d >= %d." 749 | --#ARGUMENTS {6,2,4,5} 750 | --#SEVERITY MAJOR 751 | --#TIMEINDEX 99 752 | 753 | ::= 10003 754 | 755 | cpqMe2FallingAlarm TRAP-TYPE 756 | ENTERPRISE compaq 757 | VARIABLES { sysName, cpqHoTrapFlags, 758 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 759 | cpqMeAlarmValue, cpqMeAlarmFallingThreshold, 760 | cpqMeAlarmOwner } 761 | DESCRIPTION 762 | "Falling Threshold passed. 763 | 764 | An alarm entry has crossed its falling threshold. The 765 | instances of those objects contained within the variable 766 | list are those of the alarm entry which generated this trap." 767 | 768 | --#TYPE "Falling Threshold Passed (10004)" 769 | --#SUMMARY "%s: Variable %s has value %d <= %d." 770 | --#ARGUMENTS {6,2,4,5} 771 | --#SEVERITY INFORMATIONAL 772 | --#TIMEINDEX 99 773 | 774 | ::= 10004 775 | 776 | 777 | cpqMeRisingAlarmExtended TRAP-TYPE 778 | ENTERPRISE compaq 779 | VARIABLES { sysName, cpqHoTrapFlags, 780 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 781 | cpqMeAlarmValue, cpqMeAlarmRisingThreshold, 782 | cpqMeAlarmOwner, cpqMeAlarmSeverity, 783 | cpqMeAlarmExtendedDescription } 784 | DESCRIPTION 785 | "Rising Threshold passed. 786 | 787 | An alarm entry has crossed its rising threshold. The 788 | instances of those objects contained within the variable 789 | list are those of the alarm entry which generated this trap." 790 | 791 | --#TYPE "Rising Threshold Passed (10005)" 792 | --#SUMMARY "%s: Variable %s has value %d >= %d." 793 | --#ARGUMENTS {6,2,4,5} 794 | --#SEVERITY MAJOR 795 | --#TIMEINDEX 99 796 | 797 | ::= 10005 798 | 799 | cpqMeFallingAlarmExtended TRAP-TYPE 800 | ENTERPRISE compaq 801 | VARIABLES { sysName, cpqHoTrapFlags, 802 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 803 | cpqMeAlarmValue, cpqMeAlarmFallingThreshold, 804 | cpqMeAlarmOwner, cpqMeAlarmSeverity, 805 | cpqMeAlarmExtendedDescription } 806 | DESCRIPTION 807 | "Falling Threshold passed. 808 | 809 | An alarm entry has crossed its falling threshold. The 810 | instances of those objects contained within the variable 811 | list are those of the alarm entry which generated this trap." 812 | 813 | --#TYPE "Falling Threshold Passed (10006)" 814 | --#SUMMARY "%s: Variable %s has value %d <= %d." 815 | --#ARGUMENTS {6,2,4,5} 816 | --#SEVERITY INFORMATIONAL 817 | --#TIMEINDEX 99 818 | 819 | ::= 10006 820 | 821 | cpqMeCriticalRisingAlarmExtended TRAP-TYPE 822 | ENTERPRISE compaq 823 | VARIABLES { sysName, cpqHoTrapFlags, 824 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 825 | cpqMeAlarmValue, cpqMeAlarmRisingThreshold, 826 | cpqMeAlarmOwner, cpqMeAlarmSeverity, 827 | cpqMeAlarmExtendedDescription } 828 | DESCRIPTION 829 | "Critical Rising Threshold passed. 830 | 831 | An alarm entry has crossed its Critical rising threshold. The 832 | instances of those objects contained within the variable 833 | list are those of the alarm entry which generated this trap." 834 | 835 | --#TYPE "Critical Rising Threshold Passed (10007)" 836 | --#SUMMARY "%s: Variable %s has value %d >= %d." 837 | --#ARGUMENTS {6,2,4,5} 838 | --#SEVERITY CRITICAL 839 | --#TIMEINDEX 99 840 | 841 | ::= 10007 842 | 843 | cpqMeCriticalFallingAlarmExtended TRAP-TYPE 844 | ENTERPRISE compaq 845 | VARIABLES { sysName, cpqHoTrapFlags, 846 | cpqMeAlarmVariable, cpqMeAlarmSampleType, 847 | cpqMeAlarmValue, cpqMeAlarmFallingThreshold, 848 | cpqMeAlarmOwner, cpqMeAlarmSeverity, 849 | cpqMeAlarmExtendedDescription } 850 | DESCRIPTION 851 | "Critical Falling Threshold passed. 852 | 853 | An alarm entry has crossed its Critical falling threshold. The 854 | instances of those objects contained within the variable 855 | list are those of the alarm entry which generated this trap." 856 | 857 | --#TYPE "Critical Falling Threshold Passed (10008)" 858 | --#SUMMARY "%s: Variable %s has value %d <= %d." 859 | --#ARGUMENTS {6,2,4,5} 860 | --#SEVERITY INFORMATIONAL 861 | --#TIMEINDEX 99 862 | 863 | ::= 10008 864 | 865 | 866 | END 867 | 868 | -------------------------------------------------------------------------------- /mibs/CPQ-CR.mib: -------------------------------------------------------------------------------- 1 | -- **************************************************************************** 2 | -- 3 | -- CR3500 RAID Controller 4 | -- Management Information Base for SNMP Network Management 5 | -- 6 | -- 7 | -- Copyright 1999,2003 Hewlett-Packard Development Company, L.P. 8 | -- 9 | -- Hewlett-Packard Company shall not be liable for technical or 10 | -- editorial errors or omissions contained herein. The information in 11 | -- this document is provided "as is" without warranty of any kind and 12 | -- is subject to change without notice. The warranties for HP products 13 | -- are set forth in the express limited warranty statements 14 | -- accompanying such products. Nothing herein should be construed as 15 | -- constituting an additional warranty. 16 | -- 17 | -- Confidential computer software. Valid license from HP required for 18 | -- possession, use or copying. Consistent with FAR 12.211 and 12.212, 19 | -- Commercial Computer Software, Computer Software Documentation, and 20 | -- Technical Data for Commercial Items are licensed to the U.S. 21 | -- Government under vendor's standard commercial license. 22 | -- 23 | -- Refer to the READMIB.RDM file for more information about the 24 | -- organization of the information in the Compaq Enterprise. 25 | -- 26 | -- The Compaq Enterprise number is 232. 27 | -- The ASN.1 prefix to, and including the Compaq Enterprise is: 28 | -- 1.3.6.1.4.1.232 29 | -- 30 | -- 31 | -- **************************************************************************** 32 | 33 | CPQCR-MIB DEFINITIONS ::= BEGIN 34 | 35 | IMPORTS 36 | compaq FROM CPQHOST-MIB 37 | enterprises FROM RFC1155-SMI 38 | Counter FROM RFC1155-SMI 39 | Gauge FROM RFC1155-SMI 40 | DisplayString FROM RFC1213-MIB 41 | OBJECT-TYPE FROM RFC-1212 42 | TRAP-TYPE FROM RFC-1215 43 | sysName FROM RFC1213-MIB 44 | cpqHoTrapFlags FROM CPQHOST-MIB; 45 | 46 | -- compaq OBJECT IDENTIFIER ::= { enterprises 232 } 47 | 48 | cpqClusteredRAID OBJECT IDENTIFIER ::= { compaq 141 } 49 | cpqCrMibRev OBJECT IDENTIFIER ::= { cpqClusteredRAID 1 } 50 | cpqCrComponent OBJECT IDENTIFIER ::= { cpqClusteredRAID 2 } 51 | cpqCrTrap OBJECT IDENTIFIER ::= { cpqClusteredRAID 3 } 52 | 53 | cpqCrInterface OBJECT IDENTIFIER ::= { cpqCrComponent 1 } 54 | cpqCrCntlr OBJECT IDENTIFIER ::= { cpqCrComponent 2 } 55 | cpqCrLogDrv OBJECT IDENTIFIER ::= { cpqCrComponent 3 } 56 | cpqCrSpareDrv OBJECT IDENTIFIER ::= { cpqCrComponent 4 } 57 | cpqCrPhyDrv OBJECT IDENTIFIER ::= { cpqCrComponent 5 } 58 | cpqCrEMU OBJECT IDENTIFIER ::= { cpqCrComponent 7 } 59 | cpqCrExpCab OBJECT IDENTIFIER ::= { cpqCrComponent 8 } 60 | cpqCrPartition OBJECT IDENTIFIER ::= { cpqCrComponent 9 } 61 | 62 | cpqCrOsCommon OBJECT IDENTIFIER ::= { cpqCrInterface 4 } 63 | 64 | cpqCrInterfaceTrap OBJECT IDENTIFIER ::= { cpqCrTrap 1 } 65 | cpqCrCntlrTrap OBJECT IDENTIFIER ::= { cpqCrTrap 2 } 66 | cpqCrLogDrvTrap OBJECT IDENTIFIER ::= { cpqCrTrap 3 } 67 | cpqCrSpareDrvTrap OBJECT IDENTIFIER ::= { cpqCrTrap 4 } 68 | cpqCrPhyDrvTrap OBJECT IDENTIFIER ::= { cpqCrTrap 5 } 69 | cpqCrEMUTrap OBJECT IDENTIFIER ::= { cpqCrTrap 7 } 70 | cpqCrExpCabTrap OBJECT IDENTIFIER ::= { cpqCrTrap 8 } 71 | 72 | -- **************************************************************************** 73 | -- Clustered RAID MIB Revision 74 | -- =========================== 75 | -- 76 | -- The compaq enterprise (1.3.6.1.4.1.232) 77 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 78 | -- cpqCrMibRev Group (1.3.6.1.4.1.232.141.1) 79 | -- 80 | -- An SNMP agent conforming to this document will return a 81 | -- cpqCrMibRevMajor of one (1) and a cpqCrMibRevMinor of one (1). 82 | -- 83 | -- **************************************************************************** 84 | 85 | cpqCrMibRevMajor OBJECT-TYPE 86 | SYNTAX INTEGER (1..65535) 87 | ACCESS read-only 88 | STATUS mandatory 89 | DESCRIPTION 90 | "The Major Revision level. 91 | A change in the major revision level represents a major change 92 | in the architecture of the MIB. A change in the major revision 93 | level may indicate a significant change in the information 94 | supported and/or the meaning of the supported information, 95 | correct interpretation of data may require a MIB document with 96 | the same major revision level." 97 | ::= { cpqCrMibRev 1 } 98 | 99 | cpqCrMibRevMinor OBJECT-TYPE 100 | SYNTAX INTEGER (0..65535) 101 | ACCESS read-only 102 | STATUS mandatory 103 | DESCRIPTION 104 | "The Minor Revision level. 105 | A change in the minor revision level may represent some minor 106 | additional support, no changes to any pre-existing information 107 | has occurred." 108 | ::= { cpqCrMibRev 2 } 109 | 110 | cpqCrMibCondition OBJECT-TYPE 111 | SYNTAX INTEGER 112 | { 113 | other(1), 114 | ok(2), 115 | degraded(3), 116 | failed(4) 117 | } 118 | ACCESS read-only 119 | STATUS mandatory 120 | DESCRIPTION 121 | "The overall condition (status) of the system represented by 122 | this MIB." 123 | ::= { cpqCrMibRev 3 } 124 | 125 | -- **************************************************************************** 126 | -- Clustered RAID Common Group 127 | -- ======================== 128 | -- 129 | -- The compaq enterprise (1.3.6.1.4.1.232) 130 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 131 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 132 | -- cpqCrInterface Group (1.3.6.1.4.1.232.141.2.1) 133 | -- cpqCrOsCommon Group (1.3.6.1.4.1.232.141.2.1.4) 134 | -- 135 | -- The cpqCrOsCommon group describes the interface to the Clustered RAID 136 | -- components. This information describes the interface modules 137 | -- and general OS interface architectural information. 138 | -- 139 | -- **************************************************************************** 140 | 141 | cpqCrOsCommonPollFreq OBJECT-TYPE 142 | SYNTAX INTEGER (0..65535) 143 | ACCESS read-write 144 | STATUS mandatory 145 | DESCRIPTION 146 | "The Insight Agent's polling frequency. 147 | 148 | The frequency, in seconds, at which the Insight Agent requests 149 | information from the device driver. A frequency of zero (0) 150 | indicates that the Insight Agent retrieves the information upon 151 | request of a management station, it does not poll the device 152 | driver at a specific interval. 153 | 154 | The polling frequency is set in a configuration file used by 155 | the agent." 156 | 157 | ::= { cpqCrOsCommon 1 } 158 | 159 | -- **************************************************************************** 160 | -- Clustered RAID Controller Group 161 | -- =============================== 162 | -- 163 | -- The compaq enterprise (1.3.6.1.4.1.232) 164 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 165 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 166 | -- cpqCrCntlr Group (1.3.6.1.4.1.232.141.2.2) 167 | -- cpqCrCntlrTable (1.3.6.1.4.1.232.141.2.2.1) 168 | -- 169 | -- The Cntlr group contains the configuration information 170 | -- of the Clustered RAID controllers 171 | -- 172 | -- **************************************************************************** 173 | 174 | cpqCrCntlrTable OBJECT-TYPE 175 | SYNTAX SEQUENCE OF CpqCrCntlrEntry 176 | ACCESS not-accessible 177 | STATUS mandatory 178 | DESCRIPTION 179 | "Clustered RAID Array Controller Table." 180 | ::= { cpqCrCntlr 1 } 181 | 182 | cpqCrCntlrEntry OBJECT-TYPE 183 | SYNTAX CpqCrCntlrEntry 184 | ACCESS not-accessible 185 | STATUS mandatory 186 | DESCRIPTION 187 | "Clustered RAID Array Controller Entry." 188 | INDEX { cpqCrCntlrIndex } 189 | ::= { cpqCrCntlrTable 1 } 190 | 191 | CpqCrCntlrEntry ::= SEQUENCE 192 | { 193 | cpqCrCntlrIndex INTEGER, 194 | cpqCrCntlrSerialNumber DisplayString, 195 | cpqCrCntlrFWRev DisplayString, 196 | cpqCrCntlrCondition INTEGER, 197 | cpqCrCntlrCurrentRole INTEGER, 198 | cpqCrCntlrDriveOwnership INTEGER, 199 | cpqCrCntlrCreateRate INTEGER, 200 | cpqCrCntlrRebuildRate INTEGER, 201 | cpqCrCntlrCacheSize INTEGER, 202 | cpqCrCntlrSimmSizeA INTEGER, 203 | cpqCrCntlrSimmSizeB INTEGER 204 | } 205 | 206 | cpqCrCntlrIndex OBJECT-TYPE 207 | SYNTAX INTEGER (0..255) 208 | ACCESS read-only 209 | STATUS mandatory 210 | DESCRIPTION 211 | "Clustered RAID Array Controller Index. 212 | 213 | This value is a logical number whose meaning is OS dependent. 214 | Each physical controller has one unique controller number 215 | associated with it." 216 | ::= { cpqCrCntlrEntry 1 } 217 | 218 | cpqCrCntlrSerialNumber OBJECT-TYPE 219 | SYNTAX DisplayString (SIZE (0..9)) 220 | ACCESS read-only 221 | STATUS mandatory 222 | DESCRIPTION 223 | "CR3500 Controller Serial Number." 224 | 225 | ::= { cpqCrCntlrEntry 2 } 226 | 227 | cpqCrCntlrFWRev OBJECT-TYPE 228 | SYNTAX DisplayString (SIZE (0..9)) 229 | ACCESS read-only 230 | STATUS mandatory 231 | DESCRIPTION 232 | "Clustered RAID Array Controller Firmware Revision. 233 | 234 | The firmware revision of the Clustered RAID Controller. 235 | This value can be used to help identify a particular revision 236 | of the controller." 237 | ::= { cpqCrCntlrEntry 3 } 238 | 239 | cpqCrCntlrCondition OBJECT-TYPE 240 | SYNTAX INTEGER 241 | { 242 | other(1), 243 | ok(2), 244 | degraded(3), 245 | failed(4) 246 | } 247 | ACCESS read-only 248 | STATUS mandatory 249 | DESCRIPTION 250 | "The condition of the device. This value represents the overall 251 | condition of this controller, and any associated logical drives, 252 | physical drives, and array accelerators." 253 | ::= { cpqCrCntlrEntry 4 } 254 | 255 | cpqCrCntlrCurrentRole OBJECT-TYPE 256 | SYNTAX INTEGER 257 | { 258 | other(1), 259 | notDuplexed(2), 260 | active(3), 261 | backup(4) 262 | } 263 | ACCESS read-only 264 | STATUS mandatory 265 | DESCRIPTION 266 | "Clustered RAID Array Controller Current Role. 267 | 268 | For duplexed array controllers, this is the controllers current 269 | role. The following values are valid: 270 | 271 | other (1) 272 | Indicates that the instrument agent does not recognize the 273 | role of the controller. You may need to upgrade the instrument 274 | agent. 275 | 276 | notDuplexed (2) 277 | This array controller is not duplexed. 278 | 279 | active (3) 280 | This duplexed array controller is the active controller. 281 | 282 | backup (4) 283 | This duplexed array controller is the backup controller." 284 | ::= { cpqCrCntlrEntry 8 } 285 | 286 | 287 | cpqCrCntlrDriveOwnership OBJECT-TYPE 288 | SYNTAX INTEGER 289 | { 290 | other(1), 291 | owner(2), 292 | notOwner(3) 293 | } 294 | ACCESS read-only 295 | STATUS mandatory 296 | DESCRIPTION 297 | "Clustered RAID Array Controller Drive Ownership. 298 | 299 | For duplexed controllers, indicates to which controller slot 300 | the shared devices are associated. 301 | 302 | The following values are valid: 303 | 304 | other (1) 305 | Indicates that the instrument agent does not recognize the 306 | status of the controller. You may need to upgrade the instrument 307 | agent. 308 | 309 | owner (2) 310 | All the logical, physical and spare drives are associated 311 | with this controller. 312 | 313 | notOwner (3) 314 | The logical, physical and spare drives are not associated 315 | with this controller." 316 | ::= { cpqCrCntlrEntry 9 } 317 | 318 | cpqCrCntlrRebuildRate OBJECT-TYPE 319 | SYNTAX INTEGER (1..100) 320 | ACCESS read-only 321 | STATUS mandatory 322 | DESCRIPTION 323 | "Clustered RAID Array Controller Rebuild Rate. 324 | 325 | Determines the rate at which disks are to be rebuilt if 326 | there is I/O activity. 327 | 328 | 1 = Minimum rate 329 | 100 = Maximum rate" 330 | ::= { cpqCrCntlrEntry 10 } 331 | 332 | cpqCrCntlrCreateRate OBJECT-TYPE 333 | SYNTAX INTEGER (1..100) 334 | ACCESS read-only 335 | STATUS mandatory 336 | DESCRIPTION 337 | "Clustered RAID Array Controller Create Rate. 338 | 339 | Determines the rate at which RAIDsets are to be created if 340 | there is I/O activity. 341 | 342 | 1 = Minimum rate 343 | 100 = maximum rate" 344 | ::= { cpqCrCntlrEntry 11 } 345 | 346 | cpqCrCntlrCacheSize OBJECT-TYPE 347 | SYNTAX INTEGER (0..512) 348 | ACCESS read-only 349 | STATUS mandatory 350 | DESCRIPTION 351 | "Clustered RAID Array Controller Cache Size. 352 | 353 | Size of the controller's cache in MB." 354 | ::= {cpqCrCntlrEntry 12 } 355 | 356 | cpqCrCntlrSimmSizeA OBJECT-TYPE 357 | SYNTAX INTEGER (0..128) 358 | ACCESS read-only 359 | STATUS mandatory 360 | DESCRIPTION 361 | "Clustered RAID Array Controller Memory Module Size. 362 | 363 | Size of the memory module in slot A in MB." 364 | ::= {cpqCrCntlrEntry 13 } 365 | 366 | cpqCrCntlrSimmSizeB OBJECT-TYPE 367 | SYNTAX INTEGER (0..128) 368 | ACCESS read-only 369 | STATUS mandatory 370 | DESCRIPTION 371 | "Clustered RAID Array Controller Memory Module Size. 372 | 373 | Size of the memory module in slot B in MB." 374 | ::= { cpqCrCntlrEntry 14 } 375 | 376 | 377 | -- **************************************************************************** 378 | -- Clustered RAID Logical Drive Table (RAIDsets) 379 | -- ============================================= 380 | -- 381 | -- The compaq enterprise (1.3.6.1.4.1.232) 382 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 383 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 384 | -- cpqCrLogDrv Group (1.3.6.1.4.1.232.141.2.3) 385 | -- cpqCrLogDrvTable (1.3.6.1.4.1.232.141.2.3.1) 386 | -- 387 | -- The cpqCrLogDrv group contains configuration and statistical 388 | -- information about the RAIDsets associated with Clustered RAID 389 | -- controllers. 390 | -- 391 | -- **************************************************************************** 392 | 393 | cpqCrLogDrvTable OBJECT-TYPE 394 | SYNTAX SEQUENCE OF CpqCrLogDrvEntry 395 | ACCESS not-accessible 396 | STATUS mandatory 397 | DESCRIPTION 398 | "Clustered RAID RAIDset Table. 399 | 400 | A table of RAIDset entries." 401 | ::= { cpqCrLogDrv 1 } 402 | 403 | cpqCrLogDrvEntry OBJECT-TYPE 404 | SYNTAX CpqCrLogDrvEntry 405 | ACCESS not-accessible 406 | STATUS mandatory 407 | DESCRIPTION 408 | "Clustered RAID RAIDset Entry. 409 | 410 | A RAIDset entry." 411 | INDEX { cpqCrLogDrvCntlrIndex, cpqCrLogDrvIndex } 412 | ::= { cpqCrLogDrvTable 1 } 413 | 414 | CpqCrLogDrvEntry ::= SEQUENCE 415 | { 416 | cpqCrLogDrvCntlrIndex INTEGER, 417 | cpqCrLogDrvIndex INTEGER, 418 | cpqCrLogDrvRAIDLevel INTEGER, 419 | cpqCrLogDrvStatus INTEGER, 420 | cpqCrLogDrvRebuildPercentage INTEGER, 421 | cpqCrLogDrvAvailSpares OCTET STRING, 422 | cpqCrLogDrvSize INTEGER, 423 | cpqCrLogDrvPhyDrvIDs OCTET STRING, 424 | cpqCrLogDrvCondition INTEGER, 425 | cpqCrLogDrvPartitionIDs OCTET STRING 426 | } 427 | 428 | cpqCrLogDrvCntlrIndex OBJECT-TYPE 429 | SYNTAX INTEGER (0..255) 430 | ACCESS read-only 431 | STATUS mandatory 432 | DESCRIPTION 433 | "Clustered RAID RAIDset Controller Index. 434 | 435 | This maps the RAIDsets into their respective controllers. 436 | Controller index 'i' under the controller group owns the 437 | associated drives in the RAIDset which use that index." 438 | ::= { cpqCrLogDrvEntry 1 } 439 | 440 | cpqCrLogDrvIndex OBJECT-TYPE 441 | SYNTAX INTEGER (0..255) 442 | ACCESS read-only 443 | STATUS mandatory 444 | DESCRIPTION 445 | "Clustered RAID RAIDset Index. 446 | 447 | This logical drive number keeps track of multiple instances of 448 | logical drives which are on the same controller. For each 449 | controller index value, the logical drive index starts at 1 and 450 | increments for each logical drive." 451 | ::= { cpqCrLogDrvEntry 2 } 452 | 453 | cpqCrLogDrvRAIDLevel OBJECT-TYPE 454 | SYNTAX INTEGER 455 | { 456 | other(1), 457 | jbod(2), 458 | raid0(3), 459 | raid1(4), 460 | raid0plus1(5), 461 | raid4(6), 462 | raid5(7) 463 | } 464 | ACCESS read-only 465 | STATUS mandatory 466 | DESCRIPTION 467 | "RAID Level. 468 | 469 | This shows the RAID level of the RAIDset. 470 | To change the RAID level, run the CL1850 Array 471 | Configuration Utility. 472 | 473 | The following values are valid for the RAIDset RAID 474 | Level: 475 | 476 | JBOD (2) 477 | Just a Bunch of Drives. Fault tolerance is not enabled. This 478 | RAIDset is made up of one device. Does not provide extended data 479 | redundancy, availability or protection, and does not use striping 480 | for performance enhancements. 481 | Good for applications requiring high device capacity. Requires one 482 | and only one device. 483 | 484 | RAID0 (3) 485 | A RAIDset using device striping and write-back caching. 486 | Data is spread across many devices, offering faster read/write 487 | performance than a single device. Does not provide extended data 488 | redundancy, availability or protection. Good for applications with 489 | large files needing high I/O performance. Requires a minimum of 490 | two devices. 491 | 492 | RAID1 (4) 493 | A RAIDset using device mirroring. Any time data is written to 494 | a device, a duplicate write is also made to a second device. Reading 495 | from multiple devices is usually faster than reading from a single 496 | device. Provides extended data redundancy, availability and 497 | protection. Good for read-intensive applications needing high 498 | availability. Requires a minimum of two devices. 499 | 500 | RAID0PLUS1 (5) 501 | A RAIDset where data is striped across devices and duplicated 502 | on an equivalent number of devies. Provides extended data 503 | redundancy, availability and protection. Good for applications 504 | requiring high availability, high performance and capacity. 505 | Requires an even number of devices, and a minimum of four devices. 506 | 507 | RAID4 (6) 508 | A RAIDset using device striping, with one device assigned for 509 | parity. Provides extended data redundancy, availability and 510 | protection. Good for applications such as graphics and imaging that 511 | call for writing huge, sequential blocks of data. Requires a minimum 512 | of three devices. 513 | 514 | RAID5(7) 515 | A RAIDset using device striping, with parity distributed across 516 | devices. Provides extended data redundancy, availability and 517 | protection. Good for transaction processing, applications requiring 518 | many, small I/O operations scattered randomly and widely across the 519 | devices. Requires a minimum of three devices." 520 | 521 | ::= { cpqCrLogDrvEntry 3 } 522 | 523 | cpqCrLogDrvStatus OBJECT-TYPE 524 | SYNTAX INTEGER 525 | { 526 | other(1), 527 | good(2), 528 | reduced(3), 529 | failed(4), 530 | reconstructing(5), 531 | initializing(6) 532 | } 533 | ACCESS read-only 534 | STATUS mandatory 535 | DESCRIPTION 536 | "RAIDset Status. 537 | 538 | The RAIDset can be in one of the following states: 539 | 540 | Good (2) 541 | Indicates that the RAIDset is fully operational. 542 | 543 | Reduced (3) 544 | Indicates that the RAIDset is operating in a degraded or 545 | reduced state. One or more of the physical disks which make 546 | up the RAIDset are either missing or failed, but the 547 | RAIDset can continue to operate without data loss. 548 | 549 | Failed (4) 550 | Indicates that the RAIDset is not operational. 551 | 552 | Reconstructing (5) 553 | Indicates that the RAIDset is regenerating a failed 554 | physical drive's data onto a replacement drive that is part 555 | of the RAIDset. 556 | 557 | All user data remains available during the reconstruction 558 | process, but some performance reduction may occur when a 559 | request requires access to the device being reconstructed. 560 | 561 | Initializing (6) 562 | Indicates that the controller is writing its file structure 563 | onto the RAIDset's member devices." 564 | 565 | ::= { cpqCrLogDrvEntry 4 } 566 | 567 | 568 | cpqCrLogDrvRebuildPercentage OBJECT-TYPE 569 | SYNTAX INTEGER (0..100) 570 | ACCESS read-only 571 | STATUS mandatory 572 | DESCRIPTION 573 | "RAIDset Rebuild Percentage Complete. 574 | 575 | After a failed physical drive has been replaced, the physical 576 | drive must have its data rebuilt. This value shows how far 577 | the rebuild process has progressed as a percentage. 578 | When the value reaches 100, the rebuilding process is complete. 579 | The drive array continues to operate in reduced mode while a 580 | drive is rebuilding. 581 | 582 | This value is only valid if the RAIDset Status is 583 | reconstructing (6)." 584 | 585 | ::= { cpqCrLogDrvEntry 5 } 586 | 587 | cpqCrLogDrvAvailSpares OBJECT-TYPE 588 | SYNTAX OCTET STRING (SIZE (0..255)) 589 | ACCESS read-only 590 | STATUS mandatory 591 | DESCRIPTION 592 | "RAIDset Available Spares. 593 | 594 | This indicates if this RAIDset has one or more spares 595 | designated for it that are not currently in use by another drive. 596 | Each octet present will be a physical drive ID that is an 597 | available spare for this logical drive. These are the same ID's 598 | which can be used as indexes into the physical drive table. 599 | An octet string of length zero indicates that there are no 600 | available spares for this logical drive." 601 | ::= { cpqCrLogDrvEntry 7 } 602 | 603 | cpqCrLogDrvSize OBJECT-TYPE 604 | SYNTAX INTEGER (0..2147483647) 605 | ACCESS read-only 606 | STATUS mandatory 607 | DESCRIPTION 608 | "RAIDset Size. 609 | 610 | This is the size of the RAIDset in megabytes. This value 611 | is calculated using the value 1,048,576 (2^20) as a megabyte. 612 | Drive manufacturers sometimes use the number 1,000,000 as a 613 | megabyte when giving drive capacities so this value may 614 | differ from the advertised size of a drive." 615 | ::= { cpqCrLogDrvEntry 8 } 616 | 617 | cpqCrLogDrvPhyDrvIDs OBJECT-TYPE 618 | SYNTAX OCTET STRING (SIZE (0..255)) 619 | ACCESS read-only 620 | STATUS mandatory 621 | DESCRIPTION 622 | "RAIDset Physical Drive IDs. 623 | 624 | This lists the physical drive IDs which are associated with this 625 | RAIDset. These are the same IDs which can be used as 626 | indices into the physical drive table. Each byte of the string 627 | is an index." 628 | ::= { cpqCrLogDrvEntry 9 } 629 | 630 | cpqCrLogDrvCondition OBJECT-TYPE 631 | SYNTAX INTEGER 632 | { 633 | other(1), 634 | ok(2), 635 | degraded(3), 636 | failed(4) 637 | } 638 | ACCESS read-only 639 | STATUS mandatory 640 | DESCRIPTION 641 | "RAIDset condition. 642 | 643 | This value represents the overall condition of this RAIDset 644 | and any associated physical drives." 645 | ::= { cpqCrLogDrvEntry 10 } 646 | 647 | cpqCrLogDrvPartitionIDs OBJECT-TYPE 648 | SYNTAX OCTET STRING (SIZE (0..255)) 649 | ACCESS read-only 650 | STATUS mandatory 651 | DESCRIPTION 652 | "RAIDset Logical Drive IDs. 653 | 654 | This lists the logical drive IDs which are associated with this 655 | RAIDset. These are the same IDs which can be used as 656 | indices into the logical drive table. Each byte of the string 657 | is an index." 658 | ::= { cpqCrLogDrvEntry 11 } 659 | 660 | -- **************************************************************************** 661 | -- Clustered RAID Spare Drive Table 662 | -- ================================ 663 | -- 664 | -- The compaq enterprise (1.3.6.1.4.1.232) 665 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 666 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 667 | -- cpqCrSpareDrv Group (1.3.6.1.4.1.232.141.2.4) 668 | -- cpqCrSpareTable (1.3.6.1.4.1.232.141.2.4.1) 669 | -- 670 | -- The cpqCrSpareDrv group contains configuration and statistical 671 | -- information about the spare drives associated with Clustered RAID 672 | -- controllers. 673 | -- 674 | -- **************************************************************************** 675 | 676 | 677 | cpqCrSpareTable OBJECT-TYPE 678 | SYNTAX SEQUENCE OF CpqCrSpareEntry 679 | ACCESS not-accessible 680 | STATUS mandatory 681 | DESCRIPTION 682 | "Clustered RAID Spare Table. 683 | 684 | A table of spare entries." 685 | ::= { cpqCrSpareDrv 1 } 686 | 687 | cpqCrSpareEntry OBJECT-TYPE 688 | SYNTAX CpqCrSpareEntry 689 | ACCESS not-accessible 690 | STATUS mandatory 691 | DESCRIPTION 692 | "Clustered RAID Spare Entry. 693 | 694 | An entry in the spare table." 695 | INDEX { cpqCrSpareCntlrIndex, cpqCrSparePhyDrvIndex } 696 | ::= { cpqCrSpareTable 1 } 697 | 698 | CpqCrSpareEntry ::= SEQUENCE 699 | { 700 | cpqCrSpareCntlrIndex INTEGER, 701 | cpqCrSparePhyDrvIndex INTEGER, 702 | cpqCrSpareStatus INTEGER, 703 | cpqCrSpareCondition INTEGER, 704 | cpqCrSpareScsiID INTEGER 705 | } 706 | 707 | cpqCrSpareCntlrIndex OBJECT-TYPE 708 | SYNTAX INTEGER (0..255) 709 | ACCESS read-only 710 | STATUS mandatory 711 | DESCRIPTION 712 | "Spare Controller Index. 713 | 714 | This index maps the spare drive back to the controller to which 715 | it is attached. The value of this index is the same as the one 716 | used under the controller group." 717 | ::= { cpqCrSpareEntry 1 } 718 | 719 | cpqCrSparePhyDrvIndex OBJECT-TYPE 720 | SYNTAX INTEGER (0..255) 721 | ACCESS read-only 722 | STATUS mandatory 723 | DESCRIPTION 724 | "Physical Drive Index. 725 | 726 | This index maps the spare to the physical drive it represents. 727 | The value of this index is the same as the one used with the 728 | physical drive table." 729 | ::= { cpqCrSpareEntry 2 } 730 | 731 | cpqCrSpareStatus OBJECT-TYPE 732 | SYNTAX INTEGER 733 | { 734 | other(1), 735 | empty(2), 736 | offline(3), 737 | online(4), 738 | hotSpare(5), 739 | warmSpare(6), 740 | creating(7), 741 | rebuilding(8), 742 | addingSpare(9), 743 | formatting(10) 744 | } 745 | ACCESS read-only 746 | STATUS mandatory 747 | DESCRIPTION 748 | "Spare Status. 749 | 750 | This shows the status of the on-line spare drive. 751 | 752 | The following values are valid for the spare status: 753 | 754 | Hot Spare(5) 755 | The drive attached to this channel is kept spinning 756 | whenever the controller is powered up and it is to 757 | be automatically brought online to replace a failed drive. 758 | 759 | Warm Spare(6) 760 | The drive attached to this channel is not spun up 761 | until a disk in the array fails and it is automatically 762 | brought online to replace a failed drive. 763 | 764 | Adding Spare(9) 765 | The drive is in the process of becoming a spare drive." 766 | 767 | ::= { cpqCrSpareEntry 3 } 768 | 769 | cpqCrSpareCondition OBJECT-TYPE 770 | SYNTAX INTEGER 771 | { 772 | other(1), 773 | ok(2), 774 | degraded(3), 775 | failed(4) 776 | } 777 | ACCESS read-only 778 | STATUS mandatory 779 | DESCRIPTION 780 | "Spare Drive condition. 781 | 782 | This value represents the overall condition of this spare drive 783 | and any associated physical drives." 784 | ::= { cpqCrSpareEntry 4 } 785 | 786 | cpqCrSpareScsiID OBJECT-TYPE 787 | SYNTAX INTEGER (0..255) 788 | ACCESS read-only 789 | STATUS mandatory 790 | DESCRIPTION 791 | "SCSI ID. 792 | 793 | This value represents the SCSI identifier of this spare drive." 794 | 795 | ::= { cpqCrSpareEntry 5 } 796 | 797 | 798 | -- **************************************************************************** 799 | -- Clustered RAID Physical Drive Group 800 | -- =================================== 801 | -- 802 | -- The compaq enterprise (1.3.6.1.4.1.232) 803 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 804 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 805 | -- cpqCrPhyDrv Group (1.3.6.1.4.1.232.141.2.5) 806 | -- cpqCrPhyDrvTable (1.3.6.1.4.1.232.141.2.5.1) 807 | -- 808 | -- The cpqCrPhyDrv group contains configuration and statistical 809 | -- information about the physical drives associated with Drive 810 | -- Array controllers. 811 | -- 812 | -- **************************************************************************** 813 | 814 | 815 | cpqCrPhyDrvTable OBJECT-TYPE 816 | SYNTAX SEQUENCE OF CpqCrPhyDrvEntry 817 | ACCESS not-accessible 818 | STATUS mandatory 819 | DESCRIPTION 820 | "Clustered RAID Physical Drive Table. 821 | 822 | A table of physical drive entries." 823 | ::= { cpqCrPhyDrv 1 } 824 | 825 | cpqCrPhyDrvEntry OBJECT-TYPE 826 | SYNTAX CpqCrPhyDrvEntry 827 | ACCESS not-accessible 828 | STATUS mandatory 829 | DESCRIPTION 830 | "Clustered RAID Physical Drive Entry. 831 | 832 | A physical drive entry." 833 | INDEX { cpqCrPhyDrvCntlrIndex, cpqCrPhyDrvIndex } 834 | ::= { cpqCrPhyDrvTable 1 } 835 | 836 | CpqCrPhyDrvEntry ::= SEQUENCE 837 | { 838 | cpqCrPhyDrvCntlrIndex INTEGER, 839 | cpqCrPhyDrvIndex INTEGER, 840 | cpqCrPhyDrvVendor DisplayString, 841 | cpqCrPhyDrvModel DisplayString, 842 | cpqCrPhyDrvRevision DisplayString, 843 | cpqCrPhyDrvStatus INTEGER, 844 | cpqCrPhyDrvSize INTEGER, 845 | cpqCrPhyDrvCondition INTEGER, 846 | cpqCrPhyDrvScsiID INTEGER 847 | } 848 | 849 | cpqCrPhyDrvCntlrIndex OBJECT-TYPE 850 | SYNTAX INTEGER (0..255) 851 | ACCESS read-only 852 | STATUS mandatory 853 | DESCRIPTION 854 | "Clustered RAID Physical Drive Controller Index. 855 | 856 | This index maps the physical drive back to the controller to 857 | which it is attached. The value of this index is the same as 858 | the one used under the controller group." 859 | ::= { cpqCrPhyDrvEntry 1 } 860 | 861 | cpqCrPhyDrvIndex OBJECT-TYPE 862 | SYNTAX INTEGER (0..255) 863 | ACCESS read-only 864 | STATUS mandatory 865 | DESCRIPTION 866 | "Clustered RAID Physical Drive Index. 867 | 868 | This index is used for selecting the physical drive table entry. 869 | This number, along with the cpqCrPhyDrvCntlrIndex uniquely 870 | identify a specific physical drive." 871 | ::= { cpqCrPhyDrvEntry 2 } 872 | 873 | cpqCrPhyDrvVendor OBJECT-TYPE 874 | SYNTAX DisplayString (SIZE (0..8)) 875 | ACCESS read-only 876 | STATUS mandatory 877 | DESCRIPTION 878 | "Physical Drive Vendor. 879 | 880 | This is the name of the manufacturer of the physical drive. 881 | This value is based upon the vendor name as returned by the 882 | SCSI inquiry command but may have been modified due to space 883 | limitations. This can be used for identification purposes." 884 | ::= { cpqCrPhyDrvEntry 3 } 885 | 886 | cpqCrPhyDrvModel OBJECT-TYPE 887 | SYNTAX DisplayString (SIZE (0..16)) 888 | ACCESS read-only 889 | STATUS mandatory 890 | DESCRIPTION 891 | "Physical Drive Model. 892 | 893 | This is a text description of the physical drive. The text that 894 | appears depends upon who manufactured the drive and the drive 895 | type. 896 | 897 | For example, you might see: CP3201. 898 | 899 | If a drive fails, note the model to identify the type of drive 900 | necessary for replacement." 901 | 902 | ::= { cpqCrPhyDrvEntry 4 } 903 | 904 | cpqCrPhyDrvRevision OBJECT-TYPE 905 | SYNTAX DisplayString (SIZE (0..4)) 906 | ACCESS read-only 907 | STATUS mandatory 908 | DESCRIPTION 909 | "Physical Drive Revision. 910 | 911 | This shows the physical drive revision number." 912 | 913 | ::= { cpqCrPhyDrvEntry 5 } 914 | 915 | cpqCrPhyDrvStatus OBJECT-TYPE 916 | SYNTAX INTEGER 917 | { 918 | other(1), 919 | empty(2), 920 | offline(3), 921 | online(4), 922 | hotSpare(5), 923 | warmSpare(6), 924 | creating(7), 925 | rebuilding(8), 926 | addingSpare(9), 927 | formatting(10) 928 | } 929 | ACCESS read-only 930 | STATUS mandatory 931 | DESCRIPTION 932 | "Physical Drive Status. 933 | 934 | This shows the status of the physical drive. 935 | 936 | The following values are valid for the physical drive status: 937 | 938 | Offline (3) 939 | The drive attached to this channel is not a member of the 940 | RAID set. 941 | 942 | Online (4) 943 | The drive attached to this channel is a fully functional 944 | member of this RAID set. 945 | 946 | Creating (5) 947 | The drive is currently being created as part of a RAID set. 948 | 949 | Rebuilding (6) 950 | The drive is currently being rebuilt. 951 | 952 | Formatting (8) 953 | The drive is currently being formatted" 954 | 955 | ::= { cpqCrPhyDrvEntry 6 } 956 | 957 | cpqCrPhyDrvSize OBJECT-TYPE 958 | SYNTAX INTEGER 959 | ACCESS read-only 960 | STATUS mandatory 961 | DESCRIPTION 962 | "Physical Drive Size in MB. 963 | 964 | This is the size of the physical drive in megabytes. This value 965 | is calculated using the value 1,048,576 (2^20) as a megabyte. 966 | Drive manufacturers sometimes use the number 1,000,000 as a 967 | megabyte when giving drive capacities so this value may differ 968 | from the advertised size of a drive. This field is only 969 | applicable for controllers which support SCSI drives, and 970 | therefore is not supported by the IDA or IDA-2 controllers. 971 | The field will contain 0xFFFFFFFF if the drive capacity cannot 972 | be calculated or if the controller does not support SCSI drives." 973 | ::= { cpqCrPhyDrvEntry 7 } 974 | 975 | cpqCrPhyDrvCondition OBJECT-TYPE 976 | SYNTAX INTEGER 977 | { 978 | other(1), 979 | ok(2), 980 | degraded(3), 981 | failed(4) 982 | } 983 | ACCESS read-only 984 | STATUS mandatory 985 | DESCRIPTION 986 | "Physical Drive condition. 987 | 988 | This value represents the overall condition of this physical drive." 989 | ::= { cpqCrPhyDrvEntry 8 } 990 | 991 | cpqCrPhyDrvScsiID OBJECT-TYPE 992 | SYNTAX INTEGER (0..255) 993 | ACCESS read-only 994 | STATUS mandatory 995 | DESCRIPTION 996 | "SCSI ID. 997 | 998 | This value represents the SCSI identifier of this physical 999 | drive." 1000 | ::= { cpqCrPhyDrvEntry 9 } 1001 | 1002 | -- **************************************************************************** 1003 | -- Clustered RAID EMU (primary enclosure) Objects 1004 | -- ============================================== 1005 | -- 1006 | -- The compaq enterprise (1.3.6.1.4.1.232) 1007 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1008 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 1009 | -- cpqCrEMU Group (1.3.6.1.4.1.232.141.2.7) 1010 | -- 1011 | -- **************************************************************************** 1012 | 1013 | cpqCrEMUBoardTemperatureStatus OBJECT-TYPE 1014 | SYNTAX INTEGER 1015 | { 1016 | other (1), 1017 | emuBoardTempNotInstalled (2), 1018 | emuBoardTempNormal (3), 1019 | emuBoardTempBelowNormal (4), 1020 | emuBoardTempAboveNormal (5), 1021 | emuBoardTempFarBelowNormal (6), 1022 | emuBoardTempFarAboveNormal (7), 1023 | emuBoardTempBackToNormal (8) 1024 | } 1025 | ACCESS read-only 1026 | STATUS deprecated 1027 | DESCRIPTION 1028 | "Environmental Monitoring Unit (EMU) Board Temperature status. 1029 | 1030 | The System Board Temperature status as determined by the EMU is: 1031 | 1032 | Not Installed (2) 1033 | The board temperature can not be detected in the unit. 1034 | 1035 | Normal (3) 1036 | The board temperature detected by the EMU is normal. 1037 | 1038 | Below Normal (4) 1039 | The board temperature detected by the EMU is below normal. 1040 | 1041 | Above Normal (5) 1042 | The board temperature detected by the EMU is above normal. 1043 | 1044 | Far Below Normal (6) 1045 | The board temperature detected by the EMU is far below normal. 1046 | 1047 | Far Above Normal (7) 1048 | The board temperature detected by the EMU is far above normal. 1049 | 1050 | Back To Normal (8) 1051 | The board temperature detected by the EMU has returned to normal." 1052 | 1053 | ::= { cpqCrEMU 1 } 1054 | 1055 | cpqCrEMUEnclosureTemperatureStatus OBJECT-TYPE 1056 | SYNTAX INTEGER 1057 | { 1058 | other (1), 1059 | emuEnclosureTempNotInstalled (2), 1060 | emuEnclosureTempNormal (3), 1061 | emuEnclosureTempBelowNormal (4), 1062 | emuEnclosureTempAboveNormal (5), 1063 | emuEnclosureTempFarBelowNormal (6), 1064 | emuEnclosureTempFarAboveNormal (7), 1065 | emuEnclosureTempBackToNormal (8) 1066 | } 1067 | ACCESS read-only 1068 | STATUS deprecated 1069 | DESCRIPTION 1070 | "Environmental Monitoring Unit (EMU) Enclosure Temperature status. 1071 | 1072 | The Enclosure Housing Temperature status as determined by the EMU is: 1073 | 1074 | Not Installed (2) 1075 | The enclosure temperature can not be detected in the unit. 1076 | 1077 | Normal (3) 1078 | The enclosure temperature detected by the EMU is normal. 1079 | 1080 | Below Normal (4) 1081 | The enclosure temperature detected by the EMU is below normal. 1082 | 1083 | Above Normal (5) 1084 | The enclosure temperature detected by the EMU is above normal. 1085 | 1086 | Far Below Normal (6) 1087 | The enclosure temperature detected by the EMU is far below normal. 1088 | 1089 | Far Above Normal (7) 1090 | The enclosure temperature detected by the EMU is far above normal. 1091 | 1092 | Back To Normal (8) 1093 | The enclosure temperature detected by the EMU has returned to normal." 1094 | 1095 | ::= { cpqCrEMU 2 } 1096 | 1097 | cpqCrEMUBoardTemperatureLevel OBJECT-TYPE 1098 | SYNTAX INTEGER (0..255) 1099 | ACCESS read-only 1100 | STATUS deprecated 1101 | DESCRIPTION 1102 | "Environmental Monitoring Unit (EMU) Board Temperature. 1103 | 1104 | Indicates the System Board temperature in degrees Fahrenheit." 1105 | 1106 | ::= { cpqCrEMU 3 } 1107 | 1108 | cpqCrEMUEnclosureTemperatureLevel OBJECT-TYPE 1109 | SYNTAX INTEGER (0..255) 1110 | ACCESS read-only 1111 | STATUS deprecated 1112 | DESCRIPTION 1113 | "Environmental Monitoring Unit (EMU) Enclosure Temperature. 1114 | 1115 | Indicates the Enclosure Housing temperature in degrees Fahrenheit." 1116 | 1117 | ::= { cpqCrEMU 4 } 1118 | 1119 | 1120 | cpqCrEMUCondition OBJECT-TYPE 1121 | SYNTAX INTEGER 1122 | { 1123 | other(1), 1124 | ok(2), 1125 | degraded(3), 1126 | failed(4) 1127 | } 1128 | ACCESS read-only 1129 | STATUS mandatory 1130 | DESCRIPTION 1131 | "Primary enclosure condition. 1132 | 1133 | This value represents the overall condition of the primary 1134 | enclosure." 1135 | 1136 | ::= { cpqCrEMU 5 } 1137 | 1138 | cpqCrEMUFanStatus OBJECT-TYPE 1139 | SYNTAX INTEGER 1140 | { 1141 | other(1), 1142 | emuFanOK(2), 1143 | emuFanCritical(3), 1144 | emuFanUnknown(4) 1145 | } 1146 | ACCESS read-only 1147 | STATUS mandatory 1148 | DESCRIPTION 1149 | "Primary enclosure fan status. 1150 | 1151 | The primary enclosure fan status is: 1152 | 1153 | OK (2) 1154 | Status is normal. 1155 | 1156 | Critical (3) 1157 | Fan has failed. 1158 | 1159 | Unknown (4) 1160 | Information unavailable." 1161 | ::= { cpqCrEMU 6 } 1162 | 1163 | cpqCrEMUFanCondition OBJECT-TYPE 1164 | SYNTAX INTEGER 1165 | { 1166 | other(1), 1167 | ok(2), 1168 | degraded(3), 1169 | failed(4) 1170 | } 1171 | ACCESS read-only 1172 | STATUS mandatory 1173 | DESCRIPTION 1174 | "Primary enclosure fan condition. 1175 | 1176 | This value represents the overall condition of the fan 1177 | in the primary enclosure." 1178 | ::= { cpqCrEMU 7 } 1179 | 1180 | cpqCrEMUPowerSupplyStatus OBJECT-TYPE 1181 | SYNTAX INTEGER 1182 | { 1183 | other(1), 1184 | emuPwrSupplyOK(2), 1185 | emuPwrSupplyCritical(3), 1186 | emuPwrSupplyNotInstalled(4), 1187 | emuPwrSupplyUnknown(5) 1188 | } 1189 | ACCESS read-only 1190 | STATUS mandatory 1191 | DESCRIPTION 1192 | "Primary enclosure power supply status. 1193 | 1194 | The primary enclosure power supply status is: 1195 | 1196 | OK (2) 1197 | Status is normal. 1198 | 1199 | Critical (3) 1200 | Power supply is installed and marked as failed. 1201 | 1202 | Not Installed (4) 1203 | One of the redundant power supplies has been removed. 1204 | 1205 | Unknown (5) 1206 | Information unavailable." 1207 | ::= { cpqCrEMU 8 } 1208 | 1209 | cpqCrEMUPowerSupplyCondition OBJECT-TYPE 1210 | SYNTAX INTEGER 1211 | { 1212 | other(1), 1213 | ok(2), 1214 | degraded(3), 1215 | failed(4) 1216 | } 1217 | ACCESS read-only 1218 | STATUS mandatory 1219 | DESCRIPTION 1220 | "Primary enclosure power supply condition. 1221 | 1222 | This value represents the overall condition of the power 1223 | supply in the primary enclosure." 1224 | ::= { cpqCrEMU 9 } 1225 | 1226 | cpqCrEMUTemperatureStatus OBJECT-TYPE 1227 | SYNTAX INTEGER 1228 | { 1229 | other (1), 1230 | emuTempOK (2), 1231 | emuTempCritical (3), 1232 | emuTempNonCritical (4), 1233 | emuTempUnknown (5) 1234 | } 1235 | 1236 | ACCESS read-only 1237 | STATUS mandatory 1238 | DESCRIPTION 1239 | "Primary enclosure temperature status. 1240 | 1241 | The primary enclosure temperature status is: 1242 | 1243 | OK (2) 1244 | Status is normal. 1245 | 1246 | Critical (3) 1247 | Controller temperature sensor has detected a critical 1248 | temperature condition in the primary enclosure. 1249 | 1250 | Non-critical (4) 1251 | Controller temperature sensor has detected an abnormal 1252 | temperature condition in the primary enclosure. 1253 | 1254 | Unknown (5) 1255 | Information unavailable." 1256 | ::= { cpqCrEMU 10 } 1257 | 1258 | cpqCrEMUTemperatureLevel OBJECT-TYPE 1259 | SYNTAX INTEGER (0..255) 1260 | ACCESS read-only 1261 | STATUS mandatory 1262 | DESCRIPTION 1263 | "Primary enclosure temperature. 1264 | 1265 | Indicates the temperature within the primary enclosure in degrees 1266 | Celsius." 1267 | ::= { cpqCrEMU 11 } 1268 | 1269 | cpqCrEMUTemperatureCondition OBJECT-TYPE 1270 | SYNTAX INTEGER 1271 | { 1272 | other(1), 1273 | ok(2), 1274 | degraded(3), 1275 | failed(4) 1276 | } 1277 | ACCESS read-only 1278 | STATUS mandatory 1279 | DESCRIPTION 1280 | "Primary enclosure temperature condition. 1281 | 1282 | This value represents the overall condition of the 1283 | temperature in the primary enclosure." 1284 | ::= { cpqCrEMU 12 } 1285 | 1286 | 1287 | -- **************************************************************************** 1288 | -- Clustered RAID Expansion Cabinet (Starlight shelf) Objects 1289 | -- ========================================================== 1290 | -- 1291 | -- The compaq enterprise (1.3.6.1.4.1.232) 1292 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1293 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 1294 | -- cpqCrExpCab Group (1.3.6.1.4.1.232.141.2.8) 1295 | -- 1296 | -- **************************************************************************** 1297 | 1298 | cpqCrExpCabPowerSupplyStatus OBJECT-TYPE 1299 | SYNTAX INTEGER 1300 | { 1301 | other(1), 1302 | expCabPwrSupplyOK(2), 1303 | expCabPwrSupplyNonCritical(3), 1304 | expCabPwrSupplyUnknown(5) 1305 | } 1306 | ACCESS read-only 1307 | STATUS mandatory 1308 | DESCRIPTION 1309 | "Expansion Cabinet power supply status. 1310 | 1311 | The expansion cabinet power supply status is: 1312 | 1313 | OK (2) 1314 | Status is normal. Either redundant power supplies are 1315 | installed and reporting no error or a single power 1316 | supply is installed. 1317 | 1318 | Non-Critical (3) 1319 | Redundant power supplies are installed and reporting 1320 | a fault. 1321 | 1322 | Unknown (5) 1323 | Information unavailable." 1324 | ::= { cpqCrExpCab 1 } 1325 | 1326 | cpqCrExpCabFanStatus OBJECT-TYPE 1327 | SYNTAX INTEGER 1328 | { 1329 | other(1), 1330 | expCabFanOK(2), 1331 | expCabFanNonCritical(4), 1332 | expCabFanNotInstalled(5), 1333 | expCabFanUnknown(6) 1334 | } 1335 | ACCESS read-only 1336 | STATUS mandatory 1337 | DESCRIPTION 1338 | "Expansion Cabinet fan status. 1339 | 1340 | The expansion cabinet fan status is: 1341 | 1342 | OK (2) 1343 | Status is normal. One or more fans is installed and no 1344 | error is reported. 1345 | 1346 | Non-Critical (4) 1347 | Fan degraded condition. One or more fans are reporting an 1348 | error or only one fan is installed. 1349 | 1350 | Not Installed (5) 1351 | Fan valid bit not set. 1352 | 1353 | Unknown (6) 1354 | Information unavailable." 1355 | ::= { cpqCrExpCab 2 } 1356 | 1357 | cpqCrExpCabTemperatureStatus OBJECT-TYPE 1358 | SYNTAX INTEGER 1359 | { 1360 | other(1), 1361 | expCabTempOK(2), 1362 | expCabTempCritical(3), 1363 | expCabTempNonCritical(4), 1364 | expCabTempNotInstalled(5), 1365 | expCabTempUnknown(6) 1366 | } 1367 | ACCESS read-only 1368 | STATUS mandatory 1369 | DESCRIPTION 1370 | "Expansion Cabinet temperature status. 1371 | 1372 | The expansion cabinet temperature status is: 1373 | 1374 | OK (2) 1375 | Status is normal. 1376 | 1377 | Critical (3) 1378 | Critical temperature condition reported. 1379 | 1380 | Non-Critical (4) 1381 | Warning temperature condition reported. 1382 | 1383 | Not Installed (5) 1384 | Temperature valid bit not set. 1385 | 1386 | Unknown (6) 1387 | Information unavailable." 1388 | ::= { cpqCrExpCab 3 } 1389 | 1390 | cpqCrExpCabCondition OBJECT-TYPE 1391 | SYNTAX INTEGER 1392 | { 1393 | other(1), 1394 | ok(2), 1395 | degraded(3), 1396 | failed(4) 1397 | } 1398 | ACCESS read-only 1399 | STATUS mandatory 1400 | DESCRIPTION 1401 | "Expansion Cabinet condition. 1402 | 1403 | This value represents the overall condition of the 1404 | expansion cabinet." 1405 | ::= { cpqCrExpCab 6 } 1406 | 1407 | cpqCrExpCabPowerSupplyCondition OBJECT-TYPE 1408 | SYNTAX INTEGER 1409 | { 1410 | other(1), 1411 | ok(2), 1412 | degraded(3), 1413 | failed(4) 1414 | } 1415 | ACCESS read-only 1416 | STATUS mandatory 1417 | DESCRIPTION 1418 | "Expansion Cabinet power supply condition. 1419 | 1420 | This value represents the overall condition of the 1421 | power supply in the expansion cabinet." 1422 | ::= { cpqCrExpCab 7 } 1423 | 1424 | cpqCrExpCabFanCondition OBJECT-TYPE 1425 | SYNTAX INTEGER 1426 | { 1427 | other(1), 1428 | ok(2), 1429 | degraded(3), 1430 | failed(4) 1431 | } 1432 | ACCESS read-only 1433 | STATUS mandatory 1434 | DESCRIPTION 1435 | "Expansion Cabinet fan condition. 1436 | 1437 | This value represents the overall condition of the 1438 | fan in the expansion cabinet." 1439 | ::= { cpqCrExpCab 9 } 1440 | 1441 | cpqCrExpCabTemperatureCondition OBJECT-TYPE 1442 | SYNTAX INTEGER 1443 | { 1444 | other(1), 1445 | ok(2), 1446 | degraded(3), 1447 | failed(4) 1448 | } 1449 | ACCESS read-only 1450 | STATUS mandatory 1451 | DESCRIPTION 1452 | "Expansion Cabinet temperature condition. 1453 | 1454 | This value represents the overall condition of the 1455 | temperature in the expansion cabinet." 1456 | ::= { cpqCrExpCab 10 } 1457 | 1458 | 1459 | -- **************************************************************************** 1460 | -- Clustered RAID Partition Table (Logical Drives) 1461 | -- =============================================== 1462 | -- 1463 | -- The compaq enterprise (1.3.6.1.4.1.232) 1464 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1465 | -- cpqCrComponent Group (1.3.6.1.4.1.232.141.2) 1466 | -- cpqCrPartition Group (1.3.6.1.4.1.232.141.2.9) 1467 | -- cpqCrPartitionTable (1.3.6.1.4.1.232.141.2.9.1) 1468 | -- 1469 | -- The cpqCrPartition group contains configuration and statistical 1470 | -- information about the logical drives associated with Clustered 1471 | -- RAID controllers. 1472 | -- 1473 | -- **************************************************************************** 1474 | 1475 | cpqCrPartitionTable OBJECT-TYPE 1476 | SYNTAX SEQUENCE OF CpqCrPartitionEntry 1477 | ACCESS not-accessible 1478 | STATUS mandatory 1479 | DESCRIPTION 1480 | "Clustered RAID Logical Drive Table. 1481 | 1482 | A table of logical drive entries." 1483 | ::= { cpqCrPartition 1 } 1484 | 1485 | cpqCrPartitionEntry OBJECT-TYPE 1486 | SYNTAX CpqCrPartitionEntry 1487 | ACCESS not-accessible 1488 | STATUS mandatory 1489 | DESCRIPTION 1490 | "Clustered RAID Logical Drive Entry. 1491 | 1492 | A Logical Drive entry." 1493 | INDEX { cpqCrPartitionLogDrvIndex, cpqCrPartitionIndex } 1494 | ::= { cpqCrPartitionTable 1 } 1495 | 1496 | CpqCrPartitionEntry ::= SEQUENCE 1497 | { 1498 | cpqCrPartitionLogDrvIndex INTEGER, 1499 | cpqCrPartitionIndex INTEGER, 1500 | cpqCrPartitionRAIDLevel INTEGER, 1501 | cpqCrPartitionStatus INTEGER, 1502 | cpqCrPartitionSize INTEGER, 1503 | cpqCrPartitionCondition INTEGER 1504 | } 1505 | 1506 | cpqCrPartitionLogDrvIndex OBJECT-TYPE 1507 | SYNTAX INTEGER (0..255) 1508 | ACCESS read-only 1509 | STATUS mandatory 1510 | DESCRIPTION 1511 | "Clustered RAID Logical Drive Index. 1512 | 1513 | This maps the logical drives into their respective RAIDsets. 1514 | RAIDset index 'i' under the RAIDset group owns the 1515 | associated drives in the logical drives which use that index." 1516 | ::= { cpqCrPartitionEntry 1 } 1517 | 1518 | cpqCrPartitionIndex OBJECT-TYPE 1519 | SYNTAX INTEGER (0..255) 1520 | ACCESS read-only 1521 | STATUS mandatory 1522 | DESCRIPTION 1523 | "Clustered RAID Logical Drive Index. 1524 | 1525 | This logical drive number keeps track of multiple instances of 1526 | logical drives which are part of the same RAIDset. For each 1527 | RAIDset index value, the logical drive index starts at 1 and 1528 | increments for each logical drive." 1529 | ::= { cpqCrPartitionEntry 2 } 1530 | 1531 | cpqCrPartitionRAIDLevel OBJECT-TYPE 1532 | SYNTAX INTEGER 1533 | { 1534 | other(1), 1535 | jbod(2), 1536 | raid0(3), 1537 | raid1(4), 1538 | raid0plus1(5), 1539 | raid4(6), 1540 | raid5(7) 1541 | } 1542 | ACCESS read-only 1543 | STATUS mandatory 1544 | DESCRIPTION 1545 | "Logical Drive RAID Level. 1546 | 1547 | This shows the RAID level of the logical drive. 1548 | To change the RAID level, run the CR3500 Array 1549 | Configuration Utility. 1550 | 1551 | The following values are valid for the logical drive RAID 1552 | Level: 1553 | 1554 | JBOD (2) 1555 | Just a Bunch of Drives. Fault tolerance is not enabled. This 1556 | logicl drive is made up of one device. Does not provide extended data 1557 | redundancy, availability or protection, and does not use striping 1558 | for performance enhancements. 1559 | Good for applications requiring high device capacity. Requires one 1560 | and only one device. 1561 | 1562 | RAID0 (3) 1563 | A logical drive using device striping and write-back caching. 1564 | Data is spread across many devices, offering faster read/write 1565 | performance than a single device. Does not provide extended data 1566 | redundancy, availability or protection. Good for applications with 1567 | large files needing high I/O performance. Requires a minimum of 1568 | two devices. 1569 | 1570 | RAID1 (4) 1571 | A logical drive using device mirroring. Any time data is written to 1572 | a device, a duplicate write is also made to a second device. Reading 1573 | from multiple devices is usually faster than reading from a single 1574 | device. Provides extended data redundancy, availability and 1575 | protection. Good for read-intensive applications needing high 1576 | availability. Requires a minimum of two devices. 1577 | 1578 | RAID0PLUS1 (5) 1579 | A logical drive where data is striped across devices and duplicated 1580 | on an equivalent number of devies. Provides extended data 1581 | redundancy, availability and protection. Good for applications 1582 | requiring high availability, high performance and capacity. 1583 | Requires an even number of devices, and a minimum of four devices. 1584 | 1585 | RAID4 (6) 1586 | A logical drive using device striping, with one device assigned for 1587 | parity. Provides extended data redundancy, availability and 1588 | protection. Good for applications such as graphics and imaging that 1589 | call for writing huge, sequential blocks of data. Requires a minimum 1590 | of three devices. 1591 | 1592 | RAID5(7) 1593 | A logical drive using device striping, with parity distributed across 1594 | devices. Provides extended data redundancy, availability and 1595 | protection. Good for transaction processing, applications requiring 1596 | many, small I/O operations scattered randomly and widely across the 1597 | devices. Requires a minimum of three devices." 1598 | 1599 | ::= { cpqCrPartitionEntry 3 } 1600 | 1601 | cpqCrPartitionStatus OBJECT-TYPE 1602 | SYNTAX INTEGER 1603 | { 1604 | other(1), 1605 | good(2), 1606 | reduced(3), 1607 | failed(4), 1608 | reconstructing(5), 1609 | initializing(6) 1610 | } 1611 | ACCESS read-only 1612 | STATUS mandatory 1613 | DESCRIPTION 1614 | "Logical Drive Status. 1615 | 1616 | The logical drive can be in one of the following states: 1617 | 1618 | Good (2) 1619 | Indicates that the logical drive is fully operational. 1620 | 1621 | Reduced (3) 1622 | Indicates that the logical drive is operating in a degraded or 1623 | reduced state. One or more of the physical disks which make 1624 | up the logical drive are either missing or failed, but the 1625 | logical drive can continue to operate without data loss. 1626 | 1627 | Failed (4) 1628 | Indicates that the logical drive is not operational. 1629 | 1630 | Reconstructing (5) 1631 | Indicates that the logical drive is regenerating a failed 1632 | physical drive's data onto a replacement drive that is part 1633 | of the logical drive. 1634 | 1635 | All user data remains available during the reconstruction 1636 | process, but some performance reduction may occur when a 1637 | request requires access to the device being reconstructed. 1638 | 1639 | Initializing (6) 1640 | Indicates that the controller is writing its file structure 1641 | onto the logical drive's member devices." 1642 | 1643 | ::= { cpqCrPartitionEntry 4 } 1644 | 1645 | cpqCrPartitionSize OBJECT-TYPE 1646 | SYNTAX INTEGER (0..2147483647) 1647 | ACCESS read-only 1648 | STATUS mandatory 1649 | DESCRIPTION 1650 | "Logical Drive Size. 1651 | 1652 | This is the size of the logical drive in megabytes. This value 1653 | is calculated using the value 1,048,576 (2^20) as a megabyte. 1654 | Drive manufacturers sometimes use the number 1,000,000 as a 1655 | megabyte when giving drive capacities so this value may 1656 | differ from the advertised size of a drive." 1657 | ::= { cpqCrPartitionEntry 5 } 1658 | 1659 | cpqCrPartitionCondition OBJECT-TYPE 1660 | SYNTAX INTEGER 1661 | { 1662 | other(1), 1663 | ok(2), 1664 | degraded(3), 1665 | failed(4) 1666 | } 1667 | ACCESS read-only 1668 | STATUS mandatory 1669 | DESCRIPTION 1670 | "Logical drive condition. 1671 | 1672 | This value represents the overall condition of this logical 1673 | drive and any associated physical drives." 1674 | ::= { cpqCrPartitionEntry 6 } 1675 | 1676 | 1677 | -- **************************************************************************** 1678 | -- Clustered RAID Subsystem Traps 1679 | -- ============================== 1680 | -- 1681 | -- The compaq enterprise (1.3.6.1.4.1.232) 1682 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1683 | -- cpqCrTrap (1.3.6.1.4.1.232.141.3) 1684 | -- cpqCrCntlrTrap (1.3.6.1.4.1.232.141.3.2) 1685 | -- 1686 | -- **************************************************************************** 1687 | 1688 | cpqCrController1FailureTrap TRAP-TYPE 1689 | ENTERPRISE cpqCrCntlrTrap 1690 | VARIABLES 1691 | { 1692 | sysName 1693 | } 1694 | DESCRIPTION 1695 | "The primary controller in the subsytem has failed. 1696 | 1697 | Details: 1698 | The primary Controller has failed. 1699 | 1700 | User Action: 1701 | Replace controller. Possible causes are controller physically 1702 | removed, actual hardware failure." 1703 | ::= 1 1704 | 1705 | cpqCrController1InformationTrap TRAP-TYPE 1706 | ENTERPRISE cpqCrCntlrTrap 1707 | VARIABLES 1708 | { 1709 | sysName 1710 | } 1711 | DESCRIPTION 1712 | "The primary controller in the subsytem has recovered. 1713 | 1714 | Details: 1715 | The primary controller has recovered. 1716 | 1717 | User Action: 1718 | None." 1719 | 1720 | ::= 2 1721 | 1722 | cpqCrController2FailureTrap TRAP-TYPE 1723 | ENTERPRISE cpqCrCntlrTrap 1724 | VARIABLES 1725 | { 1726 | sysName 1727 | } 1728 | DESCRIPTION 1729 | "The secondary controller in the subsytem has failed. 1730 | 1731 | Details: 1732 | The secondary controller has failed. 1733 | 1734 | User Action: 1735 | Replace controller. Possible causes are controller 1736 | physically removed, actual hardware failure." 1737 | 1738 | ::= 3 1739 | 1740 | cpqCrController2InformationTrap TRAP-TYPE 1741 | ENTERPRISE cpqCrCntlrTrap 1742 | VARIABLES 1743 | { 1744 | sysName 1745 | } 1746 | DESCRIPTION 1747 | "The secondary controller in the subsytem has recovered. 1748 | 1749 | Details: 1750 | The secondary controller has recovered. 1751 | 1752 | User Action: 1753 | None." 1754 | 1755 | ::= 4 1756 | 1757 | -- **************************************************************************** 1758 | -- Clustered RAID Logical Drive (RAIDset) Traps 1759 | -- ============================================ 1760 | -- 1761 | -- The compaq enterprise (1.3.6.1.4.1.232) 1762 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1763 | -- cpqCrTrap (1.3.6.1.4.1.232.141.3) 1764 | -- cpqCrLogDrvTrap (1.3.6.1.4.1.232.141.3.3) 1765 | -- 1766 | -- **************************************************************************** 1767 | 1768 | cpqCrLogDriveInformationTrap TRAP-TYPE 1769 | ENTERPRISE cpqCrLogDrvTrap 1770 | VARIABLES 1771 | { 1772 | sysName, 1773 | cpqCrLogDrvIndex 1774 | } 1775 | DESCRIPTION 1776 | "A RAIDset has become optimal. 1777 | 1778 | Details: 1779 | A RAIDset has become optimal due to a successful completion 1780 | of the reconstruction process. 1781 | 1782 | User Action: 1783 | None." 1784 | 1785 | ::= 5 1786 | 1787 | cpqCrLogDriveFailureTrap TRAP-TYPE 1788 | ENTERPRISE cpqCrLogDrvTrap 1789 | VARIABLES 1790 | { 1791 | sysName, 1792 | cpqCrLogDrvIndex 1793 | } 1794 | DESCRIPTION 1795 | "A RAIDset has failed. 1796 | 1797 | Details: 1798 | The RAIDset has failed and is off-line. 1799 | 1800 | User Action: 1801 | Possible cause is too many failed disk drives that make up 1802 | the RAIDset, the OS can no longer communicate with the RAIDset 1803 | for other reasons." 1804 | 1805 | ::= 6 1806 | 1807 | cpqCrLogDriveReconstructTrap TRAP-TYPE 1808 | ENTERPRISE cpqCrLogDrvTrap 1809 | VARIABLES 1810 | { 1811 | sysName, 1812 | cpqCrLogDrvIndex 1813 | } 1814 | DESCRIPTION 1815 | "A RAIDset has started the reconstruction process. 1816 | 1817 | Details: 1818 | The RAIDset has started the reconstruction process but is available 1819 | for normal use. 1820 | Possible causes are an available disk drive was created as 1821 | a spare to be inserted into the set, an existing spare was 1822 | automatically added to the set for reconstruction upon failure 1823 | of a member disk device. 1824 | 1825 | User Action: 1826 | None." 1827 | 1828 | ::= 7 1829 | 1830 | cpqCrLogDriveReducedTrap TRAP-TYPE 1831 | ENTERPRISE cpqCrLogDrvTrap 1832 | VARIABLES 1833 | { 1834 | sysName, 1835 | cpqCrLogDrvIndex 1836 | } 1837 | DESCRIPTION 1838 | "A RAIDset has become degraded. 1839 | 1840 | Details: 1841 | A RAIDset has become degraded due to a member disk device 1842 | failure. 1843 | 1844 | User Action: 1845 | Replace the failed disk device; add a spare to the system 1846 | to cause a reconstruct." 1847 | 1848 | ::= 8 1849 | 1850 | cpqCrLogDriveInitializingTrap TRAP-TYPE 1851 | ENTERPRISE cpqCrLogDrvTrap 1852 | VARIABLES 1853 | { 1854 | sysName, 1855 | cpqCrLogDrvIndex 1856 | } 1857 | DESCRIPTION 1858 | "A RAIDset is initializing. 1859 | 1860 | Details: 1861 | A RAIDset is in the process of being intialized. 1862 | 1863 | User Action: 1864 | None." 1865 | 1866 | ::= 9 1867 | 1868 | -- **************************************************************************** 1869 | -- Clustered RAID Physical Drive Traps 1870 | -- =================================== 1871 | -- 1872 | -- The compaq enterprise (1.3.6.1.4.1.232) 1873 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 1874 | -- cpqCrTrap (1.3.6.1.4.1.232.141.3) 1875 | -- cpqCrPhyDrvTrap (1.3.6.1.4.1.232.141.3.5) 1876 | -- 1877 | -- **************************************************************************** 1878 | 1879 | 1880 | cpqCrDiskInformationTrap TRAP-TYPE 1881 | ENTERPRISE cpqCrPhyDrvTrap 1882 | VARIABLES 1883 | { 1884 | sysName, 1885 | cpqCrPhyDrvCntlrIndex, 1886 | cpqCrPhyDrvIndex 1887 | } 1888 | DESCRIPTION 1889 | "A disk drive has recovered. 1890 | 1891 | Details: 1892 | A disk device has recovered. 1893 | 1894 | User Action: 1895 | None." 1896 | 1897 | ::= 10 1898 | 1899 | 1900 | cpqCrDiskFailureTrap TRAP-TYPE 1901 | ENTERPRISE cpqCrPhyDrvTrap 1902 | VARIABLES 1903 | { 1904 | sysName, 1905 | cpqCrPhyDrvCntlrIndex, 1906 | cpqCrPhyDrvIndex 1907 | } 1908 | DESCRIPTION 1909 | "A disk drive has failed. 1910 | 1911 | Details: 1912 | A disk device has failed. 1913 | 1914 | User Action: 1915 | Replace the disk device." 1916 | 1917 | ::= 11 1918 | 1919 | 1920 | cpqCrDiskReconstructTrap TRAP-TYPE 1921 | ENTERPRISE cpqCrPhyDrvTrap 1922 | VARIABLES 1923 | { 1924 | sysName, 1925 | cpqCrPhyDrvIndex 1926 | } 1927 | DESCRIPTION 1928 | "A disk drive has started the reconstruction process. 1929 | 1930 | Details: 1931 | A disk member of a logical drive has begun the reconstruction 1932 | process and will be available for use when reconstruction is 1933 | complete. 1934 | 1935 | User Action: 1936 | Wait for the reconstruction to complete." 1937 | 1938 | ::= 12 1939 | 1940 | 1941 | cpqCrDiskAvailableTrap TRAP-TYPE 1942 | ENTERPRISE cpqCrPhyDrvTrap 1943 | VARIABLES 1944 | { 1945 | sysName, 1946 | cpqCrPhyDrvIndex 1947 | } 1948 | DESCRIPTION 1949 | "A disk drive has been made available for use. 1950 | 1951 | Details: 1952 | A disk drive has been physically added or set to the 1953 | Available state. It can be used as a RAIDset member or as a Spare. 1954 | 1955 | User Action: 1956 | None." 1957 | 1958 | ::= 13 1959 | 1960 | 1961 | cpqCrDiskSpareTrap TRAP-TYPE 1962 | ENTERPRISE cpqCrPhyDrvTrap 1963 | VARIABLES 1964 | { 1965 | sysName, 1966 | cpqCrPhyDrvIndex 1967 | } 1968 | DESCRIPTION 1969 | "A disk drive has been made a Spare. 1970 | 1971 | Details: 1972 | A disk drive has been set to Spare status from Available and 1973 | may be used in a RAID 1, RAID 0+1 or RAID 5 logical disk should 1974 | a member device fail in one of those RAIDsets. 1975 | 1976 | User Action: 1977 | None." 1978 | 1979 | ::= 14 1980 | 1981 | cpqCrPhyDiskInformationTrap TRAP-TYPE 1982 | ENTERPRISE cpqCrPhyDrvTrap 1983 | VARIABLES 1984 | { 1985 | sysName, 1986 | cpqCrPhyDrvScsiID 1987 | } 1988 | DESCRIPTION 1989 | "A disk drive has recovered. 1990 | 1991 | Details: 1992 | A disk device has recovered. 1993 | 1994 | User Action: 1995 | None." 1996 | 1997 | ::= 30 1998 | 1999 | cpqCrPhyDiskFailureTrap TRAP-TYPE 2000 | ENTERPRISE cpqCrPhyDrvTrap 2001 | VARIABLES 2002 | { 2003 | sysName, 2004 | cpqCrPhyDrvScsiID 2005 | } 2006 | DESCRIPTION 2007 | "A disk drive has failed. 2008 | 2009 | Details: 2010 | A disk device has failed. 2011 | 2012 | User Action: 2013 | Replace the disk device." 2014 | 2015 | ::= 31 2016 | 2017 | cpqCrPhyDiskReconstructTrap TRAP-TYPE 2018 | ENTERPRISE cpqCrPhyDrvTrap 2019 | VARIABLES 2020 | { 2021 | sysName, 2022 | cpqCrPhyDrvScsiID 2023 | } 2024 | DESCRIPTION 2025 | "A disk drive has started the reconstruction process. 2026 | 2027 | Details: 2028 | A disk member of a logical drive has begun the reconstruction 2029 | process and will be available for use when reconstruction is 2030 | complete. 2031 | 2032 | User Action: 2033 | Wait for the reconstruction to complete." 2034 | 2035 | ::= 32 2036 | 2037 | cpqCrPhyDiskAvailableTrap TRAP-TYPE 2038 | ENTERPRISE cpqCrPhyDrvTrap 2039 | VARIABLES 2040 | { 2041 | sysName, 2042 | cpqCrPhyDrvScsiID 2043 | } 2044 | DESCRIPTION 2045 | "A disk drive has been made available for use. 2046 | 2047 | Details: 2048 | A disk drive has been physically added or set to the 2049 | Available state. It can be used as a RAIDset member or as a Spare. 2050 | 2051 | User Action: 2052 | None." 2053 | 2054 | ::= 33 2055 | 2056 | cpqCrPhyDiskSpareTrap TRAP-TYPE 2057 | ENTERPRISE cpqCrPhyDrvTrap 2058 | VARIABLES 2059 | { 2060 | sysName, 2061 | cpqCrSpareScsiID 2062 | } 2063 | DESCRIPTION 2064 | "A disk drive has been made a Spare. 2065 | 2066 | Details: 2067 | A disk drive has been set to Spare status from Available and 2068 | may be used in a RAID 1, RAID 0+1 or RAID 5 logical disk should 2069 | a member device fail in one of those RAIDsets. 2070 | 2071 | User Action: 2072 | None." 2073 | 2074 | ::= 34 2075 | 2076 | -- **************************************************************************** 2077 | -- Clustered RAID EMU Traps 2078 | -- ======================== 2079 | -- 2080 | -- The compaq enterprise (1.3.6.1.4.1.232) 2081 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 2082 | -- cpqCrTrap (1.3.6.1.4.1.232.141.3) 2083 | -- cpqCrEMUTrap (1.3.6.1.4.1.232.141.3.7) 2084 | -- 2085 | -- **************************************************************************** 2086 | 2087 | cpqCrEMUNormalTrap TRAP-TYPE 2088 | ENTERPRISE cpqCrEMUTrap 2089 | VARIABLES 2090 | { 2091 | sysName 2092 | } 2093 | DESCRIPTION 2094 | "Primary enclosure state is normal. 2095 | 2096 | Details: 2097 | The overall condition of the primary enclosure has returned 2098 | to normal. 2099 | 2100 | 2101 | User Action: 2102 | None." 2103 | 2104 | ::= 15 2105 | 2106 | cpqCrEMUFanFailureTrap TRAP-TYPE 2107 | ENTERPRISE cpqCrEMUTrap 2108 | VARIABLES 2109 | { 2110 | sysName 2111 | } 2112 | DESCRIPTION 2113 | "Fan has failed. 2114 | 2115 | Details: 2116 | One of the cooling fans in the primary enclosure has 2117 | failed. 2118 | 2119 | User Action: 2120 | Replace the cooling fan. Possible causes are fan 2121 | physically removed, actual hardware failure." 2122 | 2123 | --#SEVERITY MAJOR 2124 | ::= 16 2125 | 2126 | cpqCrEMUFanInformationTrap TRAP-TYPE 2127 | ENTERPRISE cpqCrEMUTrap 2128 | VARIABLES 2129 | { 2130 | sysName 2131 | } 2132 | DESCRIPTION 2133 | "The fan has recovered. 2134 | 2135 | Details: 2136 | The cooling fan in the primary enclosure has recovered. 2137 | 2138 | User Action: 2139 | None." 2140 | ::= 17 2141 | 2142 | cpqCrEMUPowerSupplyFailureTrap TRAP-TYPE 2143 | ENTERPRISE cpqCrEMUTrap 2144 | VARIABLES 2145 | { 2146 | sysName 2147 | } 2148 | DESCRIPTION 2149 | "Power supply has failed. 2150 | 2151 | Details: 2152 | One of the power supplies in the primary enclosure has 2153 | failed. 2154 | 2155 | User Action: 2156 | Replace the power supply. Possible causes are power 2157 | supply physically removed, power cord unplugged, actual 2158 | hardware failure." 2159 | 2160 | --#SEVERITY MAJOR 2161 | ::= 18 2162 | 2163 | cpqCrEMUPowerSupplyInformationTrap TRAP-TYPE 2164 | ENTERPRISE cpqCrEMUTrap 2165 | VARIABLES 2166 | { 2167 | sysName 2168 | } 2169 | DESCRIPTION 2170 | "The power supply has recovered. 2171 | 2172 | Details: 2173 | The power supply in the primary enclosure has recovered. 2174 | 2175 | User Action: 2176 | None." 2177 | ::= 19 2178 | 2179 | cpqCrEMUTemperatureWarningTrap TRAP-TYPE 2180 | ENTERPRISE cpqCrEMUTrap 2181 | VARIABLES 2182 | { 2183 | sysName 2184 | } 2185 | DESCRIPTION 2186 | "Primary enclosure temperature warning. 2187 | 2188 | Details: 2189 | The temperature in the primary enclosure has triggered a 2190 | warning condition detected by the controller. 2191 | 2192 | User Action: 2193 | Check the cooling fans in the primary enclosure." 2194 | 2195 | --#SEVERITY MINOR 2196 | ::= 23 2197 | 2198 | cpqCrEMUTemperatureCriticalTrap TRAP-TYPE 2199 | ENTERPRISE cpqCrEMUTrap 2200 | VARIABLES 2201 | { 2202 | sysName 2203 | } 2204 | DESCRIPTION 2205 | "Primary enclosure temperature critical!. 2206 | 2207 | Details: 2208 | The temperature in the primary enclosure has triggered a 2209 | critical condition detected by the controller. 2210 | 2211 | User Action: 2212 | Check the cooling fans in the primary enclosure." 2213 | 2214 | --#SEVERITY CRITICAL 2215 | ::= 24 2216 | 2217 | cpqCrEMUTemperatureInformationTrap TRAP-TYPE 2218 | ENTERPRISE cpqCrEMUTrap 2219 | VARIABLES 2220 | { 2221 | sysName 2222 | } 2223 | DESCRIPTION 2224 | "Primary enclosure temperature normal. 2225 | 2226 | Details: 2227 | The temperature in the primary enclosure has 2228 | returned to normal. 2229 | 2230 | User Action: 2231 | None." 2232 | ::= 25 2233 | 2234 | -- **************************************************************************** 2235 | -- Clustered RAID Expansion Cabinet Traps 2236 | -- ====================================== 2237 | -- 2238 | -- The compaq enterprise (1.3.6.1.4.1.232) 2239 | -- cpqClusteredRAID Group (1.3.6.1.4.1.232.141) 2240 | -- cpqCrTrap (1.3.6.1.4.1.232.141.3) 2241 | -- cpqCrExpCabTrap (1.3.6.1.4.1.232.141.3.8) 2242 | -- 2243 | -- **************************************************************************** 2244 | 2245 | cpqCrExpCabFanFailureTrap TRAP-TYPE 2246 | ENTERPRISE cpqCrExpCabTrap 2247 | VARIABLES 2248 | { 2249 | sysName 2250 | } 2251 | DESCRIPTION 2252 | "Fan has failed in expansion cabinet. 2253 | 2254 | Details: 2255 | One of the cooling fans in the expansion cabinet has 2256 | failed. 2257 | 2258 | User Action: 2259 | Replace the cooling fan. Possible causes are fan 2260 | physically removed, actual hardware failure." 2261 | 2262 | --#SEVERITY MAJOR 2263 | ::= 20 2264 | 2265 | cpqCrExpCabFanInformationTrap TRAP-TYPE 2266 | ENTERPRISE cpqCrExpCabTrap 2267 | VARIABLES 2268 | { 2269 | sysName 2270 | } 2271 | DESCRIPTION 2272 | "Fan has recovered. 2273 | 2274 | Details: 2275 | A cooling fan in the expansion cabinet has returned to a 2276 | normal state. 2277 | 2278 | User Action: 2279 | None." 2280 | ::= 21 2281 | 2282 | cpqCrExpCabPowerSupplyFailureTrap TRAP-TYPE 2283 | ENTERPRISE cpqCrExpCabTrap 2284 | VARIABLES 2285 | { 2286 | sysName 2287 | } 2288 | DESCRIPTION 2289 | "Power supply has failed. 2290 | 2291 | Details: 2292 | One of the power supplies in the expansion cabinet has 2293 | failed. 2294 | 2295 | User Action: 2296 | Replace the power supply. Possible causes are power 2297 | supply physically removed, power cord unplugged, actual 2298 | hardware failure." 2299 | 2300 | --#SEVERITY MAJOR 2301 | ::= 22 2302 | 2303 | cpqCrExpCabPowerSupplyInformationTrap TRAP-TYPE 2304 | ENTERPRISE cpqCrExpCabTrap 2305 | VARIABLES 2306 | { 2307 | sysName 2308 | } 2309 | DESCRIPTION 2310 | "The power supply has recovered. 2311 | 2312 | Details: 2313 | The power supply in the expansion cabinet has recovered. 2314 | 2315 | User Action: 2316 | None." 2317 | ::= 29 2318 | 2319 | cpqCrExpCabTemperatureWarningTrap TRAP-TYPE 2320 | ENTERPRISE cpqCrExpCabTrap 2321 | VARIABLES 2322 | { 2323 | sysName 2324 | } 2325 | DESCRIPTION 2326 | "Expansion cabinet temperature warning. 2327 | 2328 | Details: 2329 | The temperature in the expansion cabinet has triggered a 2330 | warning condition detected by the controller. 2331 | 2332 | User Action: 2333 | Check the cooling fans in the expansion cabinet." 2334 | 2335 | --#SEVERITY MINOR 2336 | ::= 26 2337 | 2338 | cpqCrExpCabTemperatureCriticalTrap TRAP-TYPE 2339 | ENTERPRISE cpqCrExpCabTrap 2340 | VARIABLES 2341 | { 2342 | sysName 2343 | } 2344 | DESCRIPTION 2345 | "Expansion cabinet temperature critical! 2346 | 2347 | Details: 2348 | The temperature in the expansion cabinet has triggered a 2349 | critical condition detected by the controller. 2350 | 2351 | User Action: 2352 | Check the cooling fans in the expansion cabinet." 2353 | 2354 | --#SEVERITY CRITICAL 2355 | ::= 27 2356 | 2357 | cpqCrExpCabTemperatureInformationTrap TRAP-TYPE 2358 | ENTERPRISE cpqCrExpCabTrap 2359 | VARIABLES 2360 | { 2361 | sysName 2362 | } 2363 | DESCRIPTION 2364 | "Expansion cabinet temperature normal. 2365 | 2366 | Details: 2367 | The temperature in the expansion cabinet has returned to 2368 | normal. 2369 | 2370 | User Action: 2371 | None." 2372 | ::= 28 2373 | 2374 | END 2375 | --------------------------------------------------------------------------------