I had this error on nagios for the longest time. “NRPE: Command ‘check_disk_root’ not defined” This problem server, called derp is running NRPE under xinetd. Today I solved the issue!
Big thanks to this answer on stackoverflow. In this answer by Jim Black, Jim says,
“Be sure you killed off all the old daemons, including any forks.”
Jim Black
BAM, that was my issue; old nrpe daemons were running in the background. I identified this with a quick netstat -a | grep nrpe
which returned
tcp 0 0 *:nrpe *:* LISTEN
Updating the nrpe config file and restarting xinetd had no effect on the check_disk_root command being recognized, because the nrpe daemon never actually restarted. I thought for sure the NRPE daemon was not sourcing the correct config file, but this was not the case.
There was a big clue I didn’t pick up on that would have identified the issue:
On derp I ran, service xinetd stop
then on the nagios server I ran,
/usr/local/nagios/libexec/check_nrpe -c check_disk_root -H derp
and NRPE on derp returned, NRPE: Command 'check_disk_root' not defined
Hello! NRPE should not have returned anything at all because we shut it down moments ago with service xinetd stop
! I pkilled the stubborn daemon with pkill /usr/local/nagios/bin/nrpe
.
Back on the nagios server ran,
/usr/local/nagios/libexec/check_nrpe -c check_disk_root -H derp
Connection refused by host
. There we go! Is it really dead? I have to see the NRPE daemon’s lifeless, mutilated body, I must see it after all the grief it’s put me through! netstat -a | grep nrpe
returns nothing. MWAHAHAHAHAaa! I killed it! It’s dead!
Now all that was left to do was bring it back to life with a service xinetd start
and try running again
/usr/local/nagios/libexec/check_nrpe -c check_disk_root -H derp
on the nagios server.
DISK OK - free space: / 18392 MB (59% inode=93%);| /=12309MB;22400;28800;0;32001
is returned. Cool beans!