Last updated on September 19, 2020 by Sarmed Rahman
In the previous tutorial, we have seen how we can set up Nagios Remote Plugin Executor (NRPE) in an existing Nagios setup. However, the scripts and plugins needed to monitor memory usage do not come with stock Nagios. In this tutorial, we will see how we can configure NRPE in Nagios to monitor RAM usage of a remote server.
The script that we will use for monitoring RAM is available at Nagios Exchange, as well as the creators' Github repository.
Assuming that NRPE has already been set up, we start the process by downloading the script in the server that we want to monitor.
# cd /usr/lib/nagios/plugins/ # wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl # mv check_mem.pl check_mem # chmod +x check_mem
# cd /usr/lib64/nagios/plugins/ (or /usr/lib/nagios/plugins/ for 32-bit) # wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl # mv check_mem.pl check_mem # chmod +x check_mem
You can check whether the script generates output properly by manually running the following command on localhost
. When used with NRPE, this command is supposed to check free memory, warn when free memory is less than 20%
, and generate critical alarm when free memory is less than 10%
.
# ./check_mem -f -w 20 -c 10
OK - 34.0% (2735744 kB) free.|TOTAL=8035340KB;;;; USED=5299596KB;6428272;7231806;; FREE=2735744KB;;;; CACHES=2703504KB;;;;
If you see something like the above as an output, that means the command is working okay.
Now that the script is ready, we define the command to check RAM usage for NRPE. As mentioned before, the command will check free memory, warn when free memory is less than 20%
, and generate critical alarm when free memory is less than 10%
.
# vim /etc/nagios/nrpe.cfg
command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10
command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10
command[check_mem]=/usr/lib64/nagios/plugins/check_mem -f -w 20 -c 10
In the Nagios server, we define a custom command for NRPE. The command can be stored in any directory within Nagios. To keep the tutorial simple, we will put the command definition in /etc/nagios
directory.
# vim /etc/nagios3/conf.d/nrpe_command.cfg
define command{ command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$' -c '$ARG1$' }
# vim /etc/nagios/objects/nrpe_command.cfg
define command{ command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
# vim /etc/nagios/objects/nrpe_command.cfg
define command{ command_name check_nrpe command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Now we define the service check in Nagios.
# vim /etc/nagios3/conf.d/nrpe_service_check.cfg
define service{ use local-service host_name remote-server service_description Check RAM check_command check_nrpe!check_mem }
# vim /etc/nagios/objects/nrpe_service_check.cfg
define service{ use local-service host_name remote-server service_description Check RAM check_command check_nrpe!check_mem }
Finally, we restart the Nagios service.
# service nagios3 restart
# service nagios restart
# systemctl restart nagios.service
Nagios should start checking RAM usage of a remote-server using NRPE. If you are having any problem, you could check the following.
5666
.
check_nrpe
command: /usr/lib/nagios/plugins/check_nrpe -H remote-server
check_mem
command manually: /usr/lib/nagios/plugins/check_nrpe -H remote-server –c check_mem
debug=1
in /etc/nagios/nrpe.cfg
. Restart the NRPE service and check the log file /var/log/messages
(RHEL/CentOS) or /var/log/syslog
(Debain/Ubuntu). The log files should contain relevant information if there is any configuration or permission errors. If there are not hits in the log, it is very likely that the requests are not reaching the remote server due to port filtering at some point.
To sum up, this tutorial demonstrated how we can easily tune NRPE to monitor RAM usage of remote servers. The process is as simple as downloading the script, defining the commands, and restarting the services. Hope this helps.
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean