Before you begin installing Nagios, you must first install several prerequisites. Issue the following command:
You will need to create a new system user account to run Nagios under. Issue the following commands:
Now get the sources, be sure to take the latest stable: http://www.nagios.org/download/
Configure
Compile
create a password file, for we run nginx we don't have apache2-utils and use a python package http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py
Edit the config file for contact and change the email.
set logging to /var/log/nagios
and add the logging file, then install the plugins
Issue the following commands to ensure that Nagios is started when your system boots:
Check config for errors
If its ok, not red start the service:
we also need fcgi
Configure nginx:
nano /etc/nginx/sites-available/nagios
Configuring Basic IRC Notifications
You can also configure Nagios to send notifications to an IRC channel through a bot. Issue the following commands to download, extract, and build the IRC bot:
You will need to provide a few parameters to the IRC bot such as its nickname and server in order to use it. For a list of parameters, issue the following command:
To start the Nagios IRC bot issue the nagircbot command. See the following example as a starting point. Replace irc.ducklington.net with the address of your IRC network, and #bucknell with the name of the IRC channel that the bot should send notifications to. Replace nagircbot with the desired nickname for your bot, and ident and realname with the ident and real name strings for the IRC bot.
In the above example, "-f /usr/local/nagios/var/status.dat" tells the bot where to get status updates. The "-C" flag will allow the bot to send colored messages to the channel depending on the status of the service. When services are down, red status messages are displayed. These messages turn green when the service has recovered. Warnings are displayed in yellow, but do not typically represent a critical issue. The "-I 900" parameter tells the bot to send a status message to the channel every 900 seconds (or 15 minutes). For example, the bot may send something like "Critical: 0, warning: 1, ok: 6, up: 2, down: 0, unreachable: 0, pending: 0", which indicates that there are no critical messages and 1 warning.
Nagios contains numerous features that are beyond the scope of this document. You are encouraged to explore the resources listed below and the administrative interface for more information regarding the setup and configuration of Nagios. Congratulations on your new Nagios monitoring and notification system!
When the installation process prompts you to define the type of mail setup you're running, select "Internet Site". You will also want to specify the machine specific hostname for this server during the installation process. Next, you'll need to update the path to the mail binary in the Nagios command file. Change both references from /bin/mail to /usr/bin/mail. The relevant section of this file should look like this:
File:/usr/local/nagios/etc/objects/commands.cfg
apt-get install libperl-dev libpng12-dev libgd2-xpm-dev build-essential php5-gd wget libgd2-xpm
adduser --system --no-create-home --disabled-login --group nagios groupadd nagcmd usermod -G nagcmd nagios usermod -a -G nagcmd www-data
cd /opt mkdir nagios cd nagios wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.4.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz tar xvf nagios-3.4.4.tar.gz tar xvf nagios-plugins-1.4.16.tar.gz cd nagios
./configure --prefix /opt/nagios/nagios \ --sysconfdir=/etc/nagios \ --with-nagios-user=nagios \ --with-nagios-group=nagios \ --with-command-user=nagios \ --with-command-group=nagcmd
make all make install make install-init make install-config make install-commandmode
cd /usr/local/bin wget wget http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py chmod +x htpasswd.py htpasswd.py -c -b /etc/nagios/htpasswd.users nagiosadmin password
nano /etc/nagios/objects/contacts.cfg
mkdir /var/log/nagios touch /var/log/nagios/nagios.log chown nagios:nagios /var/log/nagios nano /etc/nagios/nagios.cfg
cd /opt/nagios/nagios-plugins-1.4.16 ./configure --with-nagios-user=nagios --with-nagios-group=nagios make && make install
chmod +x /etc/init.d/nagios /usr/sbin/update-rc.d -f nagios defaults
/opt/nagios/nagios/bin/nagios -v /etc/nagios/nagios.cfg
/etc/init.d/nagios start
apt-get install spawn-fcgi fcgiwrap
nano /etc/nginx/sites-available/nagios
server { server_name example.com; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; auth_basic "Restricted Nagios Area!"; auth_basic_user_file /etc/nagios/htpasswd.users; root /var/www; index index.php index.html; location / { try_files $uri $uri/ index.php; } location /nagios { alias /opt/nagios/share/; } location ~ ^/nagios/(.*\.php)$ { alias /opt/nagios/share/$1; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ \.cgi$ { root /opt/nagios/sbin/; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_param AUTH_USER $remote_user; fastcgi_param REMOTE_USER $remote_user; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location ~ \.php$ { include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } }
cd /opt/nagios wget http://www.vanheusden.com/nagircbot/nagircbot-0.0.33.tgz tar -zxvf nagircbot-0.0.33.tgz cd nagircbot-0.0.33b make make install
nagircbot -h
nagircbot -f /opt/nagios/nagios/var/status.dat -s irc.server.net:6667 -c \#channel -C -n nagircbot -u ident -U realname -I 900
Installing Prerequisites to send Mail Alerts
apt-get install mailutils postfix
define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } # 'notify-service-by-email' command definition define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ }
/etc/init.d/nagios restart