Monitorización de redes con Zabbix

Hace unos días visité una empresa de servicios de sistemas informáticos, donde me hablaron de una plataforma de monitorización de redes que desconocía, su nombre era Zabbix. Pues bien, ya sabéis que soy una persona de culo inquieto, así que me he puesto a investigar un poco y aquí os dejo mi experiencia.

zabbix-logo

Sobre Zabbix

Se trata de un sistema de monitorización de redes, creado por Alexei Vladishev. Diseñado para controlar los estados de varios servicios de red, servidores y maquinaria (hardware) Es similar a otros que he tratado durante estos años en la web, véase Nagios, Icinga o Pandora FMS.

Vayamos un poco más al detalle, el producto nos promete:

  • Chequeos simples de sistemas para verificar su disponibilidad y su nivel de respuesta, ejemplo de ello sería SMTP o HTTP, sin necesidad de instalar ningún programa sobre el host monitorizado.
  • Permite la instalación de agentes sobre sistemas GNU Linux, UNIX o Microsoft Windows, para obtener estadísticas como ciclos de CPU, espacio en disco, tráfico de red, etcétera.
  • Nos ofrece una alternativa a la instalación de agentes, utilizando los protocolos SNMP, TCP o ICMP, hasta otros como el clásico telnet.  Incluye mecanismos de notificación en tiempo real, por ejemplo XMPP (ya sabéis Jabber)

A nivel de funcionalidades, destacan:

  • Posibilidad de controlar cientos de miles de servicios y dispositivos, esto es, alto rendimiento y capacidad.
  • Auto descubrimiento y servicios en la red.
  • Agentes nativos en diferentes plataformas.
  • Existe la posibilidad de monitorizar sin agentes.
  • Monitorización distribuida y administración web centralizada.
  • Configuración de permisos de usuarios y grupos.
  • Notificación de eventos (Email, XMPP entre otros)

Es software libre, utiliza una licencia GNU GPL en su versión 2.

Laboratorio de pruebas

Para funcionar nuestro servidor, yo utilizaré un servidor Debian Jessie, debe cumplir una serie de requisitos. Básicamente es un servidor LAMP, aunque al respecto de la base de datos podemos utilizar privativas como Oracle o libres, que es nuestro caso, ya que utilizaré MariaDB

Los requisitos más importantes es que tenga instalado un servidor web con Apache en su versión 1.3.12 o superior, además de PHP en su versión 5.1.6 o superior. Atento con cumplir con estos requisitos si queremos que todo funcione.

Añadido que se necesitan esta serie de programas o librerías:

  • build-essential, gcc, curl, wget, libsnmp-dev, libcurl4-gnutls-dev y libxml-dev

Para la ocasión he creado un VPS en la nube, concretamente sus características:

  • Sistema operativo Debian Jessie 8.5
  • 512 MB de memoria
  • 20 GB de disco
  • 1 CPU

Para conectarme utilizaré ssh. Una vez dentro añadiremos un nuevo usuario y le daremos permisos de administrador, para así no utilizar root. En su día hablé del asunto. Otra cosa importante es cambiar el puerto por defecto de ssh, también podéis consultar el artículo al respecto.

Vamos al turrón, instalamos primero Apache2 y PHP.

  1. sudo apt update
  2. sudo apt install apache2
  3. sudo apt install php5

Respecto a la base de datos vamos a instalar MariaDB

  1. sudo apt install mariadb-server mariadb-client libmysqld-dev

Durante el proceso de instalación debemos indicar la contraseña del usuario principal.

En el siguiente paso instalamos todas las librerías necesarias:

  1. apt install build-essential gcc curl wget libsnmp-dev libcurl4-gnutls-dev libxml2-dev

Como viene siendo habitual, ahora utilizaremos el programa mysql_secure_installation, para asegurar la instalación.

También instalaremos una serie de paquetes y librerías para el correcto funcionamiento del servidor LAMP:

  1. sudo apt install php5-mysql php5-gd php5-cli php5-xmlrpc

Una vez instalados los programas y las librerías debemos modificar los parámetros del fichero php.ini, ubicado en /etc/php5/apache2/php.ini, con la configuración:

  1. post_max_size = 16M
  2. max_execution_time = 300
  3. max_input_time = 300
  4. date.timezone = Europe/Madrid  
  5. always_populate_raw_post_data = -1

Reiniciamos el servicio:

  1. sudo systemctl restart apache2.service

Procedemos a la descarga del proyecto, desde su página web, utilizando el programa de descargas wget.

  1. wget http://sourceforge.net/projects/zabbix/files/ZABBIX\ Latest\ \Stable/3.0.4/zabbix-3.0.4.tar.gz

Utilizamos el programa tar, para descomprimir el fichero:

  1. tar xfz zabbix-3.0.4.tar.gz

Accedemos a la carpeta recién creada y compilamos:

  1. sudo -s
  2. cd zabbix-3.0.4
  3. ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

Estos parámetros podemos adaptarlos a nuestras necesidades. Si todo ha ido bien, hasta esta parte, veremos un resultado como el de la imagen:

zabbix-compilacion-1

Seguimos con la compilación:

  1. make 
  2. make install

Creación de usuario y grupo

Ya estamos acabando, ahora le toca el turno a la creación de usuario y grupo

  1. groupadd zabbix
  2. useradd -g zabbix -d /usr/local/share/zabbix -s /bin/false zabbix

Pasemos al siguiente paso.

Creación y configuración de base de datos

Ya hemos instalado a principio del tutorial el motor de base de datos MariaDB. Ahora toca crear la base de datos propiamente dicha y configurarla:

  1. mysql -u root -p

Una vez dentro añadimos la configuración:

  1. CREATE DATABASE zabbix;
  2. GRANT ALL privileges ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'nuestra-contraseña'
  3. FLUSH privileges;
  4. exit;

Esto es un tutorial, pero por seguridad, os recomiendo utilizar un nombre de usuario y base de datos, diferente del propio nombre del producto.

Accedemos dentro del directorio database/mysql, y añadimos al proyecto diferentes ficheros .sql

  1. ls database/mysql/
  2. mysql -u zabbix -p zabbix < schema.sql
  3. mysql -u zabbix -p zabbix < images.sql
  4. mysql -u zabbix -p zabbix < data.sql

Configurar servidor web Apache

Pues sí, el tutorial está quedando más largo que un día sin pan : )

Ahora vamos a por la parte de configuración web, concretamente de nuestro servidor Apache.

Borramos el fichero de configuración por defecto, y añadimos el del proyecto:

  1. rm /var/www/html/index.html
  2. cp -rf frontends/php/* /var/www/html/

Por últimos, añadimos el usuario zabbix al grupo www-data y habilitamos el módulo ssl:

  1. usermod -aG www-data zabbix 
  2. a2enmod ssl
  3. a2ensite default-ssl
  4. chown -R www-data /var/www/html/conf/
  5. systemctl restart apache2.service

Configurar el servidor Zabbix

Ieeeeep!, todavía no hemos acabado. Queda configurar el núcleo de la plataforma. Para ello modificaremos el fichero de configuración principal:

  1. nano /usr/local/etc/zabbix_server.conf

Tendría que quedar algo similar a los parámetros:

  1. ListenPort=10051
  2. LogFile=/var/log/zabbix_server.log
  3. DBHost=localhost   
  4. DBName=zabbix  ## Si usamos otro nombre de base de datos lo debemos indicar
  5. DBUser =zabbix   ## Idem para el usuario
  6. DBPassword=password  ## Aquí nuestra contraseña de base de datos
  7. DBSocket=/var/run/mysqld/mysqld.sock
  8. DBPort=3306

Con anterioridad hemos indicado un directorio y un fichero para almacenar los logs. Para evitar problemas lo vamos a crear de manera manual, y asignarle permisos:

  1. touch /var/log/zabbix_server.log
  2. chmod 775 /var/log/zabbix_server.log
  3. chgrp zabbix /var/log/zabbix_server.log

Iniciar servicios

Ya lo tenemos todo listo, antes de ir al panel web, debemos arrancar los servicios:

  1. /usr/local/sbin/zabbix_server
  2. /usr/local/sbin/zabbix_agentd

Fronend Interface Web

Ya está, ha pasado lo más duro, ahora ya podemos ir a la web, escribiendo https://nuestra-ip/setup.php

zabbix-frontend-001

Ha funcionado, bueno, por lo menos hasta aquí.

En el siguiente apartado comprobamos que nuestro servidor cumple con los requisitos necesarios:

zabbix-frontend-002

Vemos que sí, hemos hecho el trabajo bien, y de momento todo marcha bien.

zabbix-frontend-003

Añadimos los datos de nuestra base de datos, que antes hemos configurado.

zabbix-frontend-004

Al finalizar vemos un resumen de la configuración. Se observa, justo al final, que he creado un subdominio llamado zabbix.ochobitsunbyte.pw, desde donde realizaré las pruebas. Lo podéis consultar si queréis. Os puedo crear un usuario.

zabbix-frontend-005

El usuario principal es ‘admin‘ y la contraseña ‘zabbix‘, no la probéis en mi servidor, la he cambiado 😛

zabbix-frontend-006

Pues ya lo tenemos listo, sólo una última cosa, debemos añadir los demonios al arranque del sistema, modificado el fichero rc.local

zabbix-rc-local

¿Qué os ha parecido la instalación? Ya estamos listo para trabajar con él, nos queda muchísima faena por delante.

Aquí os dejo los siguientes artículos:

Añadir idiomas adicionales

Añadir y configurar nuestros hosts

En la elaboración del artículo he utilizado información de diferentes fuentes:

Wikipedia | tecmint

Para más información podéis consultar la web oficial de Zabbix.