4 * Fixed a regression regarding un-certified physical disks in "Ready"
5 state (e.g. hot-spare) when using the blacklisting keyword
7 * Added an option "--snmp-timeout" which allows setting the SNMP
8 object timeout for the Net::SNMP perl module
13 * Small fixes in PNP template
14 * Fixed handling of functional but uncertified disks (Matthew Kent)
15 * Fixed regression for pdisk cert on old hardware/OMSA
16 * Reverse pdisk cert for OMSA 7.1.0 via SNMP, this works around an
18 * Shortened a lot of reporting messages to make things more consistent
19 * Rewritten logic on reporting pdisks
20 * RPM spec: Fix docbook pkg name for suse
21 * Added new special case for controller batteries
26 * Support for PCI attached storage (new in OMSA 7.0.0) was added
27 * Support was added for negative temperature readings and thresholds
29 * Fix for physical disk check. If a disk was marked as predictive
30 failure, and also had other failure conditions of a more severe
31 nature, check_openmange only reported the predictive failure
32 state. This has been fixed so that the most severe failure takes
34 * The iDRAC6 and iDRAC7 controllers was identified via SNMP using
35 integer values that are not defined in the MIB. This resulted in
36 internal error warnings if the '-o' option was used. The plugin now
37 defines these integer identifiers even though they are undocumented
39 * The PNP template now contains comments which identifies which plugin
40 version it was built for.
41 * The manual pages were revised and completely rewritten from perl POD
42 to Docbook XML format.
47 * A bug was fixed which could lead to perl warnings when either of the
48 options '--tempunit' or '--fahrenheit' was used.
49 * A workaround was added for an SNMP bug in OMSA 7.0.0 related to the
50 "firmwareType" OID for iDRAC6 management cards.
51 * A bug was fixed for a corner case where the temperature probe
52 readings for storage enclosures were empty. Previously, this could
53 produce perl warnings (internal errors).
58 * Allow "2c" to be specified as SNMP version via command line and
59 config file option. Patch from Oskar Liljeblad.
60 * Corrected a typo for the '--config' command line option
61 * Added check for 'servicetag', checks whether the servicetag is sane
62 (i.e. not empty, "unknown" or other bogus value). Thanks to Xavier
64 * fix warranty info link with '-I' or '--htmlinfo' option wrt. new
65 layout on support.dell.com
70 * If the option -I or --htmlinfo was used, the OK output would be
71 printed two times. This has been fixed so the OK output is now
72 correct for HTML output.
73 * A bug was fixed for config file parsing, if the plugin was used in
74 local mode (i.e. no hostname specified). Reported by David Jones.
75 * Distribution now includes an example configuration file, contributed
81 * Added a new option '--hide-servicetag' to censor the servicetag in
82 the plugin output. A corresponding config file option
83 'output_hide_servicetag' was created. Thanks to Sebastian Ahndorf
85 * SNMP: Fixed bug in amperage probes perfdata output when one or more
86 PSUs has lost power, which could cause garbled graphs.
91 * Added new blacklisting keyword 'pdisk_foreign' to suppress warnings
92 about foreign physical disks
93 * SNMP: Get the controller number right when reporting issues with the
94 controller cache battery
95 * Various minor tweaks and bugfixes in the PNP4Nagios template
100 * Major overhaul of the perfdata code. This includes API breakage and
102 - Probes were not sorted correctly
103 - Voltage data was not included
104 * The PNP template check_openmanage.php has been redone to work with
105 the changes in perfdata output from the plugin
106 * A new option '--legacy-perfdata' will make the the plugin output the
107 performance data in the old format
108 * Added support for a configuration file
109 * Added manual page for the configuration file
110 * If using html output, URLs will now open in a new window
111 * Added a compatibility fix for OMSA 6.5.0, related to performance
112 data for amperage probes when the plugin is used in local
113 mode. Thanks to Benedikt Meyer for a patch.
118 * Added workaround for a rare condition in which blade detection fails
119 because the chassis IDs for the blade and interconnect board have
120 switched places in the BaseBoardType SNMP table.
125 * A regression wrt. non-certified drives were fixed. The plugin failed
126 to identify non-certified physical drives via SNMP.
127 * Added the ability to blacklist non-certified drives with the
128 'pdisk_cert' blacklisting keyword.
133 * Fixed typo in help output
134 * SD card check is now included if the parameter '--only chassis' is
136 * The plugin will issue a proper warning if a physical drive is
137 uncertified, instead of an unspecified warning. One or more
138 uncertified drives will make the controller go into a non-critical
140 * Slightly improved reporting of fan status
141 * Exit with value 3 (unknown) if printing debug, help or version
142 info. This is considered best practice for Nagios plugins.
143 * Workaround added for logical SAS connectors to external storage
144 enclosures, when using check_openmanage in local mode with OMSA
145 6.4.0 or later versions. The output from omreport could contain
146 lines that the plugin was unable to parse, which would lead to
152 * Fix counting of components when blacklisting is used. Components
153 should be counted even if blacklisted
154 * Added some unsupported vdisk types to the list. The OMSA MIB
155 identifies these, but lists them as unsupported.
156 * Added option '-B' or '--show-blacklist' to show any blacklistings in
158 * Fixed a bug for checking voltage probes, if the reading is missing
160 * Fixed a regression bug for a power monitoring corner case.
165 * Added more robustness wrt. values from OMSA obtained via SNMP, to
166 avoid internal errors where non-important values are missing.
171 * A few compatibility fixes for OMSA 6.4.0 were added.
176 * Added support for IPv6 when checking via SNMP. IPv6 can be turned on
177 with the option '-6' or '--ipv6'. The default is IPv4 if the option
179 * Added support for TCP when checking vis SNMP. The option '--tcp' can
180 be used to turn on TCP. The default transport protocol is UDP if the
181 option is not present.
182 * The mode of operation (local or SNMP) is shown in the debug
183 output. If SNMP is used, the debug output will also show the SNMP
184 protocol version, IP version and transport protocol (UDP or TCP).
185 * Amperage probe status via SNMP is of type "probe status", not
186 regular status. This has been fixed.
187 * Massive overall robustness improvements to handle OMSA bugs where
188 some information from OMSA is missing.
189 * Memory module enumeration via SNMP changed somewhat to reflect
190 enumeration provided by omreport. This ensures that the plugin's
191 output is identical in SNMP or local mode wrt. dimms IDs.
192 * Fan enumeration via SNMP changed somewhat to reflect enumeration
193 provided by omreport. This ensures that the plugin's output is
194 identical in SNMP or local mode wrt. fan IDs.
199 * Included new check for SD cards. Newer servers such as the R710 can
200 have SD cards installed, these should be monitored. The SD card
201 check is on by default. A new blacklisting keyword 'sd' has been
202 added. The SD card check can be turned off with '--check sdcard=0'.
203 * Handle special cases where power monitoring capability is disabled
204 due to non-redundant and/or non-instrumented power supplies.
205 * For physical disks probed via SNMP, check that values for vendor,
206 product ID and capacity is available before attempting to display
208 * If a physical disk is in sufficiently bad condition, the vendor
209 field reported by OMSA may be empty. The plugin now handles this
210 situation without throwing an internal error.
216 * Storage is no longer allowed to be absent. If the plugin doesn't
217 find a storage controller, it will give an alert. For diskless
218 systems or servers without a Dell controller that OMSA recognizes
219 you will now have to specify '--no-storage' or '--check storage=0'
221 * Report the system revision (if applicable) wherever the model name
222 is printed. E.g. "PowerEdge 2950 III" instead of "PowerEdge 2950".
223 * Small change in search path for omreport: The new location for OMSA
224 6.2.0 and later on Linux will be attempted first.
225 * Small bugfix for the '--check' parameter, if the argument is a
226 filename. The file could not contain a linebreak, this has been
228 * Added an option '--no-storage', which is equivalent to the general
229 option '--check storage=0'.
235 * If a physical disk is a hot spare, display this information in
237 * Report the bus protocol (e.g. SAS, SATA) and media type (e.g. HDD,
238 SDD) for physical disks in the debug output, if applicable
239 * Minor fix for 100GB physical disks, write "100GB" instead of "99GB"
240 * SNMP: Use new features of OMSA 6.3.0 to display occupied and total
241 slots in storage enclosures, if applicable. This information is not
242 available with omreport and check_openmanage will not display this
244 * SNMP: Added new processor IDs from the OMSA 6.3.0 MIBs
245 * SNMP: Use connection tables in a proper way to determine controller
246 and enclosure IDs, for use with physical disks and enclosure
247 components (fan, temp sensors etc.). This fixes a long standing bug
248 for servers with more than one controller, if checked via SNMP.
249 * SNMP: Use the nexus ID as last resort to find the controller for
250 physical disks. Workaround for older, broken OMSA versions.
251 * SNMP: Identify enclosures (e.g. '2:0:0') properly so that the
252 reporting with SNMP corresponds to the same report with omreport.
253 * SNMP: added a couple of workarounds for pre-historic OMSA versions
259 * More fine-grained reporting of temperature warnings for enclosure
261 * Max/min temperature limits for enclosure temp probes are reported in
263 * Report enclosure temperature probes that are "Inactive" as ok
264 * Don't try to print out the reading of enclosure temperature probes
265 if the reading doesn't exist or is not an integer
266 * Report enclosure EMMs that are "Not Installed" as ok, instead of
268 * Corrected typo in the PNP4Nagios template
274 * Remove reporting of which controller a logical drive is "attached"
275 to, since this information can't be reliably extracted via SNMP.
276 * Avoid collecting Lun ID via SNMP for virtual disks, we don't use it
277 * Report total memory and number of dimms in the ok output
278 * Difference in reporting if amperage probes have discrete readings
279 * Workaround for broken amperage probes
280 * Added workaround for bad temperature probes that yields no reading
282 * Get OMSA version via SNMP slightly more efficiently
288 * Added robustness for received SNMP values that are not defined in
289 the MIB. Instead of throwing a perl warning when this happens, the
290 plugin will not report the undefined value.
291 * Defined "Replacing" as a defined state for physical disks in SNMP
292 mode, even though this state is not defined in the MIB. It is
293 reported as such by omreport.
294 * Physical disk brand/model is now reported when the state of the disk
295 is "Rebuilding" or "Replacing".
296 * The state of a physical disk is reported in parentheses when
297 predictive failure is detected. It is useful to know if a disk is
298 online, offline, spare or even failed when predictive failure is
300 * Handling of physical disk predictive failure has been improved
302 * Refactoring of the perfdata code. In conformance with the plugin
303 development guidelines, the UOM (unit of measure) previously
304 reported in the perfdata output has been removed.
305 * The -p or --perfdata option now
306 takes an optional agrument 'minimal', which triggers shorter names
307 for the perfomance data labels. This shortens the output and is a
308 workaround for systems where the amount of output exceeds the 1024
310 * The PNP4Nagios template has been updated. Users of check_openmanage
311 and PNP4Nagios are advised to upgrade. This version of
312 check_openmanage needs the new template.
313 * Lots of other small improvements and updates.
319 * New option '--use-get_table' is added as a workaround for SNMPv3 on
320 Windows using net-snmp. This option will make check_openmanage use
321 the Net::SNMP function get_table() instead of get_entries() to
322 collect information via SNMP.
323 * Include a blacklisting option 'ctrl_pdisk' which takes the
324 controller number as argument. This blacklisting option only works
325 with omreport and is a workaround for broken disk firmwares that
326 contain illegal XML characters. These characters makes openmanage
327 barf and exit with an error. Patch from Bas Couwenberg.
328 * If the blacklisting keyword "all" is supplied for a component type,
329 that component type is not checked at all, i.e. the commands are
330 never executed. This will make check_openmanage execute faster if
331 blacklisting is heavily used.
332 * Option '--htmlinfo' now has a shorter equivalent '-I'
333 * The option '--short-state' now has a shorter equivalent '-S'
339 * Fixed an SNMP bug where the plugin didn't handle OID indexes that
340 were not sequential. Thanks to Gianluca Varenni for reporting.
341 * Fixed an SNMP bug when checking old hardware such as the PE 2650 and
342 PE 750. The controller id for physical drives were collected and
343 displayed incorrectly. This release uses an additional OID to fetch
344 this info, which would otherwise be unavailable. Thanks to Gianluca
345 Varenni for reporting this bug.
346 * Should use %snmp_probestatus, not %snmp_status when checking the
347 status of voltage probes. Thanks to Ken McKinlay for a patch.
348 * Fix when identifying blades via SNMP with very old OMSA
349 versions. Patch from Ken McKinlay.
350 * Better way of finding the ID of physical drives via SNMP
356 * Added support for storport driver version for controllers, only
357 applicable on servers running Windows. A new blacklisting keyword
358 for suppressing storport driver messages was added.
359 * The "all" keyword in blacklisting is now case insensitive.
360 * More fine-grained reporting in the rare case where a controller
361 battery fails during learning and charging states.
362 * New improved way of reporting perl warnings during execution of the
369 * Fix for path to omreport on Linux with OMSA 6.2.0
370 * A couple of other small fixes
376 * Fix for undefined device name for logical drives (thanks to Pontus
378 * Fixed a bug in the PNP4Nagios template, that prevented the template
379 from working with PNP4Nagios 0.6. Thanks to the PNP4Nagios team for
386 * CPU type, family etc. are now reported in case of a CPU failure (and
388 * The debug output now reports Openmanage version and plugin version
394 * New option '-a' or '--all' turns on checking of everything
395 * The manual page (POD info) is removed from the script and is now in
396 a separate file, to make check_openmanage fully ePN compatible
397 * ePN is no longer disabled by default, check_openmanage no longer has
398 an opinion on whether it should run under ePN or not
399 * The '-m' or '--man' option is no longer available
400 * The option '-v' or '--verbose' is renamed to '-d' or '--debug',
401 which makes more sense wrt. its usage
402 * The '-g' or '--global' option is removed. Checking the global health
403 status is now default if applicable
404 * Checking intrusion detection is now turned on by default
405 * The obsolete option '--snmp' is removed
406 * The option '--state' now has a shorter equivalent '-s'
407 * The basename stuff and options '--only-critical' and
408 '--only-warning' are now replaced by an option '--only'
409 * If plugin is run by Nagios, redirect stderr to stdout
410 * Added option '--omreport', that lets the user specify the full path
411 to the omreport binary
412 * Added non-8bit-legacy default search paths for omreport.exe for
414 * Minor changes to the plugin output, for consistency
415 * New blacklisting keyword 'bat_charge' disables warning messages
416 related to controller cache battery charging. Thanks to Robert
417 Heinzmann for a patch.
418 * For blacklisting, the component ID kan now be "ALL", in which all
419 components of that type is blacklisted.
420 * Man page is moved to manual section 8
426 * Fixed a bug that could cause errors and weird results when checking
427 cooling devices (fans) via SNMP. Thanks to Ken McKinlay for spotting
428 this bug and reporting it.
433 * For failed physical drives, check_openmanage will now output the
434 drive's vendor, model and size in GB or TB.
439 * The -s|--snmp option was redundant and no longer does anything. SNMP
440 is triggered automatically if the -H|--hostname option is
441 present. The -s|--snmp option is kept for compatibility, but has no
447 * Added support for performance data (temperatures) from attached
448 storage enclosures such as the MD1000
453 * Fixed a regression in the --htmlinfo option when it is not supplied
459 * New option --htmlinfo adds clickable HTML links in the plugin's
465 * Fixed a regression bug in CPU and power supply reporting that only
466 affects verbose output
467 * If blacklisting is used, the global health check (via the --global
468 option) is now negated. Checking the global health doesn't make
469 sense when one or more components is blacklisted. Thanks to Rene
470 Beaulieu for reporting this bug
471 * The PNP4Nagios template is now included in the tarball and zip
477 * Improved memory error reporting, when using omreport
478 * Collect performance data from pwrmonitoring (amperage probes) that
479 were previously ignored when using omreport
484 * Improved memory error reporting, when using SNMP
485 * Other small ehnancements
490 * The plugin is now compatible with the Nagios embedded Perl
491 interpreter (ePN) in theory. However, the plugin will not not use
492 ePN by default. We don't want any "accidents".
493 * License is now GPLv3, previously only specified as "GPL"
494 * New options --only-critical and --only-warning. With these options
495 the plugin will only print critical or warning alerts, respectively.
496 * Bugfixes and speed enhancements in the storage section, when
497 checking enclosure components via omreport
498 * The --okinfo option is now less verbose and more to the point
499 * Lots of code refactoring for readability, maintainability and
505 * Fixed a bug in the storage section, when checking controllers. This
506 is an obscure bug that only manifests itself in the odd case where a
507 server has multiple controllers, and one of the controllers are
508 missing some of the OIDs, in which case these OIDs will be missing
509 for the other controllers as well. The change is minor and only
510 includes using get_table() instead of get_entries() to collect the
511 SNMP result. Thanks to Stephan Bovet for reporting this bug.
516 * The --perfdata option can now optionally take an argument
517 "multiline", which makes the plugin produce multiline performance
518 data output in a Nagios 3.x way. Not really needed, but the plugin
520 * Added comment within the 10 first lines to disable the nagios
521 embedded perl (ePN) interpreter by default for Nagios 3.x
522 * Improvements in the performance data output. Units are now included
527 * Added --global option, which turns on checking of everything. If
528 used with SNMP, the global system health status is also probed, to
529 protect the user against bugs in the plugin. If used with omreport,
530 the overall chassis health is used.
531 * Support for SNMP version 3
532 * New check added: esmhealth. This checks the overall health of the
533 ESM log, i.e. the fill grade. More than 80% means a warning message
534 * Fixed alert log reporting to use the same format as for the ESM log
535 * Output messages are now sorted by severity
536 * Minor changes in how out-of-date controller firmware/driver is
538 * Code refactoring and cleanup
543 * Use "omreport about" to collect OMSA version. Slightly faster than
544 "omreport system version". This should give a small speedup in
545 certain configurations
546 * Fixed typo in output when a logical drive is rebuilding. Thanks to
547 Andreas Olsson for reporting
548 * Improved reporting of ESM log content
549 * Added omreport.sh as alternate omreport path
550 * Lots of other small fixes and enhancements
552 Plus: A few changes to make the plugin work with old PowerEdge models
553 (e.g. 2550, 2450) and/or old OMSA versions (e.g. version 4.5):
555 * Use the chassisModelName OID to determine if SNMP works (instead of
557 * No longer require a response when checking baseboard type via
558 SNMP. If there is no response, we assume that we're not dealing with
561 Thanks to Christian McHugh for help with testing and debugging this
567 * Use 'omreport system operatingsystem' to collect OS info, instead of
568 'omreport system' version which is incredibly slow. This should speed
569 things up in certain configurations.
570 * A few speedups, don't collect information that isn't needed
576 * New option --linebreak to specify the separator between line in case
578 * Added support for 64bit Windows. Thanks to Patrick Hemmen for a patch
579 * [Patrick Hemmen] Added install.bat for Windows installation
580 * [Patrick Hemmen] Improvements on install.sh. Will now install in
581 /usr/lib64 for x86_64
582 * RPMs are now architecture dependent, because of different libdir
587 * New option -o|--ok-info to display extra information when everything
588 is ok. The plugin can now display storage firmware and driver info,
589 DRAC and BMC firmware, and OMSA version
590 * Support for setting custom minimum temperature thresholds via the
591 -c|--critical and -w|--warning options
592 * Better and more detailed temperature error reporting
593 * Bugfix in the amperage report (including performance data). The
594 plugin now takes into account the correct unit and measurement for
595 amperage probes (other than watts)
596 * New option --port lets the user specify the remote SNMP port number
601 * Regression fix: Use the older Processor Device SNMP OIDs for older
602 PowerEdge models, that don't have the new Processor Device Status
603 OIDs. Thanks to Nicole Hähnel for reporting this bug.
604 * Default output (when there are no alerts) now shows RAC firmware,
605 BMC firmware, info about controllers and enclosures (firmware,
611 * Regression fix: Ignore unoccupied CPU slots with SNMP probing. This
612 fixes a bug introduced in versjon 3.2.1, which would output
613 something like this if one or more CPU slots were empty: CPU 1 needs
619 * Use Processor Device Status Table OIDs instead of Processor Device
620 Table when checking CPUs via SNMP
621 * Bugfix: don't report throttled CPUs as warnings when checking via
622 SNMP (same as for checking locally)
627 * New options --state and --short-state for displaying service state
629 * Lots of small fixes for code readability and maintainability
634 * Support for running natively on Windows (using omreport.exe). Thanks
635 to Peter Jestico for a patch.
636 * Support for compiled Windows version, i.e. check_openmanage.exe is
637 now a legal script name.
638 * Exit with error if script basename is illegal/unknown
639 * Various small fixes
644 * Use of alternate basenames for checking only one class of components
645 * Added support for checking the ESM log via SNMP
646 * Code refactoring for robustness and maintainability
647 * Numerous small fixes and enhancements
648 * Added install script in distribution tarball
653 * The script no longer aborts if it can't get system information via
654 SNMP. Give a warning instead, as this is not a critical error
655 * Increased robustness when checking controllers
660 * Man page fix in the 'check' section. Thanks to Ansgar Dahlen for
662 * Allow invalid command error from 'omreport chassis pwrmonitoring'
663 * Various small fixes
668 * Use unique IDs for storage components with regard to blacklisting,
669 which means that the blacklisting API has changed
670 * Added checks for storage components: connectors (channels),
671 enclosures, enclosure fans, enclosure power supplies, enclosure
672 temperature probes and enclosure management modules (EMMs)
673 * Improved verbose output
674 * New option -t|--timeout for setting the plugin timeout
675 * New option -w|--warning for setting custom temperature warning
677 * New option -c|--critical for setting custom temperature critical
679 * Option --check can no longer be specified in its short form (-c)
680 * Code cleanup and improvements
685 * The workaround for the OMSA bug introduced in OMSA 5.5.0 didn't take
686 multiple controllers into account. This has been fixed.
691 * New option -i|--info prefixes all alerts with the service tag
692 * New option -e|--extinfo gives and extra line of output in case of an
693 alert (model and service tag)
694 * New option --postmsg lets the user specify a post message string,
695 with info such as model, service tag etc.
696 * Options -b|--blacklist and -c|--check can now be specified multiple
697 times (actually quite useful)
702 * Slightly improved output for alerts on logical drives (vdisks)
703 * Now shows a rebuilding physical disk as a warning, as this is
704 usually accompanied by a degraded vdisk. Previous versions didn't
705 show this at all (omreport classifies it as "OK").
710 * Slightly improved output for charging controller batteries
715 * Bugfix for reporting physical drives with predictive failure (both
721 * Fix bug in option handling (ambiguous options)
722 * Slightly improved output if checking the storage subsystem is turned
724 * Don't complain if there are no logical drives. This is OK. Thanks to
725 Jamie Henderson for reporting this
730 * Fix bug in SNMP status level table
735 * Added workaround for a BUG introduced in OpenManage 5.5.0. OM
736 sometimes adds a newline in the controller driver version name,
737 which leads to problems parsing the output. Thanks to Hiren Patel
738 for bringing this to my attention.
743 * (snmp) Improved handling of cases where OM is not working properly
748 * Fixed issue where controller number for physical disks can't be
749 established via SNMP (now identifies as controller no. -1)
754 * Correctly identifies and reports error condition in which OpenManage
755 has stopped working (it happens)
761 * Same options for checking, blacklisting etc. supported with SNMP
762 * Same output with SNMP as with NRPE
767 * Collects performance data if the option '-p' or '--perfdata' is
769 * New blacklisting directives ctrl_fw and ctrl_driver
770 added. Suppresses the "special" warning messages concerning outdated
771 controller firmware and driver. Useful if you can't or won't
777 * Fix getting system model and serial number for newer blades
782 * Three new checks added:
783 - System battery probes (typical CMOS battery). Newer poweredge
785 - Power consumption monitoring (if the server supports it)
786 - ESM log, with same functionality as the alert log check. Disabled
792 * Internal refactoring: use ssv-formatted output from openmanage,
793 resulting in slightly faster execution and increased robustness.
794 * If /usr/bin/omreport doesn't exist, try
795 /opt/dell/srvadmin/oma/bin/omreport.
796 * Allow for no instrumented/redundant power supplies. Needed on
797 low-end poweredge models and blades.
802 * Openmanage reports non-critical warning about throttled CPUs on new
803 hardware models. Most og us use ondemand CPU frequency scaling (with
804 throttled CPUs as a result). This specific non-critical warning (CPU
805 Throttled) is ignored from now on.
806 * Remove superfluous Celcius sign when reporting temperatures.
811 * Accommodate blade systems with no fans or powersupplies, i.e. accept
812 errors from omreport when trying to check fans or powersupplies on
814 * Accommodate newer hardware with slightly different omreport
815 options. Use the newer options if they exist. Not really necessary
816 yet, but deprecated options may be removed in future versions of
822 * When everything is OK, check_openmanage now outputs the same info as
823 Gerhard Lausser's excellent check_hpasm plugin does for HP servers:
825 OK - System: 'poweredge 2850', S/N: 'XXXXXXX', ROM: 'A06
826 10/03/2006', hardware working fine, 2 logical drives, 4 physical