This guide will explain how to install Nagios3 on a machine with Debian and Lighttpd webserver.
If you haven’t installed Lighttpd yet, please follow this tutorial.
Install Nagios server
Now, let’s install Nagios.
apt-get install nagios3 nagios-plugins nagios-nrpe-plugin
This will automatically install all the required dependencies.
Enable check_external_commands
in /etc/nagios3/nagios.cfg
check_external_commands=1
Add www-data in nagios’ group:
usermod -a -G nagios www-data
And fix some permission issues to avoid some errors like “error: Could not stat() command file”
chmod g+x /var/lib/nagios3/rw
Let’s configure a bit Lighttpd.
Make sure cgi and php modules are enabled.
Then, create a new conf file and enable it:
vim /etc/lighttpd/conf-available/10-nagios3.conf
# Nagios3 alias.url = ( "/cgi-bin/nagios3" => "/usr/lib/cgi-bin/nagios3", "/nagios3/cgi-bin" => "/usr/lib/cgi-bin/nagios3", "/nagios3/stylesheets" => "/etc/nagios3/stylesheets", "/nagios3" => "/usr/share/nagios3/htdocs" ) $HTTP["url"] =~ "^/nagios3/cgi-bin" { cgi.assign = ( "" => "" ) } $HTTP["url"] =~ "nagios" { auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/etc/nagios3/htpasswd.users" auth.require = ( "" => ( "method" => "basic", "realm" => "nagios", "require" => "user=nagiosadmin" ) ) setenv.add-environment = ( "REMOTE_USER" => "user" ) }
lighttpd-enable-mod nagios3
Let’s apply the changes:
/etc/init.d/lighttpd force-reload
We need to setup the “nagiosadmin” password:
htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin
Now, open your browser and digit http://yourserver/nagios3
Insert username: nagiosadmin and the password you’ve just chosen… and voila`… 🙂
And now we have installed our nagios server. As you can see, it’s currently monitoring itself.
But what about the other hosts in the network?
Adding hosts
Host configuration
To let our Nagios server to monitor other hosts, we need to follow these steps on any client we want to add:
apt-get install -y nagios-plugins nagios-nrpe-server
Once completed, we need to add the IP of our monitoring host in /etc/nagios/nrpe.cfg
under allowed_hosts=xxx.xxx.xxx.xxx
.
Also, add this line in /etc/nagios/nrpe_local.cfg
:
command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e -A
This will be used from our monitor server to query nrpe and provide info about ALL the disks.
You can use also -I
flag to exclude a specific path. For example on my Time Capsule Pi, I’ve used the following line, to exclude the mount point “TimeMachine” from the checks:
command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e -A -I '/TimeMachine/*
Monitoring configuration for new host
Now back to our Nagios monitoring machine
In /etc/nagios3/conf.d
create a file called for example host1_nagios2.cfg and add the following basic services (add/remove/modify based on your local configuration):
define host{ use generic-host host_name host1 alias host1 address xxx.xxx.xxx.xxx } define service{ use generic-service host_name host1 service_description Current Load check_command check_nrpe_1arg!check_load } define service{ use generic-service host_name host1 service_description Current Users check_command check_nrpe_1arg!check_users } define service{ use generic-service host_name host1 service_description Disk Space check_command check_nrpe_1arg!check_all_disks } define service{ use generic-service host_name host1 service_description Total Processes check_command check_nrpe_1arg!check_total_procs }
Also, you can add the new host host1 to be part of any related groups, modifying /etc/nagios3/conf.d/hostgroups_nagios2.cfg
For example, we can add it to debian-servers and ssh-servers groups. This will automatically get some checks like SSH.
# Some generic hostgroup definitions # A simple wildcard hostgroup define hostgroup hostgroup_name all alias All Servers members * } # A list of your Debian GNU/Linux servers define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux Servers members localhost,host1 } # A list of your web servers define hostgroup { hostgroup_name http-servers alias HTTP servers members localhost } # A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost,host1 }
Sources:
http://zeldor.biz/2010/11/nagios3-with-lighttpd/comment-page-1/
https://www.digitalocean.com/community/articles/how-to-install-nagios-on-ubuntu-12-10
http://cloud101.eu/blog/2012/03/01/setting-up-nagios-on-debian-or-ubuntu/
http://technosophos.com/2010/01/13/nagios-fixing-error-could-not-stat-command-file-debian.html