Icinga: herramienta para monitorizar sistemas (basada en Nagios)

Monitorizar sistemas siempre ha sido una tarea ardua y compleja que dependiendo de los entornos, la complejidad de los sistemas  y las necesidades del cliente, se puede convertir en un problema de dedicación importante para un adminsitrador de sistemas. Hoy probamos Icinga un fork de Nagios que aprovechando todo el potencial de éste, lo actualiza y complemente con nuevas funcionalidades.

Icinga es un sistema de monitorización opensource, que controla cualquier recurso de la red, notifica al usuario los errores, genera datos de rendimiento para la presentación de informes e informa del estado de los recursos. Es escalable y extensible, Icinga puede controlar entornos complejos y grandes a través de lugares dispersos.

Icinga es un fork de Nagios y es compatible con versiones anteriores. Por lo tanto, la configuración de Nagios, plugins y addons se pueden usar con Icinga. Aunque Icinga conserva todas las características existentes de su predecesor, se basa en ellos para añadir muchas funcionalidades que no se encuentran en Nagios y características solicitadas por la comunidad de usuarios.

Icinga cuenta con una nueva interfaz mucho más accesible que la anterior basada en Nagios [https://www.icinga.org/about/icingaweb/] que nor permite un gestión más fácil de los recursos y un acceso a la información muchó más visible.

También cuenta con un cliente para dispositivos móviles que nor permitirá acceder a toda la información directamente desde cualquier sitio, sin necesidad de usar un navegador web. [https://www.icinga.org/about/icinga-mobile/]

Si quereis realizar la instalación de Icinga en un sistema Ubuntu, os recomendamos seguir este completisimo HOWTO escrito por ryall: http://blog.kyodium.net/2010/11/install-icinga-on-ubuntu-1004.html  Aunque está escrito sobre la 10.04 lo hemos probado sobre 11.10 y funciona perfectamente. Únicamente hemos tenido que instalar algunos paquetes más para pasar el test de php (php-pear, php5-ldap, php5-xls, php5-xmlrpc)

Podéis verlo en el artículo completo (leer más)

How to install Icinga on ubuntu 10.04 (lucid) with Icinga-Web, Icinga-API, IDOUtils, NConf.
You should note that these are the steps I have taken to get icinga working with icinga-web, nconf, and idoutils. There may be redundancy (for example you can view both the icinga classic and web interfaces), or unnecessary steps. If you notice anything wrong, please let me know and I will update the post accordingly.
Install dependencies:

sudo apt-get install apache2 build-essential mailutils libgd2-xpm-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-0-dev mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql libdbi-perl libdbd-mysql-perl php5-mysql libapache2-mod-php5 libnet-snmp-perl libradius1 libtalloc2 libwbclient0 radiusclient1 samba-common samba-common-bin smbclient snmp git-core libssl-dev openssl Create icinga user:

sudo useradd -m icinga
sudo passwd icinga Create icinga-cmd group:

sudo groupadd icinga-cmd
sudo usermod -a -G icinga-cmd icinga
sudo usermod -a -G icinga-cmd www-data Download Icinga:

cd /usr/src
git clone git://git.icinga.org/icinga-core.git Configure, Compile, Install Icinga:

cd icinga-core
sudo ./configure –enable-idoutils –with-command-group=icinga-cmd
sudo make all
sudo make fullinstall Install sample configuration files:

sudo make install-config Copy sample IDOUtils config files to the installation:

cd /usr/local/icinga/etc
sudo cp idomod.cfg-sample idomod.cfg
sudo cp ido2db.cfg-sample ido2db.cfg Enable idomod event broker:

sudo nano /usr/local/icinga/etc/icinga.cfg Uncomment the line beginning with broker_module (under the line # Uncomment this to enable idomod.o)
Create IDOUtils Database:

sudo mysql -u root -p
mysql> CREATE DATABASE icinga;
mysql> GRANT USAGE ON . TO ‘icinga’@’localhost’ IDENTIFIED BY ‘icinga’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO ‘icinga’@’localhost’;
mysql> FLUSH PRIVILEGES ;
mysql> quit Import database schema:

cd /usr/src/icinga-core/module/idoutils/db
sudo mysql -u root -p icinga /icinga using the password you previously created for icingaadmin.
Download and install NConf:

cd /usr/src
sudo wget http://downloads.sourceforge.net/project/nconf/nconf/1.2.6-0/nconf-1.2.6-0.tgz
sudo tar xzvf nconf-1.2.6-0.tgz
sudo mv nconf /var/www
sudo chown -R www-data:www-data /var/www/nconf Configure Apache for NConf:

sudo nano /etc/apache2/conf.d/nconf.conf Paste in the following:

SSLRequireSSL

Options None
AllowOverride None
Order allow,deny
Allow from all

Order deny,allow

Deny from all

Allow from 127.0.0.1

AuthName “Icinga Access”
AuthType Basic
AuthUserFile /usr/local/icinga/etc/htpasswd.users
Require valid-user

sudo /etc/init.d/apache2 reload Create NConf database:

sudo mysql -u root -p
mysql> CREATE DATABASE nconf;
mysql> GRANT USAGE ON . TO ‘nconf’@’localhost’ IDENTIFIED BY ‘ ‘ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT ALL PRIVILEGES ON nconf.* TO ‘nconf’@’localhost’;
mysql> FLUSH PRIVILEGES;
mysql> quit NConf web configuration:
Go to http:///nconf/INSTALL.php

DBNAME: nconf
DBUSER: nconf
DBPASS: NAGIOS_BIN: /usr/local/icinga/bin/icinga

Before you click Finish, remove INSTALL and UPDATE files and directories:

cd /var/www/nconf
sudo rm -R INSTALL UPDATE INSTALL.php UPDATE.php Now click Finish.

Give NConf access to icinga:

sudo chgrp www-data /usr/local/icinga/bin/icinga Configure icinga.cfg to include NConf config files:

sudo nano /usr/local/icinga/etc/icinga.cfg Comment out all lines that start with cfg_file= and add:

NConf configuration directorys:

cfg_dir=/usr/local/icinga/etc/objects/global
cfg_dir=/usr/local/icinga/etc/objects/Default_collector Customise the NConf deployment script to deploy config files to cfg_dirs:

sudo nano /var/www/nconf/ADD-ONS/deploy_local.sh Make it look like this:

!/bin/bash

OUTPUT_DIR=”/var/www/nconf/output/”
NAGIOS_DIR=”/usr/local/icinga/etc/objects/”
TEMP_DIR=${NAGIOS_DIR}”import/”
CONF_ARCHIVE=”NagiosConfig.tgz”

if [ ! -e ${TEMP_DIR} ] ; then
mkdir -p ${TEMP_DIR}
fi

if [ ${OUTPUT_DIR}${CONF_ARCHIVE} -nt ${TEMP_DIR}${CONF_ARCHIVE} ] ; then
cp -p ${OUTPUT_DIR}${CONF_ARCHIVE} ${TEMP_DIR}${CONF_ARCHIVE}
tar -xf ${TEMP_DIR}${CONF_ARCHIVE} -C ${NAGIOS_DIR}
/etc/init.d/icinga reload
fi
exit Make it executable:

sudo chmod +x /var/www/nconf/ADD-ONS/deploy_local.sh Add to crontab to run every 10 minutes:

sudo crontab -e
*/10 * * * * /var/www/nconf/ADD-ONS/deploy_local.sh Enable Icinga Email Notifications:
This tripped me up for a while, it seems that NConf disables notifications by default. Here’s how to enable them:
Fix email command:
http:///nconf
Click on Misccommands – Show
notifiy-host-by-email
notifiy-service-by-email
Change /bin/mail to /usr/bin/mail for both commands.
Fix user options:
Contacts – Show – nagiosadmin
Delete the ‘, n’ at the end of host and service notification options. ‘n’ overrides all other options and disables notification for the contact (the NConf default).

Install Icinga API

cd /usr/src
sudo git clone git://git.icinga.org/icinga-api.git
cd icinga-api
sudo ./configure –datarootdir=/usr/local/icinga/share –sysconfdir=/usr/local/icinga/etc –with-command-user=icinga-cmd –with-command-group=icinga-cmd –with-icinga-user=icinga –with-icinga-group=icinga –with-web-user=www-data –with-web-group=www-data
sudo make install Create icinga_web database:

sudo mysql -u root -p
mysql> CREATE DATABASE icinga_web;
mysql> GRANT USAGE ON . TO ‘icinga_web’@’localhost’ IDENTIFIED BY ‘ ‘ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON icinga_web.* TO ‘icinga_web’@’localhost’;
mysql> FLUSH PRIVILEGES ;
quit Install icinga-web:

cd /usr/src
sudo git clone git://git.icinga.org/icinga-web.git
cd icinga-web
sudo ./configure –prefix=/usr/local/icinga-web –with-web-user=www-data –with-web-group=www-data –with-web-path=/icinga-web –with-web-apache-path=/etc/apache2/conf.d –with-db-type=mysql –with-db-host=localhost –with-db-port=3306 –with-db-name=icinga_web –with-db-user=icinga_web –with-db-pass= –with-icinga-api=/usr/local/icinga/share/icinga-api
sudo make install
sudo make install-apache-config
sudo make install-done PHP dependencies:

sudo make testdeps Apache settings:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
sudo service apache2 restart Icinga-web default login is root/password.

Fuentes: Icinga https://www.icinga.org | Blog Kyodium

Pablo García

Pablo García