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.
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.
sudo apt update
sudo apt install apache2
sudo apt install php5
Respecto a la base de datos vamos a instalar MariaDB
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:
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:
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:
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Europe/Madrid
always_populate_raw_post_data = -1
Reiniciamos el servicio:
sudo systemctl restart apache2.service
Procedemos a la descarga del proyecto, desde su página web, utilizando el programa de descargas wget.
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:
tar xfz zabbix-3.0.4.tar.gz
Accedemos a la carpeta recién creada y compilamos:
sudo -s
cd zabbix-3.0.4
./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:
Seguimos con la compilación:
make
make install
Creación de usuario y grupo
Ya estamos acabando, ahora le toca el turno a la creación de usuario y grupo
groupadd zabbix
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:
mysql -u root -p
Una vez dentro añadimos la configuración:
CREATE DATABASE zabbix;
GRANT ALL privileges ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'nuestra-contraseña'
FLUSH privileges;
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
ls database/mysql/
mysql -u zabbix -p zabbix < schema.sql
mysql -u zabbix -p zabbix < images.sql
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:
rm /var/www/html/index.html
cp -rf frontends/php/* /var/www/html/
Por últimos, añadimos el usuario zabbix al grupo www-data y habilitamos el módulo ssl:
usermod -aG www-data zabbix
a2enmod ssl
a2ensite default-ssl
chown -R www-data /var/www/html/conf/
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:
nano /usr/local/etc/zabbix_server.conf
Tendría que quedar algo similar a los parámetros:
ListenPort=10051
LogFile=/var/log/zabbix_server.log
DBHost=localhost
DBName=zabbix ## Si usamos otro nombre de base de datos lo debemos indicar
DBUser =zabbix ## Idem para el usuario
DBPassword=password ## Aquí nuestra contraseña de base de datos
DBSocket=/var/run/mysqld/mysqld.sock
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:
touch /var/log/zabbix_server.log
chmod 775 /var/log/zabbix_server.log
chgrp zabbix /var/log/zabbix_server.log
Iniciar servicios
Ya lo tenemos todo listo, antes de ir al panel web, debemos arrancar los servicios:
/usr/local/sbin/zabbix_server
/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
Ha funcionado, bueno, por lo menos hasta aquí.
En el siguiente apartado comprobamos que nuestro servidor cumple con los requisitos necesarios:
Vemos que sí, hemos hecho el trabajo bien, y de momento todo marcha bien.
Añadimos los datos de nuestra base de datos, que antes hemos configurado.
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.
El usuario principal es ‘admin‘ y la contraseña ‘zabbix‘, no la probéis en mi servidor, la he cambiado 😛
Pues ya lo tenemos listo, sólo una última cosa, debemos añadir los demonios al arranque del sistema, modificado el fichero 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 y configurar nuestros hosts
En la elaboración del artículo he utilizado información de diferentes fuentes:
Para más información podéis consultar la web oficial de Zabbix.