The EM01B WebSensor from Esensor (http://www.eesensors.com/websensor.html) provides Temperature, Humidity, and Illumination values to Nagios.
Friday, May 4. 2007
Configuring eSensors with Nagios
Download the source code for the Nagios plugin from http://www.nagiosexchange.org/Environmental.60.0.html?&tx_netnagext_pi1[p_view]=13 and place it into the /usr/src directory. Unzip it to a directory called esensors. Change into /usr/src/esensors/c and run:
gcc check_em01.c -o check_em01 cp check_em01 /usr/local/nagios/libexec/
Ignore the warnings.
Add the following llnes to /usr/local/nagios/etc/checkcommands.cfg:
# 'check_temp' command definition define command{ command_name check_temp command_line $USER1$/check_em01 $HOSTADDRESS$ T $ARG1$ $ARG2$ $ARG3$ $ARG4$ } # 'check_humidity' command definition define command{ command_name check_humidity command_line $USER1$/check_em01 $HOSTADDRESS$ H $ARG1$ $ARG2$ $ARG3$ $ARG4$ } # 'check_light command definition define command{ command_name check_light command_line $USER1$/check_em01 $HOSTADDRESS$ I $ARG1$ $ARG2$ $ARG3$ $ARG4$ }
Create a file named /usr/local/nagios/etc/srvc_esensor.cfg with the following content:
############################################################################### # # Configuration file for eSensor Devices # # Last Modified: 2006-06-08 # ################################################################################ ################################################################################ # SERVICE DEFINITIONS ################################################################################ # Generic service definition template define service{ name generic-esensor ; Referenced in other service definitions active_checks_enabled 1 ; Active service checks are enabled passive_checks_enabled 1 ; Passive service checks are enabled/accepted parallelize_check 1 ; Active service checks should be parallelized obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 0 ; Default is to NOT check service 'freshness' notifications_enabled 1 ; Service notifications are enabled event_handler_enabled 1 ; Service event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 0 ; Retain non-status information across program restarts register 0 ; DONT REGISTER THIS DEFINITION is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 5 retry_check_interval 1 contact_groups sensor-admins notification_interval 30 notification_period 24x7 notification_options d,u,r } # check temp service definition template define service{ use generic-esensor name etemp-service ; Referenced in other service definitions register 0 ; DONT REGISTER THIS DEFINITION service_description Temperature check_command check_temp!2!110!1!120 } # check humidity service definition template define service{ use generic-esensor name ehum-service ; Referenced in other service definitions register 0 ; DONT REGISTER THIS DEFINITION service_description Humidity check_command check_humidity!2!90!1!99 } # check light service definition template define service{ use generic-esensor name eillum-service ; Referenced in other service definitions register 0 ; DONT REGISTER THIS DEFINITION service_description Illumination check_command check_light!2!600!1!700 }
Add the following line to /usr/local/nagios/etc/nagios.cfg:
cfg_file=/usr/local/nagios/etc/srvc_esensor.cfg
Create a file called /usr/local/nagios/etc/examplecom/em01.cfg with the following content:
define host{ use generic-host host_name em01 alias Heat, Humidity and Illumination tests address 10.1.6.30 } define hostgroup{ hostgroup_name Esensors alias Esensors HVAC sensor members em01 } define servicegroup{ servicegroup_name esensors alias Enviromental Monitoring members em01,Temperature members em01,Humidity members em01,Illumination } define service { use etemperature-service host em01 check_command check_temp!60!80!50!85 } define service { use ehumidity-service host em01 } define service { use eillumination-service host em01 }
As a side note, I think I'm going to process esensor output with something else. Here is a brief regular expression in a perl file called 'em.pl' to handle the output:
use strict; my $a = <STDIN>; $a =~ m/TF:[ ]*(\d+\.\d+).*HU:[ ]*(\d+\.\d+).+IL[ ]*(\d+\.\d+)/; print "$1, $2, $3\n";
The following command line generates three values (using the tool 'curl' to obtain the current values):
echo `curl -s http://bmem01/index.html?em123456` | perl em.pl