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

28 Respuestas

  1. jasan dice:

    Hola Buen día

    gracias por el tutorial esta muy bueno.
    tengo una pregunta, en la segunda linea —
    echo ‘deb http://debmon.org/debmon debmon-jessie main’ >/etc/apt/sources.list.d/debmon.list — dice que » bash: gt command not found».

    me podrias ayudar, falto algo??

    muchas gracias!!!

  2. jasan dice:

    ya encontré que paso, al pegar el comando aquí, lo arreglo es «main’ > /etc/…..» «mayor que» pero se ve » & g t ; » todo pegado, lo mismo esta pasando con el siguiente: sale «……..icinga & l t ;» pegado

    mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

    gracias!!

    • davidochobits dice:

      Hola Jasan,
      El plugin que utilizo para resaltar el código a veces también me hace esas cosas.
      Saludos y gracias por comentar.

  3. tannhausser dice:

    Gran post! tremendo tutorial te has marcado, a este paso te van a fichar para rehacer la wiki de Arch o algo así 🙂
    Saludos!

    • davidochobits dice:

      Gracias! Esa es la intención. Intento plasmar mis experiencias por si les puede servir a más personas. Lo curioso de Icinga es que me lo doy a conocer un usuario en Diaspora. Eso es lo que tiene la comunidad de software libre, en otro lado ese paso hubiera sido imposible.
      Saludos!!

      • Stivens dice:

        Hola David, perimero que nada darte las gracias por tus aportes. He seguido tu tutorial paso a paso y no logro conseguir que funcione el Icinga2. De ante mano te comento que he instalado por consola la ultima versión estable de Debian, agregando desde esta instalación el SSH y el servidor web, tambien he realizado la instalación en limpio sin agregar el servidor web pero no logro optener los resultados esperados.

  4. Mluduenia dice:

    Hola, muy bueno el tuto, pero hay forma de pasar el icinga2 (web) a español???

  5. Martin dice:

    Hola, muy bueno tu aporte, pero tengo un drama existencial tremendo jaja, sigo todos los pasos pero al ingresar a la direccion web del icinga, me pide usuario y password, y cuando le doy a donde me pide el token, me da un error y no me deja continuar, algun consejo? lo hago en ubuntu 15.04 server.
    SAludos

  6. Mluduenia dice:

    buenas, vengo siguiendo este tema hace rato y el tuto me ayudo un montón, pero tengo un problema ahora, para poder activar las notificaciones, alguien me daría una mano? he visto que hay que instalar un plugin o algún complemento que se llama sendemail o algo así?

  7. Alejandro dice:

    Buenisimo el post, cuando ingreso a la web, osea ip/icingaweb2 y me pongo el token me sale este error
    Cannot validate token: /etc/icingaweb2/setup.token (FileObject::__construct(/etc/icingaweb2/setup.token): failed to open stream: Permission denied).
    Gracias !!!

  8. Ruben dice:

    Alejandro tuve el mismo problema y solo coloque la siguiente linea

    #chmod 777 -R /etc/icingaweb

    y lo solvente; Muy bueno tu post David.

  9. Ivan Valdez dice:

    hola amigo, excelente manual de casualidad tendrás uno donde agregues host remotos y monitorerlos mediante SNMP

    gracias

  10. deathbian dice:

    Hola, tengo un problema a la hora de importar schema ido, introduzco el comando, me pide el pass y se queda ahí. Miro las bases de datos de mysql y solo tengo :
    Database |
    +——————–+
    | information_schema |
    | icinga |
    | icinga2 |
    | mysql |
    | performance_schema

    alguna idea?
    Gracias de antemano.

  11. deathbian dice:

    Hola. cuando introduzco el comando para importar la base de datos me suelta este error:
    Este es el comando que ingreso:
    mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
    Este es el error que me da:
    ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ctrl-C' at line 1
    No entiendo de MySQL pero en todas partes he leido que se hace así. Alguna idea?
    Gracias.

  12. Oscar dice:

    Deathbian

    Si realizas un cat /usr/share/icinga2-ido-mysql/schema/mysql.sql te mostrara en el archivo ‘Ctrl-C , exit o algo similar esto por que el » » el comando seria mysql -u root -p icinga > /usr/share/icinga2-ido-mysql/schema/mysql.sql , recuerda cambiar root por el usuario de la base de datos y icinga por el nombre de la base de datos…

  13. duven dice:

    cuando instale debian para posteriormente instalar icinga venia sin sendmail ni postfix, por eso creo q yo q no me decia nada de haber recibido mails cuando iniciaba la sesion root.
    Ahora he instalado sendmail y no se como hacer que icinga me los mande al mail local de sendmail.
    Alguien sabe algo?

  14. Anderson dice:

    Hola, instale icinga2 e icingaweb2 y todo bien pero cuando coloque un host en linux a ser monitoreado lo muestra en DOWN porque lo ping no responden y el equipo estan encendido y funcionando bien pero desde el servidor de icinga el equipo monitoreado no responden los ping. Sabes porque ocurre eso?

    • Hola Anderson,

      Que un equipo no responda a ping no depende de Icinga. En cualquier caso esta entrada ya es bastante antigua. Hay entradas sobre Icinga en versiones de distribuciones Linux más recientes. Si vas al buscador podrás buscar estas entradas.

      Respecto al ping este utiliza el puerto icmp 500, por lo que este tiene que estar abierto en el servidor a monitorizar.

      Saludos

  1. 18 enero, 2016

    […] y como vimos en el anterior apartado con Icinga2 podemos monitorizar hosts y servicios, igual que hacíamos con Nagios, con la ventaja […]

  2. 14 junio, 2018

    […] (hardware) Es similar a otros que he tratado durante estos años en la web, véase Nagios, Icinga o Pandora […]

  3. 16 mayo, 2019

    […] un tiempo os hablé de Icinga2, un sistema de monitorización avanzado, que podía cumplir con todos las funcionalidades […]

  4. 16 mayo, 2019

    […] de nada, tenemos que tener instalado Icinga2. El código del módulo está ubicado en GitHub y como no podía ser de otra manera está […]

  5. 16 mayo, 2019

    […] modo de ejemplo vamos a utilizar una máquina virtual, que tengo con el sistema de monitorización Icinga, con un sistema operativo CentOS 7. Podemos ver el sistema de […]

  6. 16 mayo, 2019

    […] (hardware) Es similar a otros que he tratado durante estos años en la web, véase Nagios, Icinga o Pandora […]

  7. 16 mayo, 2019

    […] cómo la domótica, la industria, el control de procesos o en servicios de monitorización como Icinga2 o […]

  8. 6 julio, 2019

    […] Icinga en Centos consulta el siguiente manual Si deseas instalar Icinga en Debian consulta el siguiente manual La instalación de herramientas de monitoreo en nuestros servidores siempre nos beneficiara para […]

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.