===== 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, ([[http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/module/icinga2/chapter/getting-started#setting-up-icinga2 |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**. * /etc/icinga2 Ficheros de configuración. * /etc/init.d/icinga2 Script de inicio (init script). * /usr/sbin/icinga2 Binarios. * /usr/share/doc/icinga2 Documentación. * /usr/share/icinga2/include Librería de plantillas y plugins. * /var/run/icinga2 PID file. * /var/run/icinga2/cmd Comandos externos y Livestatus socket. * /var/cache/icinga2 Ficheros status.dat/objects.cache, icinga2.debug * /var/spool/icinga2 Usado por ficheros vinculados a la performance. * /var/lib/icinga2 Fichero de estado de Icinga 2, cluster log, local CA y ficheros de configuración. * /var/log/icinga2 Ficheros de logs. Instalar plugins para Icinga ([[https://www.monitoring-plugins.org/|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. * /etc/php5/fpm/php-fpm.conf * /etc/php5/fpm/php.ini (Se debe configurar //date.timezone = "Europe/Berlin"//) * /etc/php5/fpm/pool.d/www.conf 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) - Resource Name icingaweb_db - Database Type MySQL - Host localhost - Port 3306 - Database icingaweb - Username icingaweb - 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.) - Resource Name icinga_ido - Database Type MySQL - Host localhost - Port 3306 - Database icinga - Username icinga - Password XXXX Ya se puede empezar a utilizar Icinga2 e ir agregando hosts, servicios, etc.