Esta pagina se ve mejor con JavaScript habilitado

Instalación de zabbix en Gentoo

 ·  🎃 kr0m

Zabbix es un sistema de monitorización muy completo, nos permite tanto colectar estadísticas como configurar alarmas basadas en los datos recolectados, las alarmas pueden ser notificadas de diversas formas, email, jabber o a través de cualquier script abriendo así un sin fin de posibilidades.

Zabbix se compone de varios elementos:

  • ZBX Server: Servidor central en el que se consultan estadísticas y se disparan alarmas.
  • ZBX DB: Servidor de base de datos en el que se almacena la información recolectada por los zbx-agents.
  • ZBX Agents: Agentes instalados en cada uno de los servidores que deseamos monitorizar.
  • ZBX Proxy: Servidor intermedio al que envian los datos los agentes, de este modo zbx funciona mejor en una red con cortes, entornos limitados por FWs, etc

En este manual solo vamos a intalar el servidor de zabbix con la base de datos y el agente.


Comenzamos con la instalación de la base de datos:

vi /etc/portage/package.use/mysql

dev-db/mysql latin1 -ssl
emerge -av dev-db/mysql
emerge --config =dev-db/mysql-5.6.26
/etc/init.d/mysql start
mysql_secure_installation
rc-update add mysql default

Ahora procedemos con el zabbix server:

vi /etc/portage/package.use/zabbix

net-analyzer/zabbix agent -curl frontend -ipv6 -java -ldap libxml2 mysql -odbc -openipmi -oracle -postgres -proxy server -snmp -sqlite -ssh -static -xmpp
emerge -av net-analyzer/zabbix

Creamos la base de datos:

mysql -u root -p

mysql> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql> USE mysql;
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@localhost IDENTIFIED by 'PASSWORD';
mysql> FLUSH PRIVILEGES;
mysql> USE zabbix;

Cargamos las tablas necesarias con su estructura:

mysql> SOURCE /usr/share/zabbix/database/mysql/schema.sql
mysql> SOURCE /usr/share/zabbix/database/mysql/data.sql
mysql> SOURCE /usr/share/zabbix/database/mysql/images.sql

Configuramos el vhost para utilizar fast-cgi:

mkdir -p /var/www/cgi-bin/zabbix
cp /usr/bin/php-fpm /var/www/cgi-bin/zabbix/
chown -R zabbix:zabbix /var/www/cgi-bin/zabbix/
vi /etc/conf.d/apache2

APACHE2_OPTS="-D INFO -D SSL -D LANGUAGE -D FASTCGI"
vi /etc/apache2/vhosts.d/01_zabbix.conf
<VirtualHost *:80>
        ServerAdmin kr0m@alfaexploit.com
        DocumentRoot /var/www/zabbix
        ServerName zabbix.alfaexploit.com
        ErrorLog /var/log/apache2/zabbix.alfaexploit.error_log
        CustomLog /var/log/apache2/zabbix.alfaexploit.access_log combined
        DirectoryIndex index.php index.htm index.html
        ScriptAlias /local-bin /var/www/cgi-bin/zabbix
        AddHandler application/x-httpd-php5 php
        Action application/x-httpd-php5 /local-bin/php-fpm
        FastCgiExternalServer /var/www/cgi-bin/zabbix/php-fpm -socket /var/run/php-fpm_zabbix.sock

        <Directory "/var/www/cgi-bin/zabbix">
            Options -Indexes ExecCGI
            Order allow,deny
            Allow from all
        </Directory>

        <Directory "/var/www/zabbix">
            options -Indexes FollowSymLinks
            AllowOverride All
            order allow,deny
            Allow from all
        </Directory>

        # Monitoring status:
        <LocationMatch "/(ping|status)">
            SetHandler php-fastcgi-virt
            Action php-fastcgi-virt /local-bin/php-fpm virtual
        </LocationMatch>
</VirtualHost>
/etc/init.d/apache2 start
rc-update add apache2 default
cd /var/www/
ln -s /usr/share/webapps/zabbix/2.2.5/htdocs/ zabbix
chown -R zabbix:zabbix /var/www/zabbix
chown -R zabbix:zabbix /usr/share/webapps/zabbix/2.2.5/htdocs/

Configuramos el pool de fast-cgi para el vhost de zabbix:

vi /etc/php/fpm-php5.6/pool.d/zabbix.conf

[zabbix]
user = zabbix
group = zabbix
listen = /var/run/php-fpm_zabbix.sock
listen.owner = apache
listen.group = apache
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping
ping.response = pong
php_admin_value[post_max_size] = 16M
php_admin_value[max_execution_time] = 300
php_admin_value[max_input_time] = 300
php_admin_value[date.timezone] = Europe/Madrid
php_admin_value[always_populate_raw_post_data] = -1
php_admin_value[date.timezone] = Europe/Madrid

Damos de alta los servicios:

vi /etc/services

zabbix-agent       10050/tcp       Zabbix Agent
zabbix-agent       10050/udp       Zabbix Agent
zabbix-trapper     10051/tcp       Zabbix Trapper
zabbix-trapper     10051/udp       Zabbix Trapper

Configuramos los parámetros de conexión con la base de datos:

vi /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=******
ListenIP=0.0.0.0

Arrancamos servicios:

/etc/init.d/zabbix-server start
/etc/init.d/zabbix-agentd start
rc-update add zabbix-server default
rc-update add zabbix-agentd default

Accedemos a la interfaz web donde aparecerá un instalador:
http://zabbix.alfaexploit.com

Asistente

Accedemos al zabbix y cambiamos el password y el tema(opcional):

Admin
zabbix

Profile -> Change password
Theme -> Dark Orange
Media -> Email

Configuramos los parámetros de email para que funcionen las notificaciones básicas:

Administration -> Media types -> Email
SMTP server
SMTP helo
SMTP email

Nos aseguramos de que monitorizamos el propio zbx server:

Configuration -> Hosts -> Zabbix server -> Status debe estar: Monitored

Esperamos unos segundos y deberían de salir gráficas de la cpu:

Monitoring -> Graphs

Si esperamos 30min descubrirá las interfaces de red y comenzará a pintar gráficas de tráfico

En los servidores a monitorizar compilamos zabbix con la use flag agent:

vi /etc/portage/package.use/zabbix

net-analyzer/zabbix agent -curl -frontend -ipv6 -java -ldap -libxml2 -mysql -odbc -openipmi -oracle -postgres -proxy -server -snmp -sqlite -ssh -static -xmpp
emerge -av net-analyzer/zabbix

Como nota final algunas recomendaciones:

  • MySQL: Es recomendable utilizar partitioning e ir eliminando datos viejos mediante crones, esto nos ayudará a no consumir el espacio en disco con datos obsoletos y obtendremos un mayor rendimiento ya que las tablas son mas pequeñas.
  • ZBX-Proxy: Los proxys suelen ser equipos con escasos recursos ya que no los necesitan, en caso de crecer el número de servidores en una localización determinada es preferible montar un segundo proxy a aumentar los recursos del existente.
Si te ha gustado el artículo puedes invitarme a un RedBull aquí