Monitorización de Servidores mediante Zabbix

Hoy en día la tecnología de la información se extiende por casi todas las empresas, que hacen uso de ella para facilitar su trabajo diario, optimizando el tiempo para conseguir mayor rentabilidad. La implementación de una infraestructura de red supone un gran desembolso económico, por lo que debe prestarse especial atención a su funcionamiento y control, preservando así la inversión realizada. Mediante los sistemas de monitorización podemos evitar pérdidas económicas importantes derivadas de la falta de disponibilidad de nuestros servicios. En este artículo os voy a presentar una aplicación muy interesante llamada Zabbix.
Zabbix es una solución de código abierto que ofrece características de monitorización avanzadas, alertas y visualización, permitiendo de esta manera actuar rápidamente  sobre cualquier problema en un servidor. Entre sus principales funciones destacan:

  • Monitorización distribuida  con administración web centralizada.
  • Detección por rangos IP, servicios y SNMP.
  • Notificaciones por correos, sms, etc.
  • Visualización de mapas, gráficos, vistas personalizadas, etc.
  • Almacenamiento de datos en Oracle, MySQL, PostgreSQL y SQLite.
  • Agentes en diversas distribuciones (cliente software para Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows 2000, Windows 2003, Windows XP y Windows Vista).

Como podemos comprobar es una solución bastante versátil y potente teniendo en cuenta que no tiene coste. Además dispone de una gran documentación tanto en wiki, foros y comunidades.
Para utilizar Zabbix, necesitaremos disponer de los siguientes requisitos mínimos:

  • Apache 1.3.12 o superior.
  • PHP 4.3 o superior.
  • Mysql 3.22 o superior
  • php-mysql
  • net-snmp-devel (para soporte SNMP)

Vamos a realizar la instalación de Zabbix en un equipo con Debian 6.0 «squeeze», la última versión estable de Debian. Para ello seguiremos los siguientes pasos:
Para instalar las librerías necesarias, ejecutamos lo siguiente en una consola como root:
[crayon lang=»script»]
apt-get install apache2 php5 libapache2-mod-php5 php5-gd php5-mysql mysql-server libmysql++-dev libsnmp-dev
libcurl4-openssl-dev libiksemel-dev openssh-server libssh2-1-dev build-essential fping
[/crayon]
Es muy importante asignar una contraseña al usuario root para MySQL.

 El siguiente paso, será la creación del  usuario zabbix, necesario para el funcionamiento seguro del sistema. Para ello ejecutamos el siguiente comando como root y dejamos todas las opciones como aparecen de forma predeterminada:
[crayon lang=»script»]
adduser –disabled-password –disabled-login zabbix
[/crayon]

Descargaremos las últimas fuentes de zabbix visitando la página http://sourceforge.net/project/showfiles.php?group_id=23494
donde copiaremos el enlace de descarga y ejecutamos los siguientes comandos como root y zabbix para descargarlas y descomprimirlas:
[crayon lang=»script»]
su – zabbix
wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/1.8.10/zabbix-1.8.10.tar.gz
tar xzf zabbix-1.8.10.tar.gz
[/crayon]

Crearemos la base de datos que utilizará Zabbix y le asignaremos los permisos necesarios ejecutando los siguientes comandos como zabbix:
[crayon lang=»script»]
mysql -u root -p #Introducir la contraseña que configuramos durante la instalación de MySQL
create database zabbix character set utf8;
grant all privileges on zabbix.* to ‘zabbix’@’localhost’ identified by ‘zabbix’;
quit
[/crayon]
Ya tenemos creada la base de datos, ahora vamos a importar las plantillas. Ejecutamos los siguientes comandos como zabbix:
[crayon lang=»sql»]
cd zabbix-1.8.2/create/
mysql -p zabbix < schema/mysql.sql     # Introducir contraseña del root MySQL
mysql -p zabbix < data/data.sql     # Introducir contraseña del root MySQL
mysql -p zabbix < data/images_mysql.sql     # Introducir contraseña del root MySQL
[/crayon]

A continuación configuramos el paquete de zabbix que hemos descargado, lo compilamos y lo instalamos. Primero configuramos las fuentes para  instalar el agente en el servidor Zabbix, utilizar MySQL y el soporte para SNMP, CURL y JABBER.
[crayon lang=»script»]
cd ..
./configure –enable-server –enable-agent –with-mysql –with-net-snmp –with-libcurl –with-jabber
[/crayon]
Ahora vamos a compilar e instalar las fuentes, para ello ejecutamos los siguientes comandos como zabbix y root:
[crayon lang=»script»]
su     # Introducir contraseña de root
make install
[/crayon]

Una vez instalado,  es recomendable declarar los puertos que usa Zabbix en el fichero /etc/services, para ello ejecutamos los siguientes comandos como root:
[crayon lang=»script»]
cat >> /etc/services <<EOF
zabbix_agent 10050/tcp
zabbix_trap 10051/tcp
EOF
[/crayon]
Creamos el directorio donde se almacenarán los ficheros de configuración y le asignamos el propietario (zabbix). Ejecutamos los siguientes comandos como root:
[crayon lang=»script»]
mkdir /etc/zabbix
chown -R zabbix:zabbix /etc/zabbix
cp misc/conf/zabbix_* /etc/zabbix
[/crayon]

Editamos el fichero de configuración del servidor Zabbix para declarar los parámetros de conexión a la base de datos MySQL. Para ello como root ejecutamos los siguientes comandos:
[crayon lang=»script»]
nano /etc/zabbix/zabbix_server.conf
DBUser=zabbix #Definimos el usuario de la base de datos.
DBPassword=zabbix #Definimos la contraseña del usuario.
[/crayon]

Para que el servidor Zabbix y el agente arranquen durante el inicio del sistema, ejecutamos el siguiente comando en nuestra consola como root:
[crayon lang=»script»]
cp misc/init.d/debian/zabbix-* /etc/init.d/
[/crayon]
Editamos el script de inicio del servidor Zabbix ejecutando los siguientes comandos como root y reemplazando las variables que se muestran a continuación:
[crayon lang=»script»]
nano /etc/init.d/zabbix-server
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
DAEMON=/usr/local/sbin/${NAME}
[/crayon]
Y ahora modificamos el script de inicio del agente Zabbix. De nuevo como root ejecutamos los siguientes comandos y reemplazamos las variables:
[crayon lang=»script»]
nano /etc/init.d/zabbix-agent
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
DAEMON=/usr/local/sbin/${NAME}
[/crayon]
Le asignamos los permisos necesarios a ambos scripts y configuramos en qué nivel de arranque se van a iniciar. Para ello como root ejecutamos los siguientes comandos:
[crayon lang=»script»]
chmod 755 /etc/init.d/zabbix-*
update-rc.d zabbix-server defaults
update-rc.d zabbix-agent defaults
[/crayon]

Ahora iniciamos Zabbix tanto el servidor como agente con los scripts de inicio configurados. Por lo tanto como root ejecutamos estos comandos:
[crayon lang=»script»]
/etc/init.d/zabbix-server start
/etc/init.d/zabbix-agent start
[/crayon]

