I have some Solaris 11.2 storage servers which run a number of ZFS pools, I wanted to monitor these through NRPE via Nagios. To do this I needed to compile NRPE and nagios-plugins from source, this article covers how this was done.
First we’ll start with nagios-plugins, we need to download it and compile it from source. As shown below I get a copy of this with the wget command, unzip it and untar it.
wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz gunzip nagios-plugins-2.0.3.tar.gz tar -xvf nagios-plugins-2.0.3.tar
This will extract the contents into a newly created nagios-plugins-2.0.3 directory, enter this directory and try to run the configure script.
# ./configure checking for a BSD-compatible install... /usr/bin/ginstall -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/gmkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to disable maintainer-specific portions of Makefiles... yes checking build system type... i386-pc-solaris2.11 checking host system type... i386-pc-solaris2.11 checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/root/nagios-plugins-2.0.3': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.
It’s not working because in this example we don’t have GCC installed on our server yet, install it with the command below.
pkg install gcc-3
Once this completes you may still receive the same error, or you may also receive the same error if you already had GCC installed. Run the below to add the GCC to $PATH.
PATH=$PATH:/usr/bin:/usr/sbin:/usr/sfw/bin/ export $PATH
In my instance my $PATH was already /usr/bin:/usr/sbin and I wanted to add /usr/sfw/bin/ as this is where GCC was located in my installation. You can confirm your path by running “echo $PATH”.
Now that you have GCC and the $PATH has been set correctly, run the below to configure, make, and install nagios-plugins.
./configure make make install
You should be able to test by running the below command, if nagios-plugins is working correctly it should return a result of your servers disk space.
/usr/local/nagios/libexec/check_disk -w 10 -c 5 -p /
To correctly make use of this, run the below commands to create a nagios user and group which will be used later.
useradd -d /usr/local/nagios -m nagios groupadd nagios chown nagios:nagios /usr/local/nagios/ chown -R nagios:nagios /usr/local/nagios/libexec/
Now that nagios-plugins is compiled and ready to use, we’ll do the same for NRPE, download and extract it as below.
wget http://liquidtelecom.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz gunzip nrpe-2.15.tar.gz tar -xvf nrpe-2.15.tar
This will create an nrpe-2.15 directory, enter it and run the below configure command. The configure command specifies to make use of SSL, without this I found that Nagios would return handshake errors regarding SSL.
./configure --enable-ssl --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib make make install cd ./src/; make ; cd .. make install-daemon-config
Now that NRPE is installed we need to configure it, this mainly involved editing the /usr/local/nagios/etc/nrpe.cfg file and setting the allowed_hosts variable to include the IP address of your nagios server so that it is allowed to check NRPE.
Next edit /etc/services and add the below to the file.
nrpe 5666/tcp # NRPE
Now edit /etc/inet/inetd.conf and add the below to the file. Your location of tcpd may vary.
nrpe stream tcp nowait nagios /usr/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -i
Next run these commands.
inetconv inetconv -e
Confirm the service is running with this command, it also shows the output in this instance nrpe has been running since it started on the 20th of March.
svcs svc:/network/nrpe/tcp:default STATE STIME FMRI online Mar_20 svc:/network/nrpe/tcp:default
Confirm that NRPE is correctly listening on port 5666.
netstat -a | grep nrpe *.nrpe *.* 0 0 128000 0 LISTEN
Run this to enable tcp_wrappers.
inetadm -m svc:/network/nrpe/tcp:default tcp_wrappers=TRUE
You can then confirm that it has set correctly with this command.
inetadm -l svc:/network/nrpe/tcp:default
That’s it, you should now be able to monitor this server from Nagios. If you have any problems things to check are the logs on the nagios server to see what the problem may be. Ensure that you have checked the NRPE service on the Solaris server is running and listening on TCP 5666, also check any firewalls between the Nagios server and Solaris server.