Nagios

Nagios
Nagios - http://nagios.org/

Documentation

 * Nagios v4 Documentation - http://nagios.sourceforge.net/docs/nagioscore/4/en/toc.html
 * Nagios v3 Documentation - http://nagios.sourceforge.net/docs/nagioscore/3/en/toc.html

Pronunciation
Nagios pronunciation « Nagios Community:
 * "People are always asking me what the proper pronunciation of Nagios is. Here goes... By egalstad (Ethan Galstad)" (flash audio)


 * http://community.nagios.org/audio/nagiospronunciation.mp3

nog - e - ohs

Quick Install
Install epel repo, rpmforge

Install EPEL

or

Install DAG (rpmforge) repository: (only needed for CentOS 5) rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Install Nagios: yum install nagios nagios-plugins

If you use the EPEL repo, you will need to install individual plugins, or 'nagios-plugins-all'. yum install nagios-plugins-ssh nagios-plugins-http nagios-plugins-ping nagios-plugins-tcp yum install nagios-plugins-load nagios-plugins-users nagios-plugins-swap nagios-plugins-procs nagios-plugins-disk
 * 1) yum install nagios-plugins-all

Documentation
Nagios documentation and quick start can be found here: /usr/share/nagios/docs/ /usr/share/nagios/docs/quickstart.html http://nagios.sourceforge.net/docs

Online documentation:
 * http://nagios.sourceforge.net/docs/3_0/

Object Definitions (Services, Hosts, Etc) for Nagios v3:
 * http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html

Object Definitions (Services, Hosts, Etc) for Nagios v2
 * http://nagios.sourceforge.net/docs/2_0/xodtemplate.html

To view documentation locally: ln -s /usr/share/nagios /var/www/html/nagios-docs http://[host]/nagios-docs/ http://[host]/nagios-docs/quickstart.html
 * 1) quick start guide

Default Password
/etc/nagios/passwd nagiosadmin:nagiosadmin   # nagiosadmin:RbdO4ou4PNyMg

To change it: htpasswd /etc/nagios/passwd nagiosadmin

Performance Tuning
Tuning Nagios For Maximum Performance:
 * "So you've finally got Nagios up and running and you want to know how you can tweak it a bit... Here are a few things to look at for optimizing Nagios. Let me know if you think of any others..."

Quick Configuration
Change contact email address:

/etc/nagios/objects/contacts.cfg define contact{ contact_name                   nagiosadmin # change email email                          nagios@k.ttak.org ... }

define contact{ contact_name kenneth use          generic-contact alias        Kenneth Burgener email        nagios@k.ttak.org }
 * 1) add contact

define contactgroup{ contactgroup_name      admins alias                  Nagios Administrators #members                nagiosadmin,admin,kenneth,mark # add kenneth members                nagiosadmin,kenneth }

Create an authentication file: htpasswd /etc/nagios/passwd admin htpasswd /etc/nagios/passwd kenneth
 * 1) htpasswd -c /etc/nagios/htpasswd.users nagiosadmin

Note: if you choose a user name other than 'nagiosadmin' make sure to add privileges to the cgi.cfg:

/etc/nagios/cgi.cfg authorized_for_system_information=nagiosadmin,admin authorized_for_configuration_information=nagiosadmin,admin ...

# or sed -i 's/nagiosadmin/nagiosadmin,admin/g' /etc/nagios/cgi.cfg
 * 1) sed -i 's/nagiosadmin^/nagiosadmin,admin/g' /etc/nagios/cgi.cfg

NOTE: "You may use an asterisk (*) to authorize any user who has authenticated to the web server." sed -i 's/nagiosadmin^/*/g' /etc/nagios/cgi.cfg

Restart apache: service httpd restart

Verify nagios configuration files: nagios -v /etc/nagios/nagios.cfg

Restart nagios: service nagios restart

View nagios: http://[HOST]/nagios/

The default configuration has a few monitoring points for the localhost.

Host and Services v2
/servers/

contacts.cfg: define contact { contact_name			kenneth alias				Kenneth Burgener email				kenneth.burgener@oeey.com service_notification_period	24x7 host_notification_period	24x7 service_notification_options	w,u,c,r host_notification_options	d,r service_notification_commands	notify-by-email host_notification_commands	host-notify-by-email ;service_notification_commands	notify-service-by-email	; defined in commands.cfg ;host_notification_commands	notify-host-by-email	; defined in commands.cfg }
 * 1) CONTACTS
 * 1) CONTACTS

internet.cfg:
 * 1) INTERNET
 * 1) INTERNET

define contactgroup { contactgroup_name	contactgroup-internet alias			Internet Contact Group members			kenneth }

define host { name			host-internet host_name		internet alias			Internet Connection address			www.google.com

notification_enabled	1			; host notifications are enabled event_handler_enabled	1			; event handler is enabled

; If a service fails, check if host is alive... check_command		check-host-alive	; check host status command check_period		24x7			; when checks can be made max_check_attempts	5			; max check attempts verification

; host failure notification settings... notification_interval	1440			; minutes between down email notifications notification_period	24x7			; when notifications can be sent notification_options	d,u,r			; notify of down, up and recover states

; contacts		-		; (or use contact_groups) contact_groups		contactgroup-internet	; contacts to notify }

define service { name			service-internet	; template name service_description	service-internet	; service description host_name		internet

;; check_command	- initial_state		u		; initially start in unknown state (not required)

check_interval		5		; normal check interval check_period		24x7		; when to check service

retry_interval		2		; state change retry interval max_check_attempts	5		; number of times to use retry_interval

notification_interval	360		; notify every 6 hours notification_period	24x7		; when can notifications be sent notification_options	w,c,r		; notify on warning, critical and recovery states (not required)

; contacts		-		; (or use contact_groups) contact_groups		contactgroup-internet

service_description	Check PING check_command		check_ping!100.0,20%!500.0,60% }

test.cfg:


 * 1) TEMPLATES AND GROUPS
 * 1) TEMPLATES AND GROUPS

define contactgroup { contactgroup_name	contactgroup-test alias			Test Contact Group members			admin }
 * Contact Group

define host { name			host-test		; template name
 * Template Host

parents			internet		; don't check if parent is down

notification_enabled	1			; host notifications are enabled event_handler_enabled	1			; event handler is enabled

; If a service fails, check if host is alive... check_command		check-host-alive	; check host status command check_period		24x7			; when checks can be made max_check_attempts	5			; max check attempts verification

; host failure notification settings... notification_interval	1440			; minutes between down email notifications notification_period	24x7			; when notifications can be sent notification_options	d,u,r			; notify of down, up and recover states

; contacts		-		; (or use contact_groups) contact_groups		contactgroup-test	; contacts to notify

register		0			; this is a template }

define service { name			service-test	; template name service_description	service-test-template	; service description
 * Template service

;; check_command	- initial_state		u		; initially start in unknown state (not required)

check_interval		5		; normal check interval check_period		24x7		; when to check service

retry_interval		2		; state change retry interval max_check_attempts	5		; number of times to use retry_interval

notification_interval	360		; notify every 6 hours notification_period	24x7		; when can notifications be sent notification_options	w,c,r		; notify on warning, critical and recovery states (not required)

; contacts		-		; (or use contact_groups) contact_groups		contactgroup-test

register		0 }

define hostgroup { hostgroup_name		hostgroup-test alias			test Project Servers members			cs01,cs02,cs03,cs04,cs05,cs06,cs07,cs08,cs09,cs10,cs11,cs12 }


 * 1) HOSTS
 * 1) HOSTS

define host { use			host-test host_name		cs01 alias			test System #01 address			216.119.200.1 }

define host { use			host-test host_name		cs02 alias			test System #02 address			216.119.200.2 }


 * 1) SERVICES
 * 1) SERVICES

define service { use			service-test host_name		cs01 service_description	Check PING check_command		check_ping!100.0,20%!500.0,60% }

define service { use			service-test host_name		cs02 service_description	Check VNC check_command		check_tcp!5900!1 }

Host and Services v3

 * 1) CONTACTS
 * 1) CONTACTS

define contact { contact_name			kenneth alias				Kenneth Burgener email				kburgener@oeey.com service_notification_period	24x7 host_notification_period	24x7 service_notification_options	w,u,c,r host_notification_options	d,r service_notification_commands	notify-service-by-email host_notification_commands	notify-host-by-email }


 * 1) SERVER HEADERS
 * 1) SERVER HEADERS

define contactgroup { contactgroup_name	contactgroup-lab alias			lab Contact Group members			admin }
 * Contact Group

define host { name			lab-host ;; host_name		- ;; alias		- ; use			generic-host max_check_attempts	1 ; check_period ; notification_interval	# ; notification_period	timeperiod ;	; contacts		-		; (or use contact_groups) contact_groups		contactgroup-lab register		0 }
 * Template Host

define service { name			lab-service service_description	lab-service-template
 * Template service

;; check_command	- initial_state		u		; initially start in unknown state (not required)

check_interval		5		; normal check interval check_period		24x7		; when to check service

retry_interval		2		; state change retry interval max_check_attempts	5		; number of times to use retry_interval

notification_interval	360		; notify every 6 hours notification_period	24x7		; when can notifications be sent notification_options	w,c,r		; notify on warning, critical and recovery states (not required) ; contacts		-		; (or use contact_groups) contact_groups		contactgroup-lab register		0 }

define hostgroup { hostgroup_name		lab-group alias			Lab Servers members			cs01,cs02 }


 * 1) HOSTS
 * 1) HOSTS

define host { use			lab-host host_name		cs01 alias			lab System #01 address			216.119.200.1 }

define host { use			lab-host host_name		cs01 alias			lab System #01 address			cs01 }


 * 1) SERVICES
 * 1) SERVICES

define service { use			lab-service host_name		cs01,cs02 service_description	Check PING check_command		check_ping!100.0,20%!500.0,60% }

define service { use			lab-service host_name		cs02 service_description	Check VNC check_command		check_tcp!5900!1 }

define service { use			lab-service host_name		cs02 service_description	Check HTTP check_command		check_http }

Verify Configuration Files
To check and test and verify the configuration files: (lint testing) nagios -v /etc/nagios/nagios.cfg

Other Related Projects
NagVis in Action
 * NagVis is a visualization addon for the well known network managment system Nagios.

Manual 4.x Installation
Install dependencies: yum install httpd php gcc make glibc glibc-common gd gd-devel wget openssl-devel

apt-get install apache2 php5 gcc make php5-gd libgd2-xpm libgd2-xpm-dev wget libssl-dev
 * 1) missing: glibc glibc-common

Get Nagios and Plugins (Download Nagios) mkdir -p ~/.src ; cd ~/.src wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.1.tar.gz wget https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz

Build and Install Nagios: sudo /usr/sbin/adduser nagios cd ~/.src tar -zvxf nagios-4.0.1.tar.gz cd nagios-4.0.1 ./configure --prefix=/opt/nagios make clean   # remove previous build artifcats make all     # compile only
 * 1) sudo make install    # includes: install-base install-cgis install-html install-exfoliation install-basic
 * 2) sudo make install install-init install-commandmode install-config install-webconf  # finish off missing components

sudo make fullinstall   # includes: install install-init install-commandmode install-webconf sudo make install-config   # includes: sample config, not required, but recommended sudo make install-exfoliation install-classicui
 * 1) option other frontend installs:

For convenience: sudo ln -s /opt/nagios/etc /etc/nagios

---

Install options after 'make all'
 * Compile finished ***

If the main program and CGIs compiled without any errors, you can continue with installing Nagios as follows (type 'make' without any arguments for a list of all possible options):

make install - This installs the main program, CGIs, and HTML files

make install-init - This installs the init script in /etc/rc.d/init.d

make install-commandmode - This installs and configures permissions on the directory for holding the external command file

make install-config - This installs *SAMPLE* config files in /opt/nagios/etc You'll have to modify these sample files before you can use Nagios. Read the HTML documentation for more info on doing this. Pay particular attention to the docs on      object configuration files, as they determine what/how things get monitored!

make install-webconf - This installs the Apache config file for the Nagios web interface

make install-exfoliation - This installs the Exfoliation theme for the Nagios web interface

make install-classicui - This installs the classic theme for the Nagios web interface

---

Compile and Install the Nagios Plugins: cd ~/.src tar -zvxf nagios-plugins-1.5.tar.gz cd nagios-plugins-1.5 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/opt/nagios make sudo make install

Plugins are installed to: /opt/nagios/libexec

---

