En el post de hoy vamos a hablar de una herramienta de monitorización de infraestructuras, muy útil para tener controladas muchas máquinas desde un sólo sitio. Para ello utilizaremos Icinga 2.
Índice
¿Qué es Icinga?
Icinga es un fork de Nagios creado en el año 2009. Es un sistema de monitorización de infraestructuras que añade más funcionalidades a Nagios, entre las que encontramos una interfaz más moderna y adaptada a los diferentes dispositivos. Incorpora conectores adicionales a bases de datos y otra mejora importante es una API REST para que los desarrolladores puedan crear nuevas extensiones.
Icinga está en su versión 2, está desarrollado en el lenguaje C y utiliza la licencia GNU GPL (software libre). Además un apartado importante es su compatibilidad con los plugins de Nagios.
Principales Características
Entre sus características, podemos destacar:
- Monitorización de componentes de red (switches, routers, etc.)
- Monitorización de servicios de red (SMTP, POP3, HTTP, ping, etc.)
- Notificación a usuarios por correo electrónico
- Nivel de alertas
- Opción de utilizar la interfaz clásica o la actualizada
Además de estas, podemos ampliar las funcionalidades de icinga utilizando plugins propios o de nagios entre los que podemos destacar:
- Gráficos de rendimiento (NagiosGrapher, PNP4Nagios, etc.)
- Monitorización de procesos de negocio (NagVIS, Nagmap)
- Monitorización de host Windows (NSClient++, Cygwin)
- Herramientas de configuración e interfaz (Nconf, NagiosSQL)
Instalación de icinga 2 e icinga web 2
Para la instalación de icinga, nosotros hemos utilizado una distribución nueva de ubuntu 16.04, debido a esto, realizamos la instalación desde 0 de todas las herramientas necesarias para la ejecución correcta, como la instalación de apache, mysql, etc.
Antes de nada, actualizaremos nuestro sistema y lo reiniciaremos para dejarlo preparado
1 2 3 |
sudo apt-get update -y sudo apt-get upgrade -y sudo reboot |
Instalación de Apache
Instalaremos apache mediante el siguiente comando
1 |
sudo apt-get install apache2 -y |
Con apache instalado y, pensando en la seguridad, vamos a realizar un par de pasos que no son obligatorios pero que son recomendables.
Eliminaremos la página de bienvenida de Ubuntu por defecto para apache
1 |
sudo rm /var/www/html/index.html |
También denegaremos el acceso al listado de ficheros y directorios para cualquier visitante
1 |
sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf |
Ahora arrancaremos el servicio y lo guardaremos para que se ejecute en el arranque de nuestro sistema
1 2 |
sudo service apache2 start sudo systemctl enable apache2.service |
Configurar el firewall UFW
Ufw (Uncomplicated Firewall) es un cortafuegos desarrollado por Ubuntu y de uso muy simple. Configuraremos iptables utilizando un pequeño número de comandos simples.
Por defecto, el cortafuegos está deshabilitado en Ubuntu 16.04. Vamos a lanzar los siguientes comandos para permitir el tráfico entrante ssh, http y https, y después activaremos el cortafuegos
1 2 3 |
sudo ufw app list sudo ufw allow openSSH sudo ufw allow in "Apache Full" sudo ufw enable |
Instalación de MariaDB
Para la instalación de mariadb utilizaremos el siguiente comando
1 |
sudo apt-get install mariadb-client mariadb-server -y |
Ahora arrancaremos el servicio de mysql y lo activaremos para su arranque con el sistema
1 2 |
sudo service mysql start sudo systemctl enable mysql.service |
Pensando de nuevo en la seguridad, aseguraremos nuestra instalación de mariaDB
1 |
sudo /usr/bin/mysql_secure_installation |
Durante el proceso, responder a las preguntas como aparece a continuación, sustituyendo el password por el que ustedes elijan
1 2 3 4 5 6 7 8 |
Enter current password for root (enter for none): Enter Set root password? [Y/n]: Y New password: <new-password> Re-enter new password: <new-password> Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y |
Ahora modificaremos la autentificación de mysql del usuario root con la contraseña que establecimos anteriormente en mariadb
1 2 3 4 |
sudo mysql -u root -p UPDATE mysql.user SET authentication_string=PASSWORD('password'), plugin='mysql_native_password' WHERE user='root'; FLUSH PRIVILEGES; EXIT; |
Instalación de PHP
Instalaremos php 7.0, composer y varias extensiones para icinga 2 e icinga web 2
1 |
sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-gd php7.0-intl php7.0-xml php7.0-ldap php7.0-mysql php7.0-pgsql php-imagick -y |
Instalaremos composer
1 |
sudo apt-get install composer |
Ahora instalaremos el componente ZendFrameword DB utilizado por icinga
1 |
composer require zendframework/zend-db |
Después de todo esto, deberemos configurar la zona horaria adecuada para su máquina, lo que puede determinarse a partir de la página web oficial de PHP. Por ejemplo reside en California sería America/California
Para ellos editaremos el fichero php.ini
1 |
sudo vi /etc/php/7.0/apache2/php.ini |
Buscaremos la siguiente línea
1 |
;date.timezone = |
Y la modificaremos así
1 |
date.timezone = America/California |
Guardaremos el fichero
1 |
:wq! |
Y reiniciaremos el servicio de apache
1 |
sudo service apache2 restart |
Instalación de Icinga 2
Obtendremos una clave, añadiremos el repositorio y actualizaremos nuestro servidor
1 2 3 |
wget -O - http://packages.icinga.org/icinga.key | sudo apt-key add - sudo add-apt-repository 'deb http://packages.icinga.org/ubuntu icinga-xenial main' sudo apt-get update |
Ahora instalaremos icinga y los plugins que vamos a necesitar en este momento
1 |
sudo apt-get install icinga2 nagios-plugins -y |
Iniciaremos el servicio de Icinga y lo añadiremos al arranque del sistema
1 2 |
sudo service icinga2 start sudo systemctl enable icinga2.service |
Ahora vamos a pasar a la instalación de los diferentes plugins que utilizaremos. Antes de nada al igual que en otras herramientas, podemos ver una ayuda de los comandos disponibles con
1 |
icinga2 --help |
En este caso, para poder ver los plugins instalados y activados lanzaremos el siguiente comando
1 |
icinga2 feature list |
Por defecto, estarán activador los módulos checker, mainlog y notification.
Instalaremos ahora el módulo de mysql para icinga
1 |
sudo apt-get install icinga2-ido-mysql |
Durante el proceso de instalación, cuando nos pregunte si queremos activar la característica por defecto, seleccionaremos “no”. La activaremos después manualmente.
En el momento en que nos pregunte si queremos que nos configure nuestra base de datos le decimos también que no.
Accederemos a mysql y crearemos nuestra base de datos y usuario.
1 2 3 4 5 6 |
sudo mysql -u root -p CREATE DATABASE icinga2; GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga'; FLUSH PRIVILEGES; EXIT; |
Importaremos el esquema del módulo instalado anteriormente
1 |
sudo mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql |
Editaremos el archivo de configuración para incluir nuestros datos de acceso
1 |
sudo vi /etc/icinga2/features-available/ido-mysql.conf |
Buscaremos las siguientes líneas
1 2 3 4 |
user = "icinga2", password = "", host = "localhost", database = "icinga2" |
Y modificaremos los datos correspondientes a nuestra configuración.
Por último, activaremos el módulo y reiniciaremos el servicio
1 2 |
sudo icinga2 feature enable ido-mysql sudo service icinga2 restart |
Instalación de Icinga Web 2
Para la instalación de la aplicación web deberemos realizar una serie de pasos previos. Primero activaremos el módulo command
1 2 3 |
sudo icinga2 feature enable command sudo service icinga2 restart sudo icinga2 feature list |
Ahora crearemos el grupo icingacmd e incluiremos al usuario www-data en este grupo
1 2 |
sudo groupadd icingacmd sudo usermod -a -G icingacmd www-data |
Podemos comprobarlo de la siguiente forma
1 |
id www-data |
Ahora sí, instalaremos los paquetes de Icinga Web 2
1 |
sudo apt-get install icingaweb2 icingaweb2-module-monitoring icingaweb2-module-doc icingacli -y |
Crearemos nuestro virtualhost en apache y reiniciaremos el servicio
1 2 |
sudo icingacli setup config webserver apache --document-root /usr/share/icingaweb2/public sudo service apache2 restart |
Ya sólo nos quedan un par de pasos para terminar, tendremos que crear una nueva base de datos e importar el esquema de icinga a la misma.
1 2 3 4 5 6 |
sudo mysql -u root -p CREATE DATABASE icingaweb2; EXIT; sudo mysql -u root -p icingaweb2 < /usr/share/doc/icingaweb2/schema/mysql.schema.sql |
Ya lo tendríamos todo listo. Nos faltaría generar un toquen que nos solicitará antes de empezar la instalación. Lo generamos con el siguiente comando
1 |
sudo icingacli setup token create |
Accederemos ahora a través de la siguiente url
1 |
http://localhost/icingaweb2/setup |
Y nos abrirá la siguiente página
Ingresaremos el token generado anteriormente y pulsaremos el botón Next.
En la siguiente página nos preguntará que queremos instalar, por defecto, sólo instalaremos la monitorización.
En la siguiente pestaña nos mostrará los componentes necesarios, si hemos seguido todos los pasos deberían salir todos en verde, pulsaremos next en tal caso. Si no tendremos que instalar o realizar los cambios oportunos.
Continuando en la siguiente pantalla
Rellenaremos los datos de nuestro servidor y base de datos. Pinchando en el botón “Validate Configuration” comprobaremos si los datos son correctos, en tal caso pinchamos next.
Continuaremos con la actualización de backend, en nuestro caso sería icingaweb2.
Después añadiremos los datos de acceso de nuestro usuario administrador, en nuestro caso icingaweb2admin e icingaweb2pass
En la siguiente pantalla aplicaremos la configuración de nuestra aplicación, aplicaremos los cambios tal y como aparece en la siguiente imagen
Seguiremos avanzando entre las diferentes ventanas hasta llegar a la sección “Monitoring Backend”, en esta sección el nombre en nuestro caso sería “icinga” y el tipo IDO.
Después configuraremos de nuevo los datos de nuestro entorno
Continuaremos a la ventana Command Transport, el nombre utilizado será icinga2, el tipo “Local Command File” y el archivo sería /var/run/icinga2/cmd/icinga2.cmd
En la siguiente ventana, “Monitoring Security”, dejamos los valores por defecto *pw*,*pass*,comunity
Continuaremos confirmando los pasos siguientes y ya tendríamos instalado nuestra herramienta.
Para loguearnos accedemos a http://localhost/icingaweb2/authentication/login
Y en una primera instancia ya podemos ver nuestro sistema en local
Ya lo tenemos todo por ahora. En un próximo post y por no hacer excesivamente largo este, explicaremos como definir un nuevo host y monitorizar sus servicios.
Nos vemos en el siguiente post. Cualquier duda u opinión como siempre en los comentarios.
super excelente guia
al pie de la letra trabaja muy bien
Nota: al momento de cargar el esquema de la base de datos de icicngaweb2, el archivo se encuentra en: /usr/share/icingaweb2/etc/schema/mysql.schema.sql
en la uitime versin de icicngaweb2
felicitaciones