Monitoriza sistemas y redes con Icinga2
Hace unos días escribí un artículo en la web sobre la instalación de Nagios, sobre un servidor Debian Jessie. Al publicar una nota en la red Diaspora sobre dicha entrada, un usuario en inglés me comentó que existía un fork de Nagios, llamado Icinga, que funcionaba mucho mejor, según él, claro. Como me gusta trastear he investigado un poco y he instalado el programa. Aquí os dejo los pasos que he seguido y mis impresiones.
Sobre Icinga
Se trata de un fork de Nagios creado en 2009 por un grupo de desarrolladores de la comunidad, que no estaban satisfechos con el desarrollo de dicho proyecto. Es un sistema de monitorización que añade más funcionalidades al “viejo” Nagios, entre las que se encuentra una moderna interfaz web, más adaptada la Web 2.0 También incorpora conectores adicionales para bases de datos (MySQL/MariaDB, Oracle y PostgreSQL) Otra importante mejora una REST API para que los desarrolladores puedan crear nuevas extensiones.
La primera versión estable se lanzó en 2009 y fue la 1.0, desde entonces los desarrolladores han ido aplicando mejoras de manera continua, atendiendo las peticiones de la comunidad de usuarios.
Respecto a su desarrollo, ha sido escrito en C
La actual versión del programa es Icinga2
Un apartado importante a mencionar que es compatible con Nagios y sus plugins, de ésta manera se puede migrar entre ambos sistemas in demasiada dificultad.
Si os preguntáis que significa “Icinga” proviene del Zulu y viene a significar “el que busca” o “el que examina»
Características principales:
- Monitorización de servicios de red (SMTP, POP3, HTTP, NTP, ping, etcétera)
- Monitorización de componentes de red (switches, routers, etcétera)
- Notificación a usuarios por correo electrónico
- Nivel de alertas
- Dos interfaces web opciones (Icinga Clasic UI e Icinga Web)
Ampliar funcionalidades.
Tal y cómo he comentado anteriormente se pueden utilizar los mismo add-ons escritos para Nagios, entre los que destacan:
- Gráficos de rendimiento (PNP4Nagios, NagiosGrapher, etcétera)
- Herramientas de configuración e interfaz (Nconf, NagiosSQL)
- Monitorización de procesos de negocio (NagVIS, Nagmap)
- Monitorización de host Windows (NSClient++, Cygwin)
Es software libre, utiliza la licencia GNU GPL, en su versión 2.
Instalación sobre Debian Jessie
He probado el producto como siendo habitual sobre una máquina virtual, sobre un sistema Debian. A diferencia de lo que ocurre con Nagios, la instalación se realiza mediante repositorios. Los sistemas operativos compatibles para la instalación son Debian, Ubuntu, RHEL/CentOS, openSUSE, SLES, Gentoo, FreeBSD y ArchLinux. Podéis encontrar información sobre la instalación en dichas distribuciones en su documentación oficial.
En Debian debemos añadir los siguientes repositorios:
wget -O - http://debmon.org/debmon/repo.key 2 >/dev/null | apt-key add -
echo 'deb http://debmon.org/debmon debmon-jessie main' > /etc/apt/sources.list.d/debmon.list
apt-get update
Instalamos el programa:
apt-get install icinga2
Para iniciar el programa utilizaremos el script de arranque ubicado en /etc/init.d/
/etc/init.d/icinga2 start
Instalación de Icinga Web
Para poder instalar la interfaz web llamada Icinga Web u otras, debemos cumplir con una serie de requisitos. En los siguientes pasos veremos cuales son.
Instalar un motor de base de datos MySQL
apt-get install mysql-server mysql-client
Para el correcto funcionamiento debemos añadir un módulo adicional llamado IDO
apt-get install icinga2-ido-mysql
Accedemos a MySQL con nuestra contraseña, creamos la base de datos y algunas pasos más:
CREATE DATABASE icinga;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga';
Después de estos pasos y una vez fuera de la consola MySQL, debemos importar el esquera Icinga 2 IDO utilizando el siguiente comando y parámetros:
mysql -u root -p icinga > /usr/share/icinga2-ido-mysql/schema/mysql.sql
Los paquetes con la nueva configuración se encuentran ubicados en /etc/icinga2/features-available/ido-mysql.conf Debemos actualizar las credenciales de la base de datos en éste fichero. En éste enlace tenéis la explicación al respecto.
Y habilitamos el módulo ido-mysql:
icinga2 feature enable ido-mysql
Y reiniciamos el servicio:
service icinga2 restart
También existe una guía de instalación para PostgreSQL
Una vez hemos finalizado con el apartado de la base de datos, instalamos el servicio web con Apache.
apt-get install apache2
Si tenemos un Firewall habilitado en el servidor debemos añadir las siguientes políticas de iptables:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# service iptables save
La interfaz web y otros addons utilizan una tubería o pipe para el envío de comandos al servidor. Para ello debemos habilitar dicha función:
icinga2 feature enable command
Añadimos el usuario de Apache (www-data) al grupo nagios:
usermod -a -G nagios www-data
Instalamos el paquete icingaweb2:
apt-get install icingaweb2
Para acceder al panel web por primera vez necesitamos un token de autentificación, creamos uno:
icingacli setup token create
Si una vez creado no recordamos el token, lo podemos recuperar:
icingacli setup token show
Accedemos a la interfaz web vía navegador, escribiendo: http//nuestra-ip/icingaweb2/
Aquí debemos copiar el número de token y apretar el botón «Next«
En éste paso habilitamos dos módulos, el de documentación y el de monitorización.
A continuación nos mostrará si cumplimos con todos los requisitos, según el color. En mi caso tengo que solucionar el parámetro ‘date.timezone‘ de PHP
Lo puedo modificar facilmente modificando el fichero /etc/php5/apache2/php.ini y descomentar date.timezone y añadir Europe/Madrid, aquí cada uno según donde tenga el servidor.
También me recomienda (en color amarillo) habilitar varios módulos de PHP5, concretamente INTL e Imagick. Los referidos a PostgreSQL entiendo que no son necesarios.
Los instalamos:
apt-get -y install php5-intl php5-imagick
Cada vez que hagamos un cambio debemos reiniciar apache:
service apache2 reload
En la ventana a continuación nos dirá que sistema queremos utilizar para autentificarnos, tenemos tres opciones: ‘Database‘ , ‘LDAP‘ o ‘External‘ Escogeremos la primera.
En el formulario añadimos los datos de la base de datos y credenciales para una nueva base de datos, donde se guardarán los datos de usuarios y grupos.
A posteriori nos pedirá las credenciales de ‘root‘ de MySQL.
Añadimos las credenciales al usuario administrador de la web:
Justo al final veremos un resumen de toda la configuración.
En la siguiente ventana configuramos el core propiamente dicho.
Nos pide desde IcingaWeb2 obtendrá la información:
Dejamos la configuración por defecto.
Añadimos las credenciales de la base de datos IDO:
En las siguientes ventanas definiremos los comandos a utilizar, lo dejamos todo por defecto.
Al finalizar la instalación veremos un log de todo el proceso:
Y ya podemos acceder:
Y ya tenemos la vista del panel web:
Lo dejamos por hoy. En próximas entregas añadiremos clientes para monitorizar y hablaremos de la interfaz web.
Hasta la próxima
La web oficial: www.icinga.org
Los derechos de la imagen «Status Map«, aquí.