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í.
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!!!
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!!
Hola Jasan,
El plugin que utilizo para resaltar el código a veces también me hace esas cosas.
Saludos y gracias por comentar.
Gran post! tremendo tutorial te has marcado, a este paso te van a fichar para rehacer la wiki de Arch o algo así 🙂
Saludos!
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!!
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.
Hola,
Puedes revisar los logs ubicados en /var/log, y quizás así encuentres alguna respuesta para saber que pasa.
Un saludo
Hola, muy bueno el tuto, pero hay forma de pasar el icinga2 (web) a español???
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
Hola Martin,
Puedes revisar los logs ubicados en /var/log/ y allí verás alguna pista sobre lo que está pasando.
Saludos
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í?
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 !!!
Alejandro tuve el mismo problema y solo coloque la siguiente linea
#chmod 777 -R /etc/icingaweb
y lo solvente; Muy bueno tu post David.
hola amigo, excelente manual de casualidad tendrás uno donde agregues host remotos y monitorerlos mediante SNMP
gracias
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.
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.
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…
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?
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