Table of Contents

Guía de Icinga 2 + Icinga Web 2 con Nginx y MySQL en Debian / Ubuntu / Linux Mint

Esta guía muestra cómo realizar una instalación de Icinga 2 utilizando Nginx, MySQL y la ultima versión de Icinga Web 2 (No se instala la versión de los repositorios). Esta guía solo explica la instalación, no como se agregan nuevos hosts, servicios, usuarios, etc.

Descargar Icinga: https://www.icinga.org/download/
Documentación oficial de Icinga 2: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc

Instalar Icinga 2 mediante paquetes binarios

Se debe agregar el repositorio de Icinga a la distribución de Linux, (Leer).

Ejemplo para instalar Icinga 2 en Debian GNU/Linux.

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -
echo 'deb http://debmon.org/debmon debmon-wheezy main' >/etc/apt/sources.list.d/debmon.list
apt-get update
apt-get install icinga2

Comprobar las propiedades habilitadas de Icinga 2.

icinga2 feature list
Disabled features: api command compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog
Enabled features: checker mainlog notification

Directorios de la instalación de Icinga 2.

Instalar plugins para Icinga (Monitoring Plugins Project) #Debian

aptitude install nagios-plugins

EL usuario y grupo del proceso en sistemas debian es nagios.

Frontends extra para Icinga: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/alternative-frontends#alternative-frontends

Instalación y configuración de MySQL para Icinga 2

apt-get install mysql-server mysql-client icinga2-ido-mysql

Configurar base de datos para Icinga 2.

mysql -u root -p
 
mysql>  CREATE DATABASE icinga;
        GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'XXXX';
 
exit
mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

NOTA: La configuración Mysql para icingaweb 2 se realiza desde el propio framework en el proceso de instalación.

Configurar IDO con los valores anteriores: /etc/icinga2/features-available/ido-mysql.conf

library "db_ido_mysql"
 
object IdoMysqlConnection "ido-mysql" {
  user = "icinga",
  password = "XXXXX",
  host = "localhost",
  database = "icinga"
}

Habilitar ido-mysql y uso de comandos en Icinga 2.

icinga2 feature enable ido-mysql
icinga2 feature enable command
service icinga2 restart

NOTA: Interfaces Web y otros complementos de Icinga 2 son capaces de enviar comandos a través de una tubería a Icinga2 mediante comando externos, por ello es necesario activar esa característica.

Instalar y configurar Nginx + PHP para Icinga 2 Web

Se instalará con soporte para MySQl en vez de PostgreSQL y con todos los requerimientos para dar soporte a LDAP, exportación de documentos y gráficas etc.

aptitude install nginx php5-fpm php5-cli php-apc php5-intl php5-gd php5-imagick php5-mysql php5-ldap

Ficheros de configuración que se pueden adaptar.

NOTA: Solo es necesario editar php.ini para establecer el uso horario.

Crear ficheros de configuración para Icinga en Nginx.

Fichero /etc/nginx/sites-available/icinga

server {
  server_name localhost;
 
  listen 80;
  autoindex off;
  client_max_body_size 15M;
  client_body_buffer_size 128k;
  index index.html index.htm index.php doku.php;
 
############### Logs
 
  access_log  /var/log/nginx/icingaweb2/access.log;
  error_log  /var/log/nginx/icingaweb2/error.log;
  root /usr/share/icingaweb2/public/;
 
location ~ ^/icingaweb2/index\.php(.*)$ {
  # fastcgi_pass 127.0.0.1:9000;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
  fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
  fastcgi_param REMOTE_USER $remote_user;
}
 
location ~ ^/icingaweb2(.+)? {
  alias /usr/share/icingaweb2/public;
  index index.php;
  try_files $1 $uri $uri/ /icingaweb2/index.php$is_args$args;
}
}

Habilitar el host virtual y crear el fichero de logs.

ln -s /etc/nginx/sites-available/icinga /etc/nginx/sites-enabled/
mkdir /var/log/nginx/icingaweb2/

Descargar y posicionar Icinga Web 2: https://git.icinga.org/?p=icingaweb2.git;a=summary.

tar -zxvf icinga2.tar.gz
mv icingaweb2-a817d90 /usr/share/icingaweb2

Continuar con la configuración de usuarios, creación del archivo de configuración y creación del toquen (apuntar el Token para poder instalar icingaweb2).

addgroup --system icingaweb2
usermod -a -G icingaweb2 www-data
 
/usr/share/icingaweb2/bin/icingacli setup config directory
Successfully created configuration directory /etc/icingaweb2
 
/usr/share/icingaweb2/bin/icingacli setup token create
The newly generated setup token is: b02b164da31162e0

Crear el Token manualmente (Emergencias).

 su www-data -c "mkdir -m 2770 /etc/icingaweb2; chgrp icingaweb2 /etc/icingaweb2; head -c 12 /dev/urandom | base64 | tee /etc/icingaweb2/setup.token; chmod 0660 /etc/icingaweb2/setup.token;"; 

Asegurar que hay un grupo en el sistema llamado “icingaweb2” y que tenga como miembro a “www-data”.

grep -i icinga /etc/group
icingaweb2:x:127:www-data

Arrancar Nginx.

service nginx restart

Configurar Icinga2Web al gusto

Visitar la siguiente URL e introducir el Token: http://dominio/icingaweb2/setup

UserUser Preference Storage Type: para el ejemplo MySQL / pero puede ser otro como LDAP

Configuración para MySQL. (El framework icingaweb2 creará la base de datos)

  1. Resource Name icingaweb_db
  2. Database Type MySQL
  3. Host localhost
  4. Port 3306
  5. Database icingaweb
  6. Username icingaweb
  7. Password XXXX

NOTA: Luego solicitará las credenciales para crear la base de datos (root).

Nombre para el primer acceso al Backend: icingaweb2

Login: Para el ejemplo elegimos un fichero: “/var/log/icingaweb2/icingaweb2.log” Nivel: “Error” (Se debe crear el directorio previamente).

mkdir /var/log/icingaweb2/
chown www-data:www-data /var/log/icingaweb2/

Monitoring IDO Resource (Valores MySQL introducidos al principio de la guía.)

  1. Resource Name icinga_ido
  2. Database Type MySQL
  3. Host localhost
  4. Port 3306
  5. Database icinga
  6. Username icinga
  7. Password XXXX

Ya se puede empezar a utilizar Icinga2 e ir agregando hosts, servicios, etc.