version 1.11, 2006/05/03 21:01:09 |
version 1.14, 2006/05/04 02:30:29 |
|
|
#!/usr/bin/perl |
#!/usr/bin/perl -T |
# $RedRiver: check_hw_sensors,v 1.10 2006/05/03 03:31:22 andrew Exp $ |
# $RedRiver: check_hw_sensors,v 1.13 2006/05/03 22:16:42 andrew Exp $ |
######################################################################## |
######################################################################## |
# check_hw_sensors *** A nagios check for OpenBSD hw.sensors |
# check_hw_sensors *** A nagios check for OpenBSD hw.sensors |
# |
# |
# 2006.05.01 #*#*# andrew fresh <andrew@mad-techies.org> |
# 2006.05.01 #*#*# andrew fresh <andrew@mad-techies.org> |
######################################################################## |
######################################################################## |
# TODO: |
# TODO: |
# Really need to fix the documentation issue. |
# Really need real documentation. |
# |
# |
# I want the ability to just check the "status" entry that is in some output. For example the OK here: |
# I want the ability to just check the "status" entry that is in |
|
# some output. For example the OK here: |
# hw.sensors.1=esm0, CPU 1, OK, temp, 31.00 degC / 87.80 degF |
# hw.sensors.1=esm0, CPU 1, OK, temp, 31.00 degC / 87.80 degF |
######################################################################## |
######################################################################## |
use strict; |
use strict; |
use warnings; |
use warnings; |
|
|
use Data::Dumper; |
#use Data::Dumper; |
|
|
use constant NAGIOS_OUTPUT => 0; |
%ENV = (); |
|
|
|
use constant NAGIOS_OUTPUT => 1; |
|
|
use POSIX; |
use POSIX; |
use lib "/usr/local/libexec/nagios"; |
use lib "/usr/local/libexec/nagios"; |
use utils qw($TIMEOUT %ERRORS &print_revision &support); |
use utils qw($TIMEOUT %ERRORS &print_revision &support); |
|
|
sub print_help { |
sub print_help { |
print <<EOL; |
print <<EOL; |
$PROGNAME plugin for Nagios monitors sysctl hw.sensors on OpenBSD |
$PROGNAME plugin for Nagios monitors sysctl hw.sensors on OpenBSD |
$PROGNAME (-f [<FILENAME>]|(-s <hw.sensors id> -w limit -c limit)) |
$PROGNAME (-f [<FILENAME>]|(-s <hw.sensors id> -w limit -c limit)) |
|
|
Usage: |
Usage: |
-f, --filename=FILE |
-f, --filename=FILE |
FILE to load checks from (defaults to /etc/sensorsd.conf) |
FILE to load checks from (defaults to /etc/sensorsd.conf) |
-s, --sensor=ID |
-s, --sensor=ID |
ID of a single sensor. "-s 0" means hw.sensors.0. |
ID of a single sensor. "-s 0" means hw.sensors.0. |
-w, --warning=RANGE or single ENTRY |
-w, --warning=RANGE or single ENTRY |
Exit with WARNING status if outside of RANGE or if != ENTRY |
Exit with WARNING status if outside of RANGE or if != ENTRY |
-c, --critical=INTEGER |
-c, --critical=RANGE or single ENTRY |
Exit with CRITICAL status if outside of RANGE or if != ENTRY |
Exit with CRITICAL status if outside of RANGE or if != ENTRY |
|
|
-h (--help) usage help |
-h (--help) usage help |
|
|
FILE is in the same format as sensorsd.conf(5). These additional entries in the file are ignored by sensorsd(8). $PROGNAME understands the following entries: |
FILE is in the same format as sensorsd.conf(5) plus some additional |
low, high, crit, warn, crit.low, crit.high, warn.low, warn.high |
entries. These additional entries in the file are ignored by |
|
sensorsd(8). |
|
|
An ENTRY depends on the type. The descriptions in sensorsd.conf(5) can be used when appropriate, or you can use the following: |
$PROGNAME understands the following entries: |
volts_dc, fanrpm or raw - Anything that includes digits. Both the value of the check and the value of the sensor response that are not either a digit or period are stripped and then the two resultant values are compared. |
|
temp - Can be as above, but if the entry has an F in it, it compares farenheit, otherwise it uses celcius. |
|
indicator or drive - does a case sensitive match of each entry in the comma separated list and if it does not match any of the entries, it matches the status. |
|
|
|
The entries 'crit' or 'warn' (or the -c or -w on the command line) may be a RANGE or a comma separated list of acceptable values. The comma separated list of values contains a list of things that will NOT cause the status. This is possibly counterintuitive, but you are more likely to know good values than bad values. |
low, high, crit, warn, crit.low, crit.high, warn.low, warn.high |
|
|
A RANGE is a low ENTRY and a high ENTRY separated by a colon (:). It can also be low: or :high with the other side left blank to only make the single check.. |
An ENTRY depends on the type. The descriptions in sensorsd.conf(5) |
|
can be used when appropriate, or you can use the following: |
|
|
|
volts_dc, fanrpm or raw - Anything that includes digits. |
|
Both the value of the check and the value of the sensor |
|
response that are not either a digit or period are stripped |
|
and then the two resultant values are compared. |
|
|
|
temp - Can be as above, but if the entry has an F in it, |
|
it compares farenheit, otherwise it uses celcius. |
|
|
|
indicator or drive - does a case sensitive match of each |
|
entry in the comma separated list and if it does not match |
|
any of the entries, it matches the status. |
|
|
|
The entries 'crit' or 'warn' (or the -c or -w on the command line) |
|
may be a RANGE or a comma separated list of acceptable values. |
|
The comma separated list of values contains a list of things that |
|
will NOT cause the status. This is possibly counterintuitive, but |
|
you are more likely to know good values than bad values. |
|
|
|
A RANGE is a low ENTRY and a high ENTRY separated by a colon (:). |
|
It can also be low: or :high with the other side left blank to only |
|
make the single check.. |
|
|
EOL |
EOL |
|
|