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:

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

Instalamos el programa:

  1. apt-get install icinga2

Para iniciar el programa utilizaremos el script de arranque ubicado en /etc/init.d/

  1. /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

  1. apt-get install mysql-server mysql-client

Para el correcto funcionamiento debemos añadir un módulo adicional llamado IDO

  1. apt-get install icinga2-ido-mysql

Accedemos a MySQL con nuestra contraseña, creamos la base de datos y algunas pasos más:

  1. CREATE DATABASE icinga;
  2. 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:

  1. 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:

  1. icinga2 feature enable ido-mysql

Y reiniciamos el servicio:

  1. 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.

  1. apt-get install apache2

Si tenemos un Firewall habilitado en el servidor debemos añadir las siguientes políticas de iptables:

  1. iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  2. # 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:

  1. icinga2 feature enable command

Añadimos el usuario de Apache (www-data) al grupo nagios:

  1. usermod -a -G nagios www-data

Instalamos el paquete icingaweb2:

  1. apt-get install icingaweb2

Para acceder al panel web por primera vez necesitamos un token de autentificación, creamos uno:

  1. icingacli setup token create

Si una vez creado no recordamos el token, lo podemos recuperar:

  1. icingacli setup token show

Accedemos a la interfaz web vía navegador, escribiendo: http//nuestra-ip/icingaweb2/

icingaweb1-001

Aquí debemos copiar el número de token y apretar el botón «Next«

icingaweb1-002

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

icingaweb1-003

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:

  1. apt-get -y install php5-intl php5-imagick

Cada vez que hagamos un cambio debemos reiniciar apache:

  1. 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.

icingaweb1-004

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.

icingaweb1-005

A posteriori nos pedirá las credenciales de ‘root‘ de MySQL.

Añadimos las credenciales al usuario administrador de la web:

icingaweb1-006

Justo al final veremos un resumen de toda la configuración.

En la siguiente ventana configuramos el core propiamente dicho.

icingaweb1-007

Nos pide desde IcingaWeb2 obtendrá la información:

icingaweb1-008

Dejamos la configuración por defecto.

Añadimos las credenciales de la base de datos IDO:

icingaweb1-009

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:

icingaweb1-010

Y ya podemos acceder:

icingaweb1-011

Y ya tenemos la vista del panel web:

icingaweb1-012

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í.