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.

icinga-logo

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”

Icinga-Web-1-8-Status-Map

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
2
3
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:

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
2
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:

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
2
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:

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

You may also like...

17 Responses

  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!!

  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.

  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 […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR