iCare Silver Accessibility Award That is so not Cuil
Jul 06

PART 1

Nagios is (IMHO) the de-facto standard in website and server monitoring. It has been around for quite some time. Here I will talk through the functionality and how to install and configure Nagios.

We shall shortly be offering remote monitoring, configuration and alerting as a service, please contact us if this is something you would like to discuss.

For the purposes of this tutorial, I will be installing Nagios on a Fedora Core server and monitoring a remote CentOS server through linux firewalls and a router with NAT (though if you are not usng firewalls you can simply ignore those steps).

Functionality:

In short, nagios is a monitoring tool, the depth at which it can check services and servers is quite suprising for a new user. Out of the box, some of it’s most useful checks are:

  • host-alive (though ping_check / icmp_check)
  • Current CPU load
  • Current logged in users
  • PING
  • Root partition size/space
  • Free space on harddrives
  • SSH functionality
  • FTP functionality
  • Monitor any service(s)
  • SWAP useage
  • Total running processes
  • Total zombie processes

….and many more. Nagios does this by querying these services on local and remote boxes. When all is well, Nagios displays a big green “OK”, when the warning threshold is reached then an amber “WARNING” is given and when a check fails, a red “CRITICAL” alert is given. Nagios can also be configured to email, text or otherwise alert you of a failed service. For the purposes of the tutorial, we’ll be using email as an alert method. NB: Use a third party email address (such as hotmail/yahoo/gmail) for alerting as it is unlikely to be affected by any service outages.

Nagios will monitor the local machine it is installed on by default, it’s most practical to be using Nagios to monitor a remote machine as well, you can then also install Nagios on the remote machine to monitor the connectivity of the 1st machine thereby ensuring redundant checking of all of your services. It also means that if connectivity to your local machine goes down, the remote machine can alert you of it. The downsides to this (if you do it across many machines) are that you can receive a high number of alerts if a single service goes down. A round-robin approach could solve this for you. For now, we’ll look at two machines monitoring each other).

Installation of Nagios (local machine):

These instructions are specific to RedHat based OS’s. Whilst they may work on other distributions, you should be more careful and aware of what you are doing. For my installation, I installed on Fedora Core 8 using these instructions.

Prerequisites

During portions of the installation you’ll need to have root access to your machine.

Make sure you’ve installed the following packages on your Fedora installation before continuing.

  • Apache
  • GCC compiler
  • GD development libraries

You can use yum to install these packages by running the following commands (as root):

yum install httpd
yum install gcc
yum install glibc glibc-common
yum install gd gd-devel

1 ) Create Account Information

Become the root user.

su -l

Create a new nagios user account and give it a password.

/usr/sbin/useradd -m nagios
passwd nagios

Create a new nagcmd group for allowing external commands to be submitted through the web interface. Add both the nagios user and the apache user to the group.

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd apache

2 ) Download Nagios and the Plugins

Create a directory for storing the downloads.

mkdir ~/downloads
cd ~/downloads

Download the source code tarballs of both Nagios and the Nagios plugins (visit http://www.nagios.org/download/ for links to the latest versions). At the time of writing, the latest versions of Nagios and the Nagios plugins were 3.0.3 and 1.4.11, respectively.

wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.2.tar.gz
wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz

3 ) Compile and Install Nagios

Extract the Nagios source code tarball.

cd ~/downloads
tar xzf nagios-3.0.2.tar.gz
cd nagios-3.0.2

Run the Nagios configure script, passing the name of the group you created earlier like so:

./configure --with-command-group=nagcmd

Compile the Nagios source code.

make all

Install binaries, init script, sample config files and set permissions on the external command directory.

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

Don’t start Nagios yet - there’s still more that needs to be done…

4 ) Customize Configuration

Sample configuration files have now been installed in the /usr/local/nagios/etc directory. These sample files should work fine for getting started with Nagios. You’ll need to make just one change before you proceed…

Edit the /usr/local/nagios/etc/objects/contacts.cfg config file with your favorite editor and change the email address associated with the nagiosadmin contact definition to the address you’d like to use for receiving alerts.

vi /usr/local/nagios/etc/objects/contacts.cfg

5 ) Configure the Web Interface

Install the Nagios web config file in the Apache conf.d directory.

make install-webconf

Create a nagiosadmin account for logging into the Nagios web interface. Remember the password you assign to this account - you’ll need it later.

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

Restart Apache to make the new settings take effect.

service httpd restart

6 ) Compile and Install the Nagios Plugins

Extract the Nagios plugins source code tarball.

cd ~/downloads
tar xzf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11

Compile and install the plugins.

./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

7 ) Start Nagios

Add Nagios to the list of system services and have it automatically start when the system boots.

chkconfig --add nagios
chkconfig nagios on

Verify the sample Nagios configuration files.

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

If there are no errors, start Nagios.

service nagios start

8 ) Modify SELinux Settings

Fedora ships with SELinux (Security Enhanced Linux) installed and in Enforcing mode by default. This can result in “Internal Server Error” messages when you attempt to access the Nagios CGIs.

See if SELinux is in Enforcing mode.

getenforce

Put SELinux into Permissive mode.

setenforce 0

To make this change permanent, you’ll have to modify the settings in /etc/selinux/config and reboot.

Instead of disabling SELinux or setting it to permissive mode, you can use the following command to run the CGIs under SELinux enforcing/targeted mode:

chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

For information on running the Nagios CGIs under Enforcing mode with a targeted policy, visit the NagiosCommunity.org wiki at http://www.nagioscommunity.org/wiki.

9 ) Login to the Web Interface

You should now be able to access the Nagios web interface at the URL below. You’ll be prompted for the username (nagiosadmin) and password you specified earlier.

http://localhost/nagios/

Click on the “Service Detail” navbar link to see details of what’s being monitored on your local machine. It will take a few minutes for Nagios to check all the services associated with your machine, as the checks are spread out over time.

10 ) Other Modifications

Make sure your machine’s firewall rules are configured to allow access to the web server if you want to access the Nagios interface remotely.

Configuring email notifications is out of the scope of this documentation. While Nagios is currently configured to send you email notifications, your system may not yet have a mail program properly installed or configured. Refer to your system documentation, search the web, or look to the NagiosCommunity.org wiki for specific instructions on configuring your system to send email messages to external addresses. More information on notifications can be found here.

11 ) You’re Done

Congratulations! You sucessfully installed Nagios. Your journey into monitoring is just beginning.

So that gets you monitoring your local machine which is very handy, you can also repeat these instructions on a second machine and follow the next steps to start monitoring remote systems. By setting up a second machine on a different connection, you can monitor the machine you have just setup and therefore know if it goes down.

Carry on with PART 2 - Setting up Nagios checks on a remote Linux system

OR

PART 3 - Setting up Nagios checks on a remote Windows system

Images:

Nagios home

The nagios home page

Nagios Sidebar

Service detail page:

Nagios service detail

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • BlinkList
  • Live
  • Reddit
  • Slashdot
  • StumbleUpon

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

5 Responses to “Monitoring your sites and servers with Nagios”

  1. Yujin INDIA Windows Server 2003 Mozilla Firefox 3.0 Says:

    Good tutorial. I have already done this much. But can’t get further. I have installed munin yesterday, that was easier than nagois, it seems munin will not alert you when service go down. Will nagois will track remote systems load, io stats, banwidth usage easily like munin do ?

  2. admin0 UNITED KINGDOM Windows Vista Mozilla Firefox 3.0 Says:

    That’s a shame, I really think Nagios is best in my experience. The next tutorials deal with monitoring remote servers (is that what you didn’t manage to get working?).
    If you do decide to give Nagios another go, we’d happily help you out with it.

    To answer your questions - yes, load, users, bandwidth, disk I/O memory and page useage. It will also check particular sites for particular strings (useful for monitoring the correct operation of dynamic sites).

  3. admin0 UNITED KINGDOM Fedora Linux Mozilla Firefox 2.0.0.14 Says:

    It’s worth me saying that this post was simply the first step in a group of posts around Nagios. This gives the basic configuration and sets the scene for the rest of the posts.

    The next post is how to configure checks on remote systems and it’s taking longer than I thought to write it out and get the images.

    I’ll do it as soon as I can though…it will make more sense once all the posts are together

  4. Peter Mui UNITED STATES Mac OS X Mozilla Firefox 3.0.1 Says:

    Consider GroundWork Monitor: it’s easier to install, and has Nagios built right into it, along with RRDtool, Nmap, and dozens of other open source packages, resulting in a fully-featured IT monitoring tool. It adds a point-and-click GUI for Nagios configuration, and saves to standard Nagios config files.

    RPMs for RHEL / CentOS are available and downloadable from Sourceforge or our website.

    Cheers, -Peter

    Peter Mui, Community Director
    GROUNDWORK Open Source, Inc.

  5. admin0 UNITED KINGDOM Windows Vista Mozilla Firefox 3.0 Says:

    I’ll definitely check it out, and perhaps do an article on it. Thanks for the suggestion.

Leave a Reply