NRPE Implementations
Very short introduction to NRPE
NRPE stands for Nagios Remote Plugin Executor and allows, as the name implies, the execution of Nagios Plugins remotely. That's very handy when you need to perform checks on a machine that for some reason you can't perform remotely.
The way NRPE works is very simple: it receive a remote request to execute a command
from check_nrpe
(a plugin you can find in the Nagios Plugins) and
executes the executable of the command locally, returning its results to check_nrpe
.
JNRPE
NRPE is great and works in many cases. But what if you would like to run a check written with the JAVA language? NRPE will launch the plugin as an external executable starting a new JAVA VM instance for each java check to be run. It's easy to imagine how fast that will drain your server memory if you run more than a couple of checks.
That's the issue JNRPE (Java NRPE) tries to resolve. When a plugin is installed into the JNRPE Server, it becomes part of it and shares the same JVM JNRPE uses. This way only one JVM instance will be used to execute all the java plugins.
It supports the NRPE protocol, so you can seamlessly replace NRPE with JNRPE. You will only need to adapt your NRPE Commands configuration to the JNRPE Commands configuration
jNRPE
jNRPE gives the ability to write Nagios Plugins in javascript and invoke them remotely by using check_nrpe
.
The plugins are dynamically loaded by jNRPE avoiding the instantiation of a new JavaScript Engine for each plugin
execution.
NRPE++
NRPE++ is just a C++ implementation of NRPE using the great Boost.Asio library.