Para el acceso a la administración de zabbix, es necesario instalar la interfaz Web, para ello vamos a seguir los siguientes comandos como root:
[crayon lang=»script»]
cd /var/www
rm index.html
cp -R /home/zabbix/zabbix-1.8.2/frontends/php/* .
[/crayon]
Zabbix necesita que algunos parámetros de PHP sean modificados. Como root ejecutamos los siguientes comandos y cambiamos dichos valores:
[crayon lang=»script»]
vi /etc/php5/apache2/php.ini
max_execution_time = 300
max_input_time = 600
post_max_size = 32M
date.timezone = Europe/Madrid
apache2ctl restart
[/crayon]

LLegados a este punto,  accedemos a la dirección de nuestro servidor Zabbix mediante un explorador web, escribiendo: http://IP_Zabbix. Desde donde instalaremos el front-end de zabbix:

  1. En la pantalla de introducción pulsamos sobre el botón Next.
  2. Aceptamos la licencia marcando la casilla y pulsando en Next.
  3. Comprobamos los requisitos de Zabbix  y pulsamos sobre Next.
  4. Configuramos la conexión a la base de datos, introduciendo el nombre, usuario y contraseña. Hacemos un test de la conexión y si todo es correcto podremos pulsar en el botón Next.
  5. Dejamos de forma predeterminada los detalles del servidor Zabbix y pulsamos en Next.
  6. Comprobamos el resumen de la pre instalación y pulsamos en el botón Next.
  7. Ahora nos dará un error, donde nos avisa que no ha sido posible modificar los datos en el fichero de configuración. Esto es debido a los permisos, para solucionarlo podemos descargar el fichero de configuración pulsando sobre Save configuration file. Y mediante un cliente ftp lo subimos a la ruta que nos especifica el servidor. Una vez súbido pulsamos en Retry ya nos permitirá pulsar en el botón Next.
  8. Para terminar con la configuración Web hacemos clic en Finish.

Iniciamos sesión como usuario admin y contraseña zabbix, y accedemos al panel de control.

Para activar la monitorización del servidor zabbix, nos dirigimos al apartado Configuration | Hosts y allí marcamos el host que aparece. Seleccionamos Activate Selected de la lista desplegable y pulsamos Go.
Podremos comprobar que el estado habrá cambiado de no monitorizado a monitorizado.
Una vez instalado el servidor zabbix que monitorizará la red, debemos instalar el agente en los clientes para poder controlarlos desde el servidor. Para ello, descargamos el paquete adecuado de esta página.
Para su instalación en windows, seguimos los siguientes pasos:

Si disponemos de servidores Linux/Unix en la red, seguiremos los siguientes pasos:
Descomprimimos el paquete y lo instalamos:
[crayon lang=»linux»]
[root@josemari]# tar -xzvf zabbix-1.6.2.tar.gz
[root@josemari]# cd zabbix-1.6.2
[root@josemari zabbix-1.6.2]#./configure –enable-agent –prefix=/usr/local/zabbix
[root@josemari zabbix-1.6.2]# make install
[root@josemari zabbix-1.6.2]# adduser zabbix
[/crayon]
Añadimos los puertos que utilizará el agente zabbix en /etc/services.
[crayon lang=»linux»]
[root@josemari zabbix-1.6.2]# echo ‘zabbix_agent 10050/tcp’ >> /etc/services
[root@josemari zabbix-1.6.2]# echo ‘zabbix_trap 10051/tcp’ >> /etc/services
[/crayon]
Copiamos los fichermos de configuración a /etc/zabbix.
[crayon lang=»linux»]
[root@josemari zabbix-1.6.2]# mkdir /etc/zabbix
[root@josemari zabbix-1.6.2]# cp misc/conf/zabbix_agentd.conf /etc/zabbix
[/crayon]
Editamos el siguiente fichero /etc/zabbix/zabbix_agentd.conf, y añadimos:
Server=192.168.1.45   [Dirección IP del servidor Zabbix]
Hostname=Zabbix_Server [Nombre del servidor Zabbix – Es sensible a mayúsculas]
Configuramos /etc/init.d/
[crayon lang=»linux»]
[root@josemari zabbix-1.6.2]# cp misc/init.d/redhat/zabbix_agentd_ctl /etc/init.d/zabbix_agentd\\
[/crayon]
Editamos el fichero /etc/init.d/zabbix_agentd, y añadimos justo debajo de #!/bin/sh estas líneas incluyendo la #.
# chkconfig: 345 95 95
# description: Zabbix Agentd
Comprobamos los siguientes parámetros y los modificamos si hace falta:
BASEDIR=/usr/local/zabbix
ZABBIX_AGENTD=$BASEDIR/sbin/zabbix_agentd [Cambiamos bin por sbin]
Configuramos el inicio automático del agente zabbix.
[crayon lang=»linux»]
[root@josemari zabbix-1.6.2]# chkconfig –level 345 zabbix_agentd on
[/crayon]
Editamos el archivo del agente zabbix /etc/hosts.allow añadiendo la dirección IP del servidor Zabbix.
Arrancamos el agente.
[crayon lang=»linux»]
[root@josemari]# /etc/init.d/zabbix_agentd start
[/crayon]
Comprobamos el archivo de logs, para ver si todo es correcto:
[crayon lang=»linux»]
[root@josemari]# cat /tmp/zabbix_agentd.log
5392:20090202:115848 zabbix_agentd started. ZABBIX 1.6.2.
5393:20090202:115848 zabbix_agentd collector started
5394:20090202:115848 zabbix_agentd listener started
5395:20090202:115848 zabbix_agentd listener started
5396:20090202:115848 zabbix_agentd listener started
5397:20090202:115848 zabbix_agentd active check started [192.168.1.45:10051]
[/crayon]
Una vez hemos agregado los agentes a los servidores, podremos controlar su funcionamiento desde el front-end de zabbix. Para ello primero debemos activar la monitorización del servidor Zabbix.

Para activar el servidor, accedemos a la pestaña Configuración | Hosts seleccionamos el servidor y lo activamos pulsando Go.
Y finalmente vemos como ahora está activo y monitorizando.
Zabbix permite personalizar su interfaz, cambiar el idioma, etc, simplemente accediendo a las propiedades del perfil de usuario y seleccionando los valores deseados:

Como podemos ver en la siguiente captura, la apariencia ha cambiado totalmente. Un aspecto que hace a zabbix muy interesante es la capacidad de descubrir los hosts de la red de forma automática. Para ello, se activa el rango de red que se quiere administrar.
De esta manera si accedemos a la pestaña Monitorización | Descubrimiento podemos ver los equipos conectados a la red.
Ahora si queremos monitorizar un equipo, debemos añadirlo al panel de control de zabbix. Esto se hace en la pestaña Configuración | Equipos donde pulsaremos en Crear Equipo.
Después de introducir los datos referentes a los equipos que queremos controlar, también podemos añadir plantillas(templates) las cuales nos permiten supervisar ciertos procesos del sistema. Ahora podemos ver los equipos que estamos monitorizando.
En la pestaña principal Monitorización | Dashboard podemos ver un conjunto de valores sobre el funcionamiento de los equipos de la red.
En la pestaña Pantallas, podemos ver unos gráficos muy interesantes sobre los servidores y crear esquemas de nuestr propia red.

 
Esquema de mi red local:
Zabbix nos permite crear usuarios y asignarle a uno varios grupos para así otorgarle diferentes permisos de acuerdo al tipo de perfil que deseemos crear.
Además nos permite llevar un control de los accesos mediante un log. Pudiendo filtrar los eventos por usuarios, etc.
Como buen sistema de monitorización, zabbix nos permite enviar alertas a los usuarios o grupos de usuarios que especifiquemos. Las alertas pueden ser por correo electrónico, sms, etc.

Como vemos es un sistema de monitorización muy completo y potente. Además podemos instalar la aplicación Webmin, que aunque no lleva ningún módulo para controlar Zabbix ya que éste se controla totalmente vía web, si que dispone de un módulo de MySQL muy interesante que nos permite realizar y planificar las copias de seguridad de nuestro servidor Zabbix.
Para instalar webmin, ejecutamos en un terminal:
[crayon lang=»linux»]
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.420-1.noarch.rpm
# rpm -ivh webmin-1.400-1.noarch.rpm
# service webmin status
[/crayon]
Accedemos a la interfaz de webmin, con la dirección IP del equipo y el puerto por defecto 10000.
Una vez dentro, nos dirigimos a la pestaña Servidores | Servidor de MyQL. Y veremos las bases de datos de que disponemos. Como podemos ver, tenemos la BD de Zabbix.
La seleccionamos y pulsamos la opción Respaldar.
En el menú que aparece podremos elegir diferentes opciones para la copia de la BD.
Así tendremos una copia de la BD fácilmente.
Otra característica más a resaltar, es la posibilidad de controlar el panel de zabbix mediante un teléfono móvil. Para ello podemos descargar de la página oficial, la aplicación correspondiente para el tipo de sistema operativo de nuestro teléfono.

Como hemos visto, Zabbix dispone de numerosas opciones de monitorización, personalización, es muy flexible y una característica muy importante es que es software libre. Para el que quiera aprender más sobre Zabbix, existe bastante información tanto en foros, blogs, wikis, etc. Podéis visitar estas páginas donde encontraréis más información:

Página oficial  |  Blog  |  Documentación  | Foros  | 

Espero que les sea de gran ayuda. Un saludo!!!