CHECK_OPENMANAGE(8)
β¨ NAME β¨
okay bestie, meet check_openmanage(8) β the Nagios plugin for checking hardware status on Dell servers running OpenManage. literally its whole job is making sure your Dell server's hardware isn't doing a silent little meltdown π
π¦ SYNOPSIS π¦
check_openmanage [option...]
check_openmanage -H hostname [option...]
π DESCRIPTION π
So check_openmanage is a plugin for Nagios, and it checks the hardware health of Dell servers running OpenManage Server Administrator (OMSA). It's giving full hardware vibe check: storage subsystem, power supplies, memory modules, temperature probes etc., and it gives an alert if any of those components are faulty or operating outside normal parameters. no cap, it's the friend who notices the weird noise in the walls π«Ά
It's designed to be used either locally (using NRPE or similar) or remotely (using SNMP). In either mode, the output is (nearly) the same. Just know that checking the alert log is not supported in SNMP mode, bestie β that's the one little boundary.
heads up: alert log checking? not an SNMP-mode thing. do not ask her there π
π GENERAL OPTIONS π
-f,--configfile β Specify a configuration file. For reference on the config file syntax and options, consult thecheck_openmanage.conf(5)manual page. slay, documentation within documentation β¨-t,--timeoutseconds β The number of seconds after which the plugin will abort. Default timeout is30seconds if the option is not present.-p,--perfdata[argument] β Collect performance data. Performance data collected includes temperatures (in Celsius) and fan speeds (in rpm). On systems that support it, power consumption is also collected (in Watts). This option takes one of two arguments, both of which are optional:minimalβ Ifminimalis specified as argument, the plugin will use shorter names for the performance data labels, e.g.t0instead oftemp_0_system_board_ambient. This can be used as a workaround in cases where the plugin output needs shortening, for example if the1024character limit of NRPE is reached. tiny labels, big relief πmultilineβ Ifmultilineis specified as argument, the plugin will output the performance data on multiple lines, for Nagios3.xand above.
The default behaviour should be sufficient for most users. lowkey the default is usually the move.
--legacy-perfdataβ With version3.7.0, performance data output changed. The new format is not compatible with the old format. Users who wish to postpone switching to the new performance data API may set this option. it's giving "keep the old UI, I'm not ready" π-w,--warningstring | file β Override the machine-default temperature warning thresholds. Syntax is:
id1=max[/min],id2=max[/min],...
The following example sets warning limits to max 50C for probe 0, and max 45C and min 10C for probe 1:
check_openmanage -w 0=50,1=45/10
The minimum limit can be omitted, if desired. Most often, you are only interested in setting the maximum thresholds. same, honestly β max thresholds are the main character here π₯
This parameter can be either a string with the limits, or a file containing the limits string. The option can be specified multiple times.
NOTE: This option should only be used to narrow the field of OK temperatures wrt. the OMSA defaults. To expand the field of OK temperatures, increase the OMSA thresholds. See the plugin web page for more information. do not use this to make the OK zone bigger, bestie β that's not what she's for π¨
-c,--criticalstring | file β Override the machine-default temperature critical thresholds. Syntax and behaviour is the same as for warning thresholds described above.-F,--fahrenheitβ Set Fahrenheit as unit for all temperatures. This option will override the--tempunitoption, if used simultaneously. Fahrenheit said "I'm the main character now" π‘οΈ--tempunitunit β Set temperature unit. Legal values are:F: FahrenheitC: CelsiusK: KelvinR: Rankine
Default: C
--omreportpath β Specify full path toomreport, if it is not installed in any of the regular places. Usually this option is only needed on Windows, ifomreportis not installed on theC:drive. Windows girlies, this one's for you πͺ--vdisk-criticalβ Make any alerts concerning virtual disks appear as critical. virtual disk drama gets the critical treatment, periodt π-d,--debugβ Debug output. Will report status on everything, even if status is ok. Blacklisted or unchecked components are ignored (i.e. no output).
NOTE: This option is intended for diagnostics and debugging purposes only. Do not use this option from within Nagios, i.e. in the Nagios config. bestie do NOT leave this on in production, I'm begging π
-h,--helpβ Display help message and exit.-V,--versionβ Print version info and exit.
π OUTPUT OPTIONS π
-o,--ok-infolevel β This option lets you define how much output you want the plugin to give when everything is OK, i.e. the verbosity level. The default value is0(one line of output). The output levels are cumulative.0: Only one line1: BIOS and firmware info on a separate line2: Storage controller and enclosure info on separate lines3: OMSA version on separate line
Default: 0
The reason that OMSA version is separated from the rest is that finding it requires running a really slow omreport command, when the plugin is run locally via NRPE. slow command = separate line, makes sense π
-B,--show-blacklistβ If used together with blacklisting, this option will make the plugin output all blacklistings that are being used. The output will have the correct blacklisting syntax, and will make it easy to maintain control over which blacklistings that are used for each server, as any blacklistings can be viewed from Nagios.
When blacklisting is not used, this option has no effect. no blacklist, no effect β she's not doing extra for nothing π
-i,--infoβ Prefix any alerts with the service tag. putting the service tag first like a little name tag π·οΈ-e,--extinfoβ Display a short summary of system information (model and service tag) in case of an alert.-I,--htmlinfo[code] β Using this option will make the servicetag and model name into clickable HTML links in the output. The model name link will point to the official Dell documentation for that model, while the servicetag link will point to a website containing support info for that particular server.
This option takes an optional argument, which should be a country or area code or. If the country code is omitted the servicetag link will still work, but it will not be specific for your country or area. Example for Germany:
check_openmanage --htmlinfo de
If this option is used together with either the --extinfo or --info options, it is particularly useful. Only the most common country codes are supported at this time:
- Europe, Middle East and Africa (EMEA)
at: Austriabe: Belgiumcz: Czech Republicde: Germanydk: Denmarkes: Spainfi: Finlandfr: Francegr: Greeceit: Italyil: Israelme: Middle Eastno: Norwaynl: The Netherlandspl: Polandpt: Portugalru: Russiase: Swedenuk: United Kingdomza: South Africa
- America
br: Brazilca: Canadamx: Mexicous: USA
- Asia / Pacific
au: Australiacn: Chinain: Indiajp: Japan
--postmsgstring | file β User specified post message. Useful for displaying arbitrary or various system information at the end of alerts. The argument is either a string with the message, or a file containing that string. You can control the format with the following interpreted sequences:%m: System model%s: Service tag%b: BIOS version%d: BIOS release date%o: Operating system name%r: Operating system release%p: Number of physical drives%l: Number of logical drives%n: Line break. Will be a regular line break if run from a TTY, else an HTML line break.%%: A literal%
custom message at the end? cute little sign-off energy π
-s,--stateβ Prefix each alert with its corresponding service state (i.e. warning, critical etc.). This is useful in case of several alerts from the same monitored system. label the drama, bestie π·οΈ-S,--short-stateβ Same as the--stateoption above, except that the state is abbreviated to a single letter (W=warning,C=critical etc.). tiny state letters, maximum efficiency β‘--hide-servicetagβ This option will replace the servicetag (serial number) in the output withXXXXXXX. Use this option to suppress or censor the servicetag in the plugin output. privacy era activated πΆοΈ--linebreakstring βcheck_openmanagewill sometimes report more than one line, e.g. if there are several alerts. If the script has a TTY, it will use regular linebreaks. If not (which is the case with NRPE) it will use HTML linebreaks. Sometimes it can be useful to control what the plugin uses as a line separator, and this option provides that control.
The argument is the exact string to be used as the line separator. There are two exceptions, i.e. two keywords that translates to the following:
REG: Regular linebreaks, i.e.\n.HTML: HTML linebreaks, i.e.<br/>.
This is a rather special option that is normally not needed. The default behaviour should be sufficient for most users. very niche, very demure, very "you'll know if you need it" β¨
β¨ SNMP OPTIONS β¨
okay so if you're doing SNMP things, this is your section, bestie π
-H,--hostnamehostname β the transport address of the destination SNMP device. Using this option triggers SNMP mode. periodt.-P,--protocolprotocol-number β SNMP protocol version. This option is optional and expects either of the following:1: SNMP version 12,2c: SNMP version 2c3: SNMP version 3
Default: 2c
--portport-number β SNMP port of the remote (monitored) system. Defaults to the well-known SNMP port161.-6,--ipv6β this option will cause the plugin to use IPv6. The default is IPv4 if the option is not present.--tcpβ this option will cause the plugin to use TCP as transport protocol. The default is UDP if the option is not present.--snmp-timeoutseconds β this option sets the timeout for the SNMP object of theNet::SNMPperl module. Legal values are between1and60seconds, and the default is5seconds if the option is not present. Note that there is one retry (with the same timeout) before the SNMP object times out completely. For an unresponsive SNMP server, you'll see that the plugin times out with an SNMP error after10seconds if the5second default is used.
This option is usually not needed. The default timeout of 5 seconds is more than sufficient in most cases. π«Ά
-U,--usernamesecurityname β[SNMPv3]the User-based Security Model (USM) used by SNMPv3 requires that asecurityNamebe specified. This option is required when using SNMP version 3, and expects a string1to32octets in length.--authpasswordpassword,--authkeykey β[SNMPv3]by default asecurityLevelofnoAuthNoPrivis assumed. If the--authpasswordoption is specified, thesecurityLevelbecomesauthNoPriv. The--authpasswordoption expects a string which is at least1octet in length as argument.
Optionally, instead of the --authpassword option, the --authkey option can be used so that a plain text password does not have to be specified in a script. The --authkey option expects a hexadecimal string produced by localizing the password with the authoritativeEngineID for the specific destination device. The snmpkey utility included with the Net::SNMP distribution can be used to create the hexadecimal string. See snmpkey(1) for more information.
--authprotocolalgorithm β[SNMPv3]two different hash algorithms are defined by SNMPv3 which can be used by the Security Model for authentication. These algorithms are HMAC-MD5-96 βMD5β (RFC 1321) and HMAC-SHA-96 βSHA-1β (NIST FIPS PUB 180-1). The default algorithm used by the plugin is HMAC-MD5-96. This behavior can be changed by using this option. The option expects either the stringmd5orshato be passed as argument to modify the hash algorithm.--privpasswordpassword,--privkeykey β[SNMPv3]by specifying the options--privkeyor--privpassword, thesecurityLevelassociated with the object becomesauthPriv. According to SNMPv3, privacy requires the use of authentication. Therefore, if either of these two options are present and the--authkeyor--authpasswordarguments are missing, the creation of the object fails. The--privkeyand--privpasswordoptions expect the same input as the--authkeyand--authpasswordoptions respectively.--privprotocolalgorithm β[SNMPv3]the User-based Security Model described in RFC 3414 defines a single encryption protocol to be used for privacy. This protocol, CBC-DES βDESβ (NIST FIPS PUB 46-1), is used by default or if the stringdesis passed to the--privprotocoloption. TheNet::SNMPmodule also supports RFC 3826 which describes the use of CFB128-AES-128 βAESβ (NIST FIPS PUB 197) in the USM. The AES encryption protocol can be selected by passingaesoraes128to the--privprotocoloption.
One of the following arguments are required: des, aes, aes128, 3des, 3desde
--use-get_tableβ this option exists as a workaround when usingcheck_openmanagewith SNMPv3 on Windows with net-snmp. Using this option will makecheck_openmanageuse theNet::SNMPfunctionget_table()instead ofget_entries()while fetching values via SNMP. The latter is faster and is the default.
π« BLACKLISTING π«
-b,--blackliststring | file β blacklist missing and/or failed components, if you do not plan to fix them. The parameter is either the blacklist string, or a file (that may or may not exist) containing the string. The blacklist string contains component names with component IDs separated by slash/. Blacklisted components are left unchecked. π
TIP: use the option-dor--debugto get the blacklist ID for devices. The ID is listed in a separate column in the debug output.
NOTE: if blacklisting is in effect, the global health of the system is not checked. π
Syntax:
component1=id1[,id2,...]/component2=id1[,id2,...]/...
The ID part can also be all, in which all components of that type is blacklisted.
Example:
check_openmanage -b ps=0/fan=3,5/pdisk=1:0:0:1/ctrl_driver=all
In the example we blacklist powersupply 0, fans 3 and 5, physical disk 1:0:0:1, and warnings about out-of-date drivers for all controllers. Legal component names include:
ctrlβ Storage controller. Note that if a controller is blacklisted, all components on that controller (such as physical and logical drives) are blacklisted as well.ctrl_fwβ suppress the special warning message about old controller firmware. Use this if you can not or will not upgrade the firmware.ctrl_driverβ suppress the special warning message about old controller driver. Particularly useful on systems where you can not upgrade the driver.ctrl_stdrβ suppress the special warning message about old Storport driver on Windows.ctrl_pdiskβ this blacklisting keyword exists as a possible workaround for physical drives with bad firmware which makes Openmanage choke. It takes the controller number as argument. Use this option to blacklist all physical drives on a specific controller. This blacklisting keyword is only available in local mode, i.e. not with SNMP.pdiskβ Physical disk.pdisk_certβ suppress warning message about non-certified physical disk.pdisk_foreignβ suppress warning message about foreign physical disk.vdiskβ Logical drive (virtual disk).batβ Controller cache battery.bat_chargeβ ignore warnings related to the controller cache battery charging cycle, which happens approximately every40-90days on Dell servers. Note that using this blacklist keyword makescheck_openmanageignore non-critical cache battery errors.connβ Connector (channel).enclβ Storage enclosure.encl_fanβ Enclosure fan.encl_psβ Enclosure power supply.encl_tempβ Enclosure temperature probe.encl_emmβ Enclosure management module (EMM).dimmβ Memory module.fanβ Chassis fan.psβ Power supply.tempβ Temperature sensor.cpuβ Processor (CPU).voltβ Voltage probe.bpβ System battery.ampβ Amperage probe (power consumption monitoring).intrβ Intrusion detection sensor.sdβ SD card
β¨ CHECK CONTROL β¨
--no-storageβ turns off storage checking entirely. It's literally just a glow-up alias for--check storage=0, same energy, shorter name π--onlykeyword β bestie, this is the "one thing at a time" girlie option. It makescheck_openmanagecheck and/or report on exactly one class of components, or one warning level. You can specify it once and it expects an argument. Here's the whole menu of arguments and what each one does πcriticalβ print only critical alerts. Any warning alerts get suppressed. π€warningβ print only warning alerts. Any critical alerts get suppressed. π«£chassisβ check all chassis components and absolutely nothing else.storageβ only check storage.memoryβ only check memory modules.fansβ only check fans.powerβ only check power supplies.tempβ only check temperatures.cpuβ only check processors.voltageβ only check voltage probes.batteriesβ only check batteries.amperageβ only check power usage.intrusionβ only check chassis intrusion.sdcardβ only check SD cards.esmhealthβ only check ESM log overall health, i.e. fill grade.servicetagβ only check for a sane service tag.esmlogβ only check the event log (ESM) content.alertlogβ only check the alert log content.
--checkstring | file β okay so this one is your "what should we even look at" dial ποΈ. It lets you adjust which components get checked at all. Heads up though: this is a rougher approach than blacklisting, because blacklisting makes you specify a component id or index and this one does not. The parameter should be either a string containing the adjustments, or a file containing that string. And bestie, no errors are raised if the file does not exist β it just vibes quietly into the void π
Example:
check_openmanage --check storage=0,intrusion=1
Legal values are described below, along with the default value. Screenshot this πΈ
storageβ check storage subsystem (controllers, disks etc.). Default: ONmemoryβ check memory (dimms). Default: ONfansβ check chassis fans. Default: ONpowerβ check power supplies. Default: ONtempβ check temperature sensors. Default: ONcpuβ check CPUs. Default: ONvoltageβ check voltage sensors. Default: ONbatteriesβ check system batteries. Default: ONamperageβ check amperage probes. Default: ONintrusionβ check chassis intrusion. Default: ONsdcardβ check SD cards. Default: ONesmhealthβ check the ESM log health, i.e. fill grade. Default: ONservicetagβ check that the service tag (serial number) is sane and not empty. Default: ONesmlogβ check the ESM log content. Default: OFFalertlogβ check the alert log content. Default: OFF
π DIAGNOSTICS π
The option -d or --debug can be specified to display all monitored components. It's giving "show me everything, I want the full lore" β¨
π¦ EXIT STATUS π¦
If no errors are discovered, a value of 0 (OK) is returned. An exit value of 1 (WARNING) signifies one or more non-critical errors, while 2 (CRITICAL) signifies one or more critical errors.
The exit value 3 (UNKNOWN) is reserved for errors within the script, or errors getting values from Dell OMSA. So if you see a 3, that's not the hardware being dramatic, that's the script or OMSA itself acting up π
π BUGS AND LIMITATIONS π
Storage info is not collected or checked on very old PowerEdge models and/or old OMSA versions, due to limitations in OMSA. And ngl, the overall support on those models/versions by this plugin is not well tested. So likeβ¦ proceed with awareness, bestie π«Ά
π LICENSE AND COPYRIGHT π
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. π
π SEE ALSO π
check_openmanage.conf(5)β the config file bestie, go read itNet::SNMP(3)β the Perl module doing the SNMP heavy liftinghttp://folk.uio.no/trondham/software/check_openmanage.htmlβ the homepage, the mothership, the main character π
π«Ά AUTHORS π«Ά
Trond Hasle Amundsen <t.h.amundsen@usit.uio.no> β the icon who built all this, we stan π
And that's the whole page, bestie!! π This wascheck_openmanage, version dated05/20/2023, from theCHECK_OPENMANAGE(8)manual series β go forth and monitor those PowerEdges, you absolute legend ππ¦β¨
π¦ where this page comes from
- epel 9: nagios-plugins-openmanage 3.7.12-20.el9 Β· GPLv3+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms