Building Nagios from source on CentOS 6.4

There are two ways to install Nagios on CentOS: install from a package, or build from source.
Installing from a package is faster, but you will run into limitations if you try to customize Nagios. For example, you won’t be able to customize the Nagios status-map CGI code. If you want Nagios to log to a SQL backend (for using things like NagVis for SLA purposes) you have to build from source.
I recommend building from source. It’s cleaner than yum, in my opinion, and allows all sorts of fun options to be compiled in.

Note this isn’t a full Nagios guide; just how to build from source.

This is for Nagios Core version 3.4.1 (October 2012).

Setup users and groups

useradd nagios;groupadd nagios
usermod -G nagios nagios
passwd nagios

Download the source to your src directory

cd /usr/local/src
tar -xvf nagios-3.4.1.tar.gz
mv nagios nagios-3.4.1
rm nagios-3.4.1.tar.gz

Check dependencies

cd /usr/local/src/nagios-3.4.1

The configure script will run and check for appropriate dependencies. Fix as needed.
It’ll also show Nagios’ various config options in a ‘Configuration Summary’ at the end of its output.
Note that building from source installs Nagios in /usr/local/nagios, rather than all over the place as with the yum version.


cd /usr/local/src/nagios-3.4.1
make all


make install
make install-init
make install-commandmode
make install-config

Verify Nagios runs

service nagios start
service nagios restart

Install web config
In this step, we install a basic Nagios Apache2 config to /etc/httpd/conf.d/nagios.conf. We then create an htpasswd file, which is the backend for Nagios’ web interface password authentication. We use the username ‘nagiosadmin,’ but you can use whatever you want as it’s not referenced elsewhere.
If you ever lose your login, you can delete the htpasswd.users file, then make a new one with the htpasswd command.
By default, Nagios is accessed through http://yourserver/nagios. If you want the simpler URL (http://yourserver) then add the VirtualHost entry shown below.

Go to the Nagios source directory.
cd /usr/local/src/nagios-3.4.1

Install a fresh nagios.conf file into Apache2′s conf.d directory.

make install-webconf

Edit the password for nagiosadmin.

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Add a new VirtualHost directive to the nagios.conf file. Save and quit vim when done. (Esc, then :wq to save and quit)

vim /etc/httpd/conf.d/nagios.conf
# add these lines between ScriptAlias and the first Directory entry
<VirtualHost *:80>
DocumentRoot /usr/local/nagios/share
ServerName nagios

At this point, it’s a good idea to browse to Nagios and verify that its interface appears. Clicking the Service Status view will result in a lot of “plugin missing” messages, so install the Nagios plugins next.

Install plugin dependencies
Not strictly needed, but adds MySQL, SNMP, and LDAP functionality.

yum install mysql-devel net-snmp-utils openldap-devel

Install plugins
(Tested with 1.4.16 – October 2012)

cd /usr/local/src
tar -xvf nagios-plugins-1.4.16.tar.gz
rm nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
make install

There should now be a directory at /usr/local/nagios/libexec containing the plugins.

Fix permissions on Nagios’ command directory
Commands from the web GUI to the Nagios process are done through the nagios.cmd file in the /usr/local/nagios/var/rw directory.
Both apache (the user that httpd runs as) and nagios (the user that Nagios runs as) need read-write access to this directory.
To achieve this, we will create a group strictly for those users who need to touch that directory. The group is called “nagioscmd.”
We then set the sticky bit for the “rw” directory, so any new files inside it will inherit the rw directory’s permissions.

groupadd nagioscmd
usermod -G nagioscmd nagios
usermod -G nagioscmd apache
chown nagios.nagioscmd /usr/local/nagios/var/rw
chmod u+rwx /usr/local/nagios/var/rw
chmod g+rwx /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

At this point you should have a core Nagios installation. Proceed to configure it as per the Nagios documentation.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>