It is possible to send commands to Nagios core from other systems or processes, this is known as external commands; however they do need to be enabled if you want to make use of them. These commands can be initiated through shell scripts on your host, through the browser or other APIS that you use. Commands are sent through to the nagios.cmd file which is named pipe and enabled the inter process communication. The location for this file is /var/lib/nagios3/rw and we have to ensure that the Apache process has permissions to the directory and file if we want to use these commands from the browser.
- Enable external commands in nagios. edit the nagios.cfg so that the check_external_commands options reads: check_external-commands = 1
- Add the Apache user account to the nagios group. In the case of Ubuntu this is www-data and we edit the /etc/group file to add the user to the group.
- Set the file system permissions. To access the nagios.cmd file which is writable by the group nagios we need to give group permissions to directories in its path:
chmod g=rx /var/lib/nagios3 /var/lib/nagios3/rw - Now we need to restart the apache and nagios servers
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nagios3 restart
External commands are written to /var/lib/nagios3/rw/nagios.cmd . This file is a named pipe and takes the input from the browser or script and pipes it through to nagios.
In the video we look at using the browser but we can use command line script if we like
#!/bin/sh # This is a sample shell script showing how you can submit the #ACKNOWLEDGE_SVC_PROBLEM command # to Nagios. Adjust variables to fit your environment as necessary. now=`date +%s` commandfile='/var/lib/nagios3/rw/nagios.cmd' /bin/printf "[%lu] ACKNOWLEDGE_SVC_PROBLEM;host1;service1;2;1;1;Some One;Some Acknowledgement Commentn" $now > $commandfile
As you can see from the script the text is just echoes through to the commandfile variable. See Nagios documentation for more commands that can be sent.