Páginas

9 de junio de 2014

Instalar Zabbix 2.2.x en Ubuntu 14.04

Hoy voy a explicar cómo instalar Zabbix, la mejor aplicación de monitorización, en Ubuntu Server 14.04.

Una vez instalado Ubuntu Server (en máquina virtual o real), recomiendo ponerle una dirección IP fija para que no nos esté cambiando continuamente de sitio y mantenerlo localizado. Editamos (con lo que prefiráis, a mi me justa joe) el archivo /etc/network/interfaces:
sudo joe /etc/network/interfaces
que originalmente estará así:
# The primary network interface
auto eth0
iface eth0 inet dhcp
y debe quedarnos algo parecido a esto (pero claro, adaptado a vuestra red):
# The primary network interface
auto eth0
iface eth0 inet static
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
#DNS configurations
dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4
Para que los cambios surtan efecto, reiniciamos la interfaz de red:
sudo service networking restart
Añadimos el nombre completo (host + red) al archivo /etc/hostname, que debe quedar algo así:
zabbix
zabbix.dominio.net
Y editamos el archivo /etc/hosts para que quede similar a:
127.0.0.1 localhost
10.9.9.202 zabbix.dominio.net zabbix
Con esto, lo mejor ahora mismo es reiniciar la máquina para que todos los cambios surgan efecto.
Descargamos el paquete que nos configurará los repositorios para instalar la última versión de zabbix adaptada para Ubuntu (servicios de arranque automático, localización de archivos de log y configuración...), lo instalamos, y actualizamos la lista de paquetes disponibles:
wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+trusty_all.deb
sudo dpkg -i zabbix-release_2.2-1+trusty_all.deb
sudo apt-get update
Con esto, ya podemos empezar la instalación de zabbix. Es recomendable que cada "servicio" de Zabbis (server, proxy, frontend y base de datos) estén en máquinas independientes, y los pasos son exactamente los mismos, pero para esta prueba lo haremos sobre la misma máquina.
Empezaremos instalando el servidor y el frontend:
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
Si no habíamos instalado los paquetes del servidor LAMP, lo hará ahora, y nos pedirá la contraseña para el usuario root de MySql (guardarla en lugar seguro). Luego, nos la volverá a pedir la instalación de zabbix para poder conectarse y crear la base de datos y tablas requeridas. Además, nos pedirá una nueva contraseña para el usuario zabbix de MySql que usará el server y el frontend para conectarse a la base de datos.
Debemos editar el fichero de configuración para Apache del frontend de zabbix, en la sección donde indica las variables que usará php, la zona horaria del servidor, que en principio, debería coincidir con lo indicado en /etc/timezone. Así, editamos el archivo /etc/zabbix/apache.conf y dejamosdicha línea así:
    php_value date.timezone Europe/Madrid
O la zona horaria a la que pertenezcamos.
Ahora vamos a enlazar esa configuración en apache y habilitarla:
sudo ln -s /etc/zabbix/apache.conf /etc/apache2/sites-available/001-zabbix.conf
sudo a2ensite 001-zabbix
sudo service apache2 reload
Ahora, para mayor seguridad, vamos a habilitar la comunicación encriptada del frontend habilitando SSL en Apache, y deshabilitamos el servidor web "raíz":
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2dissite 000-default
Editamos el archivo /etc/apache2/ports.conf para comentar la línea en la que dejamos el puerto 80 a la escucha, así el servidor sólo atenderá al puerto 443-https. Debe quedar esa línea así:
#Listen 80
Y reiniciamos Apache:
sudo service apache2 restart
Ahora ya tenemos completamente instalado y securizado zabbix server y el frontend. La base de datos está configurada y todo activo. Entraremos en la interfaz web para empezar la configuración del frontend. En el navegador iremos a la dirección https://192.168.0.100/zabbix o (si tenemos el host en nuestro DNS): https://zabbix.dominio.net/zabbix


La primera vez puede salirnos un aviso como éste, si no hemos configurado apache con un certificado de confianza para nuestro navegador (pero eso es tema para otro tutorial), como somos conscientes de ello, le damos a continuar.
La página de bienvenida. Abrimos una cervecita pues lo más duro ha pasado y pinchamos en "Next".
En esta ventana, dado que al instalar los paquetes se  han instalado todas las dependencias requeridas, no debiera haber nada en error y podremos darle a "Next".
Ahora configuraremos la conexión del frontend a la base de datos, que lleva sus propias tablas de configuración, para ello debemos darle una cuenta que le permita usar las tablas de zabbix. En vez de usar la de "root", que pone por defecto, recomiendo usar la cuenta "zabbix" -de mysql- que creamos en la instalación del server. Cuando lo hayamos cubierto, le damos a "Test Connection" para comprobar que lo hicimos correctamente y avanzamos con "Next".
Ahora deberemos informarle al frontend que estamos configurando la conexión al zabbix server al que queremos conectarnos. Si se encuentra en la misma máquina, será "localhost", el puerto (por defecto, 10051) y el nombre "aparente" que tendrá la instalación. Se trata de una descripción que aparecerá en el frontend indicando dónde estamos conectados. Al terminar, pulsamos en "Next".
Nos presenta un resumen de la configuración que acabamos de hacer. Si todo está correcto, no hay más que pulsar en "Next".
Si todo lo hemos hecho bien, ésta será la pantalla final de la instalación del frontend, y sólo tendremos que pulsar en "Finish" para terminar .
Esta es la pantalla de login del frontend de Zabbix. El usuario por defecto es "Admin", contraseña "zabbix", recordad cambiarlo en cuanto tengáis oportunidad.

El host que viene por defecto, "Zabbix Server" no está activo pues no tiene agente todavía. Mejor nos olvidamos de él por el momento. Como Zabbix recomienda, usaremos un proxy (que para el ejemplo instalaremos en la misma máquina) que será quien reciba la información de todos los equipos y quien consulte a los dispositivos.
Para instalarlo, volvemos a la línea de comandos y:
sudo aptitude install zabbix-proxy-sqlite3
La base de datos para el proxy no es importante ni crítica, por ello utilizaremos la basada en sqlite3.
Editamos el archivo /etc/zabbix/zabbix_proxy.conf y cambiamos los valores:
Server=(Ip del zabbix server)
Hostname=(el nombre como vayamos a llamar al proxy en Zabbix)
Además, tanto server como proxy comparten el puerto de escucha por defecto (10051). Si están en la misma máquina, deberemos cambiar el valor ListenPort en la configuración de uno de los dos (yo escogería cambiar el puerto de escucha en el server, pues luego no hay que cambiar ese valor en todos los agentes). Si cambiamos el valor del server (en /etc/zabbix/zabbix_server.conf), como os aconsejo, tendremos que cambiar también el valor ServerPort en /etc/zabbix/zabbix_proxy.conf para que el proxy pueda hablar con él.
Una vez hecho todo, nos vamos al frontend, Administration, DM, Proxies y damos de alta el proxy con el nombre exacto que pusimos en su configuración anteriormente (Hostname).

Ya podemos proceder a instalar el agente:
sudo aptitude install zabbix-agent
Detenemos el servicio y editamos su archivo de configuración:


sudo service zabbix-agentd stop
sudo joe /etc/zabbix/zabbix_agentd.conf
En Server, ponemos la IP de los servidores (y proxies) que podrán realizar conexiones hacia el agente, separadas por comas. Si estamos en la misma máquina:
Server=127.0.0.1
o
Server=192.168.0.100,127.0.0.1
En ServerActive, ponemos la IP y PUERTO de los servidores (y proxies) a los que este agente enviará su información, cada IP separada por comas, por ejemplo:
Server=192.168.0.100,192.168.0.100:10052
Si este valor no se indica, no tendremos chequeos activos, así que mejor configurarlo.
Arrancamos el agente:
sudo service zabbix-agentd start

Y bueno, ya el configurar el equipo, el proxy, los items... en el servidor, es asunto de otro post.

Espero que os sea de utilidad. Es un post muy largo, es fácil que haya algún error, avisarme si lo encontráis y lo corrijo a la mayor brevedad.