Instalación de Zabbix

22 marzo 2015 at 19:35 by Adrián Pérez

zabix¿Por qué Zabbix?

Acostumbrado a Nagios, lo primero que busqué en Google para documentarme sobre Zabbix, fue la cadena "Zabbix vs Nagios" (hay un debate muy interesante en reddit). En cualquier caso, aquí hacen una buena comparación entre ambos sistemas de monitorización.

Tras unos días con Zabbix, mi primera impresión es que la configuración vía web de Zabbix quizá sea más amigable que la configuración vía archivos de Nagios, aunque sin duda (y quizá por pasar varios años con Nagios) ésta última resulta más sencilla que no la de Zabbix, que requiere de múltiples configuraciones para poder monitorizar un elemento (el ítem en sí, su triger, el action asociado, la aplicación del ítem, etc.).

Un punto a favor de Zabbix es que parece que la comunicación cliente servidor no ocasionará los problemas que alguna vez me he encontrado con Nagios, de falsos positivos debidos a timeouts en la conexión SSH entre el servidor Nagios y el host a monitorizar (Nagios requiere de plugins adicionales para monitorizar vía NRPE).

A favor de Nagios, pero, está la gran cantidad de plugins que la comunidad ha puesto a nuestra disposición en Nagios Exchange, a primera vista mucho más completos que los plugins de Zabbix.

Componentes de Zabbix

Zabbix consta de un seguido de componentes que interaccionan entre sí:

  • Zabbix agent: el agente (o cliente) de Zabbix se instala en aquellos elementos a monitorizar. El agente se encargará de recoger información del sistema y de las aplicaciones y se las hará llegar al Zabbix server. El Zabbix agent puede recoger datos:
    • de forma pasiva: el server contacta al agente pidiéndole un dato (por ejemplo el consumo de CPU en ese instante) y el agente responde al server con ese dato.
    • de forma activa: en un primer momento, el server le enviará al agente el listado de items a monitorizar. A partir de ese momento, será el agente que de forma periódica recogerá datos sobre esos ítems y se los hará llegar al server.
  • Zabbix server: el servidor de Zabbix y por tanto la pieza principal. Consta de una base de datos, una interfaz web y el propio server. Como servidor, se encarga de recoger los datos de los agentes, calcular los triggers, enviar notificaciones, etc. El servidor por tanto, es el repositorio central donde están definidas las configuraciones y donde se almacenan todos los datos y estadísticas recogidos de los agentes.
  • Proxy (opcional): se trata de un "recolector de datos" que se situa entre el servidor y los agentes. Si se tiene por ejemplo servidores repartidos en 5 datacenters, cada datacenter podría tener su propio proxy encargado de recoger los datos de los agentes de su datacenter, para posteriormente, hacerle llegar los datos al Zabbix server. Todo proxy requiere de su propia base de datos.
  • Java Gateway (opcional): permite monitorizar aplicaciones JMX (Java Management eXtensions) como WildFly/JBoss, Tomcat, Weblogic o Websphere. Zabbix Java Gateway usa la "JMX Management API" para recoger los datos de las aplicaciones JMX remotas monitorizadas.

Fuentes:
https://www.zabbix.com/documentation/2.2/manual/concepts

Instalación de Zabbix

Desde un Fedora 21 x86_64 con Selinux deshabilitado.

Desde el repositorio oficial de Zabbix, instalamos la clave GPG para los rpms oficiales de Zabbix y a continuación instalamos el repositorio de Zabbix para entornos CentOS7/RHEL7.

[user@myServer]$ sudo rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
[user@myServer]$ sudo rpm -Uvh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm

NOTA: Para ser honestos, Zabbix ya viene en los repositorios de Fedora 21, pero en cualquier caso no está de más instalar el repo oficial. Tras la instalación del repo, podremos ver como en efecto contamos con varios paquetes con el servidor Zabbix a instalar desde diferentes repositorios:

[user@myServer]$ sudo yum list --showduplicates zabbix-server-mysql
zabbix-server-mysql.x86_64 2.2.7-1.fc21 fedora
zabbix-server-mysql.x86_64 2.2.8-1.fc21 updates
zabbix-server-mysql.x86_64 2.4.1-2.el7 zabbix
zabbix-server-mysql.x86_64 2.4.2-1.el7 zabbix
zabbix-server-mysql.x86_64 2.4.3-1.el7 zabbix
zabbix-server-mysql.x86_64 2.4.4-1.el7 zabbix

De igual manera que en la guía de instalación oficial de Zabbix en CentOS/RHEL, usaremos MySQL como base de datos, aunque en nuestro caso será MariaDB:

[user@myServer]$ sudo yum install mariadb-server zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-java-gateway

NOTA: Si vas a instalar alguna de las versiones 2.4.X de zabbix-server-mysql en Fedora21/Centos7/RHEL7 quizá tengas problemas con libnetsnmp.so. Si es el caso, tal vez quieras deshabiltiar el repo de zabbix e instalarlo desde el repo de sistema.

NOTA: Dependiendo de tu entorno, quizá tengas que instalar también los paquetes relacionados con Apache y PHP. En mi Fedora 21 éstos ya vienen instalados por defecto, pero si no fuera el caso, bastaría con ejecutar lo siguiente:

[user@myServer]$ sudo yum install httpd php php-mysql

Deberemos, si no lo hemos hecho ya, configurar el timezone en el php.ini:

[user@myServer]$ sudo vi /etc/php.ini
date.timezone = Europe/Madrid

Finalmente iniciaremos los servicios de Apache y MySQL, y ejecutaremos el script de securización inicial de MySQL.

[user@myServer]$ sudo service httpd restart
[user@myServer]$ sudo service mysqld start
[user@myServer]$ sudo mysql_secure_installation

Entramos en nuestro servidor MySQL y ejecutamos las siguientes queries para crear la base de datos para Zabbix y el usuario con acceso a ella.

[user@myServer]$ mysql -u root -p
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'AQUI_TU_PASSWORD';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Posteriormente ejecutaremos los scripts para la generación de tablas y contenido en la base de datos de Zabbix. En mi instalación de Zabbix sobre Fedora 21, los scripts están en el directorio "/usr/share/zabbix-mysql/". Este directorio puede cambiar según tu entorno.

[user@myServer]$ mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/schema.sql
[user@myServer]$ mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/images.sql
[user@myServer]$ mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/data.sql

Finalmente, deberemos iniciar el servicio de Zabbix:

[user@myServer]$ sudo service zabbix-server start

Siguiendo con la documentación oficial para la instalación de Zabbix en entornos CentOS/RHEL, deberemos configurar la dirección del JavaGateway. En nuestro caso, hemos instalado el paquete "zabbix-java-gateway" en este mismo server Fedora 21 unos pasos atrás. Así pues, bastará con indicarselo al fichero de configuración de Zabbix.

[user@myServer]$ sudo vi /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
StartJavaPollers=5

NOTA: En caso de que te lo estés preguntando, no hemos de indicar los parámetros de conexión con la base de datos, aun, pues éstos se configurarán más adelante durante el asistente web de configuración.

Tras los cambios, pasaremos a reiniciar el servidor de Zabbix:

[user@myServer]$ sudo service zabbix-server restart

Otro punto importante durante la instalación de Zabbix, es asegurarnos de contar con los servicios asociados configurados para iniciarse durante el boot de nuestro sistema.

[user@myServer]$ sudo chkconfig zabbix-server on
[user@myServer]$ sudo chkconfig mysqld on
[user@myServer]$ sudo chkconfig httpd on
[user@myServer]$ sudo chkconfig zabbix-java-gateway on

Finalmente, si no teníamos iniciado apache, deberemos iniciarlo. Si lo teníamos iniciado, bastará con hacer un reload:

[user@myServer]$ sudo service httpd start

Tras ello, podremos acceder a la web de administración de Zabbix, para iniciar el asistente de configuración

http://serverip/zabbix

Fuentes:
https://www.zabbix.org/wiki/InstallOnCentOS_RHEL
http://webcache.googleusercontent.com/search?q=cache:qk4dgatGbcoJ:https://www.unixmen.com/install-zabbix-monitoring-tool-centos-6-5/+&cd=11&hl=es&ct=clnk

Asistente de configuración

Durante el asistente web para la configuración, nos checkeará los requisitos para el correcto funcionamiento de Zabbix. Deberemos corregir los posibles fallos antes de poder continuar con el asistente. En mi caso, con una instalación por defecto de todos los servicios (Apache, PHP, MariaDB...) he tenido que corregir los siguientes requisitos, todos ellos configurables en el php.ini:

  • PHP option post_max_size
  • PHP option max_execution_time
  • PHP option max_input_time

A continuación, configuraremos los detalles de conexión contra MariaDB y tras testear que la conexión es correcta, continuaremos con el asistente.

Al finalizar el asistente, nos indicará que se ha creado el fichero de configuración "/etc/zabbix/web/zabbix.conf.php".

Al finalizar el asistente, éste nos redirigirá directamente a la página de login de nuestro servidor Zabbix. Podremos loguearnos con las credenciales por defecto:

user: admin
pass: zabbix

Zabbix Agent

Si has estado siguiendo esta entrada para instalar tu servidor Zabbix, verás que también tendrás instalado el agente Zabbix para monitorizar la máquina donde está instalado el propio servidor de Zabbix. Puedes iniciarlo tal que así:

[user@myServer]$ sudo service zabbix-agent restart

El agente, por defecto está configurado para conectar contra localhost, con lo que la configuración por defecto nos bastará para que el propio servidor Zabbix esté monitorizado con su agente. Es interesante conocer el listado de ítems que por defecto puede monitorizar un agente de Zabbix.

Especialmente interesante el concepto "Discovery Rules" que gestiona a nivel de OS items de forma dinámica, para recoger, por ejemplo, el listado de tarjetas de red de un servidor (independientemente del número o del nombre de las mismas).

Fuentes:
http://tecadmin.net/install-zabbix-agent-on-centos-rhel/

Elementos de configuración

Zabbix está compuesto por diversos elementos de configuración (hosts, hosts groups, ítems, graphs, screens, templates, etc.). Algunos de dichos elementos son los siguientes:

  • Item: elemento atómico a monitorizar (por ejemplo, el consumo de CPU, espacio libre en una partición determinada, etc.)
    • Trigger: define los parámetros que determinarán el estado (error/ok) del ítem, y se encarga de pasar de un estado a otro en función de los datos del ítem. Si no se define un trigger para un ítem, no tendremos alertas, gráficas de estado, etc.
    • Event: un cambio de estado a raíz de un trigger, el descubrimiento de un nuevo agente…
    • Action: define qué hacer ante un evento. Consta de condiciones (cuando hacerlo) y operaciones (qué hacer).
  • Application: grupo de ítems. Por ejemplo, cada check para un servidor MySQL tendrá su propio ítem, y éstos ítems estarán agrupados bajo la aplicación MySQL.
  • Host: elemento (servidor o elemento de red) a monitorizar.
    • Host group: grupo de hosts. Puede contener hosts y templates y sirve para mantenerlos agrupados y accesibles por grupo.

Fuentes:
https://www.zabbix.com/documentation/2.2/manual/concepts/definitions

Primer host: Zabbix server

Tal y como hemos visto, habremos configurado el propio servidor de Zabbix con su agente, para tenerlo monitorizado. Así pues, en Configuration > Hosts nos aparecerá nuestro único host, el propio Zabbix server.

Aunque por defecto vendrá configurado para monitorizar una serie de aplicaciones con sus respectivos ítems, la monitorización no estará habilitada. Bastará con marcar el checkbox junto al host en esta lista de hosts, y seleccionar "Enable selected" en el desplegable, para finalmente pulsar sobre "Go (1)" con tal de hacer efectivos los cambios.

Tras ésto, a los pocos segundos empezaremos a ver datos de la monitorización de nuestro único agente en Monitoring > Latest data.

 

A partir de aquí, nos quedará la ardua tarea de instalar los agentes en aquellos servidores a monitorizar, y sobre todo, definir nuestro sistema de templates e ítems a monitorizar para nuestros servidores.

Fuentes:
http://911-ubuntu.weebly.com/zabbix_basic_configuration/configuracin-bsica-zabbix-server
http://www.reddit.com/r/sysadmin/comments/1wegbi/zabbix_vs_nagios_why_am_i_seeing_nagios_more_often/
http://www.thegeekstuff.com/2009/09/top-5-best-network-monitoring-tools/