Install and Configure the Web Interface: sed -i 's/nagiosadmin/admin/' /opt/nagios/etc/cgi.cfg # rename nagiosadmin to admin sed -i 's/nagiosadmin/admin/' /opt/nagios/etc/objects/contacts.cfg # rename nagiosadmin to admin sudo htpasswd -bc /opt/nagios/etc/htpasswd.users admin password12 sudo /sbin/service httpd restart sudo service apache2 restart
 * 1) sudo make install-webconf    # part of 'make fullinstall'
 * 2) NOTE: adds: /etc/httpd/conf.d/nagios.conf
 * 1) sudo htpasswd -c /opt/nagios/etc/htpasswd.users admin # give admin a password

General sample config cleanup: mkdir /opt/nagios/etc/servers sed -i 's%#cfg_dir=/opt/nagios/etc/servers%cfg_dir=/opt/nagios/etc/servers%' /opt/nagios/etc/nagios.cfg

mkdir /opt/nagios/etc/bak mv /opt/nagios/etc/objects/{printer.cfg,switch.cfg,windows.cfg,localhost.cfg} /opt/nagios/etc/bak sed -i 's%cfg_file=/opt/nagios/etc/objects/localhost.cfg%#cfg_file=/opt/nagios/etc/objects/localhost.cfg%' /opt/nagios/etc/nagios.cfg
 * 1) Note: if you don't add some hosts and services, you will get a "no service/hosts defined" error

EMAIL=kenneth@t0e.org  # CHANGEME sed -i "s/nagios@localhost/$EMAIL/" /opt/nagios/etc/objects/contacts.cfg

servers/test.cfg: cat > /opt/nagios/etc/servers/test.cfg <<"EOF"

define contactgroup { contactgroup_name      contactgroup-test alias                  test Contact Group ;members               admin }
 * Contact Group

define host { name                   test-host max_check_attempts     1 contact_groups         contactgroup-test register               0 }
 * Template Host

define service { name                   test-service service_description    test-service-template
 * Template service

;; check_command       - initial_state          u               ; initially start in unknown state (not required)

check_interval         5               ; normal check interval check_period           24x7            ; when to check service

retry_interval         2               ; state change retry interval max_check_attempts     5               ; number of times to use retry_interval

notification_interval  1440            ; notify once a day notification_period    24x7            ; when can notifications be sent notification_options   w,c,r           ; notify on warning, critical and recovery states (not required) ; contacts             -               ; (or use contact_groups) contact_groups         contactgroup-test register               0 }

define hostgroup { hostgroup_name         test-group alias                  Lab Servers #members               jira }


 * 1) HOSTS
 * 1) HOSTS

define host { use                    test-host host_name              test1 alias                  test1 address                test1.webconnectmd.com }


 * 1) SERVICES
 * 1) SERVICES

define service { use                    test-service host_name              test1 service_description    Check PING check_command          check_ping!100.0,20%!500.0,60% }


 * 1) define service {
 * 2)       use                     test-service
 * 3)       host_name               test1
 * 4)       service_description     Check HTTP
 * 5)       check_command           check_http
 * 6)       }

define service { use                    test-service host_name              test1 service_description    Check SSH check_command          check_ssh }


 * 1) define service {
 * 2)       use                     test-service
 * 3)       host_name               test1
 * 4)       service_description     Check DB
 * 5)       check_command           check_by_ssh!/opt/nagios/check_db
 * 6)       }


 * 1) COMMANDS
 * 1) COMMANDS

define command{ command_name           check_by_ssh command_line           $USER1$/check_by_ssh -H $HOSTADDRESS$ $ARG1$ }
 * 1) 'check_pop' command definition

EOF

Verify configuration: /opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg

Start Nagios: sudo /sbin/chkconfig --add nagios sudo /sbin/chkconfig nagios on sudo /sbin/service nagios start
 * 1) console:  /opt/nagios/bin/nagios  /opt/nagios/etc/nagios.cfg
 * 2) daemon:   /opt/nagios/bin/nagios -d /opt/nagios/etc/nagios.cfg

Login to the Web Interface: http://localhost/nagios
 * 1) user: admin
 * 2) password: 

Congratulations you now have a working Nagios installation that will monitor your local box.

References:
 * Nagios Quickstart Installation Guides - http://nagios.sourceforge.net/docs/3_0/quickstart.html

ubuntu init.d fix
cp ~/.src/nagios-4.0.1/daemon-init /etc/init.d/nagios
 * 1) if you need a fresh copy

startup - Nagios 4: Can’t open /etc/rc.d/init.d/functions - Stack Overflow apt-get install daemon sudo sed -i 's/^\.\ \/etc\/rc.d\/init.d\/functions$/\.\ \/lib\/lsb\/init-functions/g' /etc/init.d/nagios sudo sed -i 's/status\ /status_of_proc\ /g' /etc/init.d/nagios sudo sed -i 's/daemon\ --user=\$user\ \$exec\ -ud\ \$config/daemon\ --user=\$user\ --\ \$exec\ -d\ \$config/g' /etc/init.d/nagios sudo sed -i 's/\/var\/lock\/subsys\/\$prog/\/var\/lock\/\$prog/g' /etc/init.d/nagios sudo service nagios start

My additional fixes: sudo sed -i 's#/sbin/service#/usr/sbin/service#g' /etc/init.d/nagios sudo sed -i 's/-n \$"/-n "/g' /etc/init.d/nagios sudo sed -i 's#if test "$checkconfig" == "false"; then#if test "$checkconfig" = "false"; then#g' /etc/init.d/nagios sudo sed -i 's#$nice runuser -s /bin/bash - $user -c#$nice su - $user -c#g' /etc/init.d/nagios sudo sed -i 's#killproc -p ${pidfile} -d 10 $exec#killproc -p ${pidfile} $exec#g' /etc/init.d/nagios sudo sed -i 's#: "#..."#g' /etc/init.d/nagios sudo sed -i 's/# Short-Description/# Default-Start:\t2\n# Default-Stop:\n# Short-Description/g' /etc/init.d/nagios

Give permission to run commands: chown /opt/nagios/var/rw nagios:www-data nagios.cmd

update-rc.d nagios defaults service nagios restart

Manual 3.x Installation
Install dependencies: yum install httpd php gcc make glibc glibc-common gd gd-devel wget openssl-devel
 * 1) httpd php
 * 2) gcc make
 * 3) glibc glibc-common
 * 4) gd gd-devel
 * 5) wget

Get Nagios and Plugins (Download Nagios) mkdir -p ~/.src ; cd ~/.src wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
 * 1) wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz

Build and Install Nagios: sudo /usr/sbin/adduser nagios cd ~/.src tar -zvxf nagios-3.3.1.tar.gz cd nagios ./configure --prefix=/opt/nagios make clean   # remove previous build artifcats make all   # compile only
 * 1) sudo make install    # includes: install-base install-cgis install-html install-exfoliation install-basic
 * 2) sudo make install install-init install-commandmode install-config install-webconf  # finish off missing components

sudo make fullinstall   # includes: install install-init install-commandmode install-webconf sudo make install-config   # includes: sample config, not required, but recommended sudo make install-exfoliation install-classicui
 * 1) option other installs:

NOTE: See patch for 3.3.1 below...

Install options after 'make all'
 * Compile finished ***

If the main program and CGIs compiled without any errors, you can continue with installing Nagios as follows (type 'make' without any arguments for a list of all possible options):

make install - This installs the main program, CGIs, and HTML files

make install-init - This installs the init script in /etc/rc.d/init.d

make install-commandmode - This installs and configures permissions on the directory for holding the external command file

make install-config - This installs *SAMPLE* config files in /opt/nagios/etc You'll have to modify these sample files before you can use Nagios. Read the HTML documentation for more info on doing this. Pay particular attention to the docs on      object configuration files, as they determine what/how things get monitored!

make install-webconf - This installs the Apache config file for the Nagios web interface

make install-exfoliation - This installs the Exfoliation theme for the Nagios web interface

make install-classicui - This installs the classic theme for the Nagios web interface

Compile and Install the Nagios Plugins: cd ~/.src tar -zvxf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/opt/nagios make sudo make install

Install and Configure the Web Interface: sed -i 's/nagiosadmin/admin/' /opt/nagios/etc/cgi.cfg # rename nagiosadmin to admin sed -i 's/nagiosadmin/admin/' /opt/nagios/etc/objects/contacts.cfg # rename nagiosadmin to admin sudo htpasswd -c /opt/nagios/etc/htpasswd.users admin # give admin a password sudo /sbin/service httpd restart
 * 1) sudo make install-webconf    # part of 'make fullinstall'
 * 2) NOTE: adds: /etc/httpd/conf.d/nagios.conf

General sample config cleanup: mkdir /opt/nagios/etc/servers sed -i 's%#cfg_dir=/opt/nagios/etc/servers%cfg_dir=/opt/nagios/etc/servers%' /opt/nagios/etc/nagios.cfg

mkdir /opt/nagios/etc/bak mv /opt/nagios/etc/objects/{printer.cfg,switch.cfg,windows.cfg,localhost.cfg} /opt/nagios/etc/bak sed -i 's%cfg_file=/opt/nagios/etc/objects/localhost.cfg%#cfg_file=/opt/nagios/etc/objects/localhost.cfg%' /opt/nagios/etc/nagios.cfg
 * 1) Note: if you don't add some hosts and services, you will get a "no service/hosts defined" error

EMAIL=kenneth@t0e.org  # CHANGEME sed -i "s/nagios@localhost/$EMAIL/" /opt/nagios/etc/objects/contacts.cfg

Start Nagios: sudo /sbin/chkconfig --add nagios sudo /sbin/chkconfig nagios on sudo /sbin/service nagios start

Login to the Web Interface: http://localhost/nagios
 * 1) user: admin
 * 2) password: 

Congratulations you now have a working Nagios installation that will monitor your local box.

References:
 * Nagios Quickstart Installation Guides - http://nagios.sourceforge.net/docs/3_0/quickstart.html

Patch 3.3.1
Patch for 3.3.1: (run before configure) cat > nagios-3.3.1.patch --- html/Makefile.in.orig      2011-09-06 15:01:37.488688413 -0400 +++ html/Makefile.in   2011-09-06 15:01:47.397049354 -0400 @@ -75,7 +75,7 @@	do $(INSTALL) -m 664 $(INSTALL_OPTS) $$file $(DESTDIR)$(HTMLDIR)/images/logos; done for file in includes/*.*; \ do $(INSTALL) -m 664 $(INSTALL_OPTS) $$file $(DESTDIR)$(HTMLDIR)/includes; done -	for file in includes/rss/*; \ +	-for file in includes/rss/*; \ do $(INSTALL) -m 664 $(INSTALL_OPTS) $$file $(DESTDIR)$(HTMLDIR)/includes/rss; done for file in includes/rss/extlib/*; \ do $(INSTALL) -m 664 $(INSTALL_OPTS) $$file $(DESTDIR)$(HTMLDIR)/includes/rss/extlib; done patch -p0 < nagios-3.3.1.patch

Add another admin user
To add an admin user for the Web Interface: sudo htpasswd /opt/nagios/etc/htpasswd.users newadmin

Add new user to the configuration file /opt/nagios/etc/cgi.cfg: authorized_for_system_information=admin,newadmin authorized_for_configuration_information=admin,newadmin authorized_for_system_commands=admin,newadmin authorized_for_all_services=admin,newadmin authorized_for_all_hosts=admin,newadmin authorized_for_all_service_commands=admin,newadmin authorized_for_all_host_commands=admin,newadmin

sed -i 's/=admin/=admin,newadmin/' /opt/nagios/etc/cgi.cfg
 * 1) Or quick method (and works for each additional as well)

Read Only Access
/etc/httpd/conf.d/nagios.conf:  
 * 1) MAKE CHANGE TO BOTH OF THESE SECTIONS...


 * 1)   AuthName "Nagios Access"
 * 2)   AuthType Basic
 * 3)   AuthUserFile /opt/nagios/etc/htpasswd.users
 * 4)   Require valid-user

/opt/nagios/etc/cgi.cfg: use_authentication=0

NOTE: You will not be able to use the External Command Interface with authentication =0


 * External Command Interface
 * Sorry Dave, I can't let you do that...
 * It seems that you have chosen to not use the authentication functionality of the CGIs.
 * I don't want to be personally responsible for what may happen as a result of allowing unauthorized users to issue commands to Nagios,so you'll have to disable this safeguard if you are really stubborn and want to invite trouble.
 * Read the section on CGI authentication in the HTML documentation to learn how you can enable authentication and why you should want to.

References:
 * Authentication And Authorization In The CGIs - https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/cgiauth.html

Allow External Command Interface
/etc/httpd/conf.d/nagios.conf:  
 * 1) MAKE CHANGE TO BOTH OF THESE SECTIONS...


 * 1)   AuthName "Nagios Access"
 * 2)   AuthType Basic
 * 3)   AuthUserFile /opt/nagios/etc/htpasswd.users
 * 4)   Require valid-user

/opt/nagios/etc/cgi.cfg: use_authentication=1 default_user_name=admin

Give the 'admin' user rights everywhere in cgi.cfg.

Give permission to nagios.cmd (parent folder, as .cmd file gets rewritten each restart): chmod g+s /opt/nagios/var/rw chown :nagios /opt/nagios/var/rw service nagios restart

Manual Installation #1 - archive
Nagios Quickstart Installation Guides

Install dependencies: yum install httpd yum install gcc yum install glibc glibc-common yum install gd gd-devel

Create nagios user and group: sudo /usr/sbin/useradd nagios sudo /usr/sbin/groupadd nagcmd sudo /usr/sbin/usermod -G nagcmd nagios sudo /usr/sbin/usermod -G nagcmd apache

Create build directory: mkdir ~/nagios cd ~/nagios

Get Nagios (Download Nagios) wget http://superb-west.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.1.tar.gz

Get Plugins (Download Nagios) wget http://superb-east.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz

Build Nagios: tar -zvxf nagios-3.0.1.tar.gz cd nagios-3.0.1 ./configure --with-command-group=nagcmd make all

Install Nagios: sudo make install sudo make install-init sudo make install-config sudo make install-commandmode

Configure Nagios (/usr/local/nagios/etc): sudo vi /usr/local/nagios/etc/objects/contacts.cfg
 * 1) Set the nagiosadmin email address

Install and Configure the Web Interface: sudo make install-webconf sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin sudo /sbin/service httpd restart

Compile and Install the Nagios Plugins: cd ~/nagios tar -zvxf nagios-plugins-1.4.11.tar.gz cd nagios-plugins-1.4.11 ./configure --with-nagios-user=nagios --with-nagios-group=nagios make sudo make install

Start Nagios: sudo /sbin/chkconfig --add nagios sudo /sbin/chkconfig nagios on sudo /sbin/service nagios start

Login to the Web Interface: http://localhost/nagios
 * 1) user: nagiosadmin
 * 2) password: 

Check the "Service Detail" tab for services being monitored on this server.

To add an admin user for the Web Interface: sudo htpasswd /usr/local/nagios/etc/htpasswd.users admin

Add admin user to the configuration file /usr/local/nagios/etc/cgi.cfg: authorized_for_system_information=nagiosadmin,admin authorized_for_configuration_information=nagiosadmin,admin authorized_for_system_commands=nagiosadmin,admin authorized_for_all_services=nagiosadmin,admin authorized_for_all_hosts=nagiosadmin,admin authorized_for_all_service_commands=nagiosadmin,admin authorized_for_all_host_commands=nagiosadmin,admin

Congratulations you now have a working Nagios installation that will monitor your local box.

Manual Installation #2 - archive
yum install gd gd-devel php-gd

Libiconv: wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zvxf libiconv-1.13.1.tar.gz cd libiconv-1.13.1 ./configure make make install export LD_LIBRARY_PATH=/usr/local/lib
 * 1) http://www.gnu.org/s/libiconv/

GD: yum install gcc automake libpng libjpeg zlib freetype libtool \ freetype-devel fontconfig-devel libjpeg-devel libpng-devel xorg-x11-devel mkdir -p ~/src ; cd ~/src hg clone https://bitbucket.org/pierrejoye/gd-libgd cd gd-libgd/src cp -r ../config ../test. ./bootstrap.sh ./configure --prefix=/opt/gd make install
 * 1) GD http://www.boutell.com/gd/
 * 2) COULD NOT GET WORKING RIGHT
 * 1) docs/INSTALL

Install Nagios: yum install gcc httpd php mkdir -p ~/src ; cd ~/src wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz tar -zvxf nagios-3.2.3.tar.gz cd nagios-3.2.3 ./configure --prefix=/opt/nagios make all adduser nagios make install install-init install-commandmode install-config install-webconf

Install Nagios Plugins: mkdir -p ~/src ; cd ~/src wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz tar -zvxf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --prefix=/opt/nagios make make install


 * The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.
 * The requested URL /nagios/cgi-bin/trends.cgi was not found on this server.
 * The requested URL /nagios/cgi-bin/histogram.cgi was not found on this server.

Pronunciation
Nagios FAQ F0003 - How "Nagios" is pronounced - http://support.nagios.com/knowledgebase/faqs/index.php?id=52&faq_id=3:


 * "I pronounce Nagios as:


 * nah-ghee-ose


 * At least I think that's how I pronounce it (damn phonetic spelling)... The "Na" sounds like "Nah", "gi" sounds like the first part of "geese", and "os" sounds like the last part of "verbose". You can pronounce it however the heck you'd like.


 * Alternative pronounciations vary. One that I liked is "nachos". Mmmmmm.... nachos. "

Nagios FAQ F0002 - What does Nagios mean - http://support.nagios.com/knowledgebase/faqs/index.php?id=52&faq_id=2:


 * The official meaning is that N.A.G.I.O.S. is a recursive acronym which stands for "Nagios Ain't Gonna Insist On Sainthood". It's a spoof on the software's previous name of "NetSaint", which I decided to abandon after it caused me much emotional distress.


 * An alternative meaning suggested by Sam Tilders is...


 * Notices
 * Any
 * Glitch
 * In
 * Our
 * System


 * A few people have suggested that "Nagios" might be derived from the Greek word "hagios" which means "sacred" or "holy" (i.e. saintly). If you decide you want to go with that interpretation, you'll have to live with this delicious twist... "hagios" also means "accursed" or "execrable" according to the Liddell-Scott-Jones Greek Lexicon. So let me get this straight - you're saying that you you think Nagios is a bastardized upgrade of NetSaint? Eh? :-)

Nagios pronunciation « Nagios Community:
 * "People are always asking me what the proper pronunciation of Nagios is. Here goes... By egalstad (Ethan Galstad)" (flash audio)

Tricks for Object Definitions
Time-Saving Tricks For Object Definitions - http://nagios.sourceforge.net/docs/nagioscore/3/en/objecttricks.html
 * This documentation attempts to explain how you can exploit the (somewhat) hidden features of template-based object definitions to save your sanity. How so, you ask? Several types of objects allow you to specify multiple host names and/or hostgroup names in definitions, allowing you to "copy" the object defintion to multiple hosts or services. I'll cover each type of object that supports these features seperately.

UTOSC 2012 Nagios Install
site: http://tinyurl.com/naginstall

My modifications: https://docs.google.com/document/d/1xSZJrc_On3YcH9ulp8PSBMLAARXTKwNjS4VtbeL_dnw/edit

TO READ
Nagios Central Monitoring - http://beginlinux.com/blog/2010/03/nagios-central-monitoring/

Nagios is currently not checking for external commands
When trying to manually reschedule a check: Sorry, but Nagios is currently not checking for external commands, so your command will not be committed! Read the documentation for information on how to enable external commands

/etc/nagios3/nagios.cfg: check_external_commands=1

command_check_interval=-1
 * 1) command_check_interval=15s

command_file=/var/lib/nagios3/rw/nagios.cmd

Add www-data to nagios group in /etc/group nagios:x:120:www-data

restart apache2: service apache2 restart service nagios3 restart

Ref: http://technosophos.com/2010/01/13/nagios-fixing-error-could-not-stat-command-file-debian.html

---

Note:

Error: Could not stat command file '/var/lib/nagios3/rw/nagios.cmd

This is because of the bug in Debian, which is described here http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=571801.

Solution: /etc/init.d/nagios3 stop dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 /etc/init.d/nagios3 start

Ref: http://www.projectenvision.com/blog/4/Sorry-but-Nagios-is-currently-not-checking-for-external-commands

Invalid option - SSL is not available
When trying to run check_http with the '-S' for SSL option:

Invalid option - SSL is not available

Cause:
 * OpenSSL was not available when the Nagios plugins were compiled.

Solution:
 * Install openssl-devel package and recompile the Nagios plugins.

References:
 * http://blog.jitteringrunt.com/2011/08/nagios-checkhttp-invalid-option-ssl-is.html

/run/lxcfs/controllers is not accessible
Ubuntu

Error: DISK CRITICAL - /run/lxcfs/controllers is not accessible: Permission denied

/etc/nagios-plugins/config/disk.cfg check_all_disks command_line ... -A --exclude-type=tracefs --exclude-type=cgroup --exclude_device=/run/lxcfs/controllers

test: sudo -u nagios /usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e sudo -u nagios /usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e -A --exclude-type=tracefs --exclude-type=cgroup --exclude_device=/run/lxcfs/controllers

https://bugs.launchpad.net/ubuntu/+source/nagios-plugins/+bug/1516451