Cómo instalar y configurar el servidor y el cliente Zabbix en Rocky Linux 9

Zabbix es una solución de supervisión gratuita y de código abierto para infraestructuras informáticas como redes, servidores, máquinas virtuales y servicios en la nube. Su núcleo está escrito en C y Java, mientras que el front-end está escrito en PHP. El front-end proporciona una interfaz basada en web para rastrear y supervisar métricas como la utilización de la red, la carga de la CPU, el espacio en disco, etc., y enviar notificaciones basadas en activadores personalizados.

Zabbix funciona como un modelo Cliente/Servidor. Los clientes o agentes disponibles para varios sistemas operativos se ponen en contacto con el servidor para enviar los datos. Para los sistemas sin agente, Zabbix ofrece la opción de utilizar protocolos de supervisión genéricos como el Protocolo Simple de Gestión de Red (SNMP) o la Interfaz de Gestión de Plataforma Inteligente (IPMI).

En este tutorial, aprenderás a instalar el servidor y el cliente Zabbix en un servidor Rocky Linux 9.

Requisitos previos

  • Dos servidores ejecutando Rocky Linux 9. Uno funcionará como servidor y el otro será el cliente que monitorizaremos utilizando el servidor.
  • Un usuario no root con privilegios sudo.
  • Un Nombre de Dominio Completamente Cualificado (FQDN) como zabbix.example.com apuntando a tu servidor.
  • Una cuenta SMTP con un servicio de correo electrónico como Amazon SES o Mailgun.
  • Todo actualizado.
    $ sudo dnf update
    
  • Se necesitan algunos paquetes esenciales para que el tutorial y el Servidor Zabbix funcionen. Algunos de ellos ya estarán en tu servidor.
    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

Paso 1 – Configurar el Cortafuegos

El primer paso es configurar el cortafuegos. Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.

$ sudo firewall-cmd --state
running

El cortafuegos funciona con diferentes zonas, y la zona pública es la que utilizaremos por defecto. Enumera todos los servicios y puertos activos en el cortafuegos.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar la siguiente salida.

cockpit dhcpv6-client ssh

Los puertos abiertos 10050 y 10051 son necesarios para que el servidor Zabbix conecte con el agente.

$ sudo firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent

Permite los puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelve a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-all

Deberías ver una salida similar.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 10051/tcp 10050/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Recarga el cortafuegos para activar los cambios.

$ sudo firewall-cmd --reload

Paso 2 – Configura SELinux en modo permisivo

Configura SELinux para que funcione en modo permisivo. En este modo, SELinux no bloqueará ningún proceso, pero lo registrará todo en el archivo de registro de auditoría. Lo utilizaremos más adelante para configurar las reglas de SELinux.

$ sudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Comprueba el estado de SELinux.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

Paso 3 – Configurar Nginx y el repositorio PHP

El paquete Zabbix instalará automáticamente PHP y Nginx. Pero cogerá versiones antiguas de ellos. Por lo tanto, debemos asegurarnos de que el proceso instala la última versión disponible.

Crea y abre el archivo /etc/yum.repos.d/nginx.repo para editarlo.

$ sudo nano /etc/yum.repos.d/nginx.repo

Pega en él el siguiente código.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Habilita el repositorio principal de Nginx.

$ sudo dnf config-manager --enable nginx-mainline

A continuación, tenemos que configurar el repositorio PHP.

El primer paso es coger el repositorio Epel.

$ sudo dnf install epel-release -y

A continuación, instala el repositorio Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Comprueba si hay versiones de PHP disponibles.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

La versión por defecto es la 8.1. En el momento de escribir este tutorial, Zabbix es compatible con PHP 8.2. Por lo tanto, habilita el repositorio PHP 8.2 de Remi. La próxima versión de Zabbix será compatible con PHP 8.3, por lo que puedes habilitarla si tu versión de Zabbix es 6.0.26 o superior.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Ahora, podemos proceder con la instalación de Zabbix.

Paso 4 – Instalar el Servidor Zabbix

Los paquetes de Zabbix se proporcionan por defecto en el repositorio EPEL. Antes de proceder con nuestra instalación, necesitamos desactivarlos. Abre el archivo /etc/yum.repos.d/epel.repo para editarlo y añade la siguiente línea en la sección [epel].

[epel]
...
excludepkgs=zabbix*

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

La última versión de Zabbix es la 6.4.x, pero seguiremos utilizando la versión LTS (Long-term support), que es mucho más estable para un entorno de producción.

Instala el repositorio de Zabbix.

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm

Elimina toda la caché RPM.

$ sudo dnf clean all

Instala el servidor, el frontend y el agente de Zabbix. Utilizaremos el servidor PostgreSQL para nuestro propósito y, por tanto, necesitamos el paquete zabbix-web-pgsql. Si utilizas el servidor MySQL/MariaDB/Percona, tendrás que instalar el paquete zabbix-web-mysql.

$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

Paso 5 – Instalar y configurar PostgreSQL

Zabbi funciona con PostgreSQL 13 y superiores. Rocky Linux 9 viene con PostgreSQL 13 por defecto. Sin embargo, utilizaremos PostgreSQL 16 para nuestro tutorial.

Instala el archivo RPM del repositorio PostgreSQL.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Desactiva el módulo incorporado de PostgreSQL.

$ sudo dnf -qy module disable postgresql

Ahora, puedes instalar PostgreSQL utilizando el siguiente comando.

$ sudo dnf install -y postgresql16-server postgresql16-contrib

Inicializa la base de datos.

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

Habilita el servicio PostgreSQL.

$ sudo systemctl enable postgresql-16

Inicia el servicio PostgreSQL.

$ sudo systemctl start postgresql-16

Comprueba el estado del servicio PostgreSQL.

$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-01-18 14:54:46 UTC; 10s ago
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 3407 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 3412 (postgres)
      Tasks: 7 (limit: 24694)
     Memory: 17.4M
        CPU: 117ms
     CGroup: /system.slice/postgresql-16.service
             ??3412 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??3413 "postgres: logger "
             ??3414 "postgres: checkpointer "
             ??3415 "postgres: background writer "
             ??3417 "postgres: walwriter "
             ??3418 "postgres: autovacuum launcher "
             ??3419 "postgres: logical replication launcher "

Crea el usuario de la base de datos Zabbix.

$ sudo -u postgres createuser --pwprompt zabbix

Se te pedirá la contraseña.

Enter password for new role: 
Enter it again: 

Crea la base de datos Zabbix.

$ sudo -u postgres createdb -O zabbix zabbix

Importa el esquema inicial y los datos de la base de datos. Se te pedirá de nuevo la contraseña.

$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Este proceso puede tardar un par de minutos en finalizar.

Abre el archivo /etc/zabbix/zabbix_server.conf para editarlo.

$ sudo nano /etc/zabbix/zabbix_server.conf

Busca la variable DBPassword, descoméntala eliminando la almohadilla (#) que aparece delante de ella, y estableciendo su valor en la contraseña elegida en el paso anterior.

DBPassword=psqlpassword

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Inicia y habilita los servicios de servidor y agente de Zabbix.

$ sudo systemctl enable zabbix-server zabbix-agent --now

Paso 6 – Configurar PHP

Zabbix instala los archivos de configuración de PHP y Nginx que utilizaremos. Sin embargo, tenemos que hacer algunas modificaciones antes de poder utilizarlos.

En primer lugar, tenemos que abrir /etc/php-fpm.d/zabbix.conf para editarlo.

$ sudo nano /etc/php-fpm.d/zabbix.conf

Cambia los valores de user = apache, y group = apache por nginx como se muestra a continuación.

user = nginx
group = nginx

Esto se debe a que, como estamos utilizando Nginx desde su repositorio oficial, se ejecuta bajo el usuario nginx y no apache, que es bajo el que se ejecuta la copia de distribución de Nginx.

También puedes editar aquí cualquier otro valor relacionado con PHP o añadir definiciones personalizadas. Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Inicia y activa el servicio PHP-FPM.

$ sudo systemctl enable php-fpm --now

Paso 7 – Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Para ello utilizaremos el instalador de paquetes Snapd. Como Rocky Linux no lo incluye, instala el instalador de Snapd. Necesita el repositorio EPEL (Extra Packages for Enterprise Linux) para funcionar. Pero como ya lo hemos instalado en el paso 3, podemos avanzar directamente.

Instala Snapd.

$ sudo dnf install -y snapd

Habilita e Inicia el servicio Snap.

$ sudo systemctl enable snapd --now

Instala el paquete principal de Snap, y asegúrate de que tu versión de Snapd está actualizada.

$ sudo snap install core && sudo snap refresh core

Crea los enlaces necesarios para que Snapd funcione.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Instala Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Comprueba si Certbot funciona correctamente.

$ certbot --version
certbot 2.8.0

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d zabbix.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/zabbix.example.com de tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Comprueba el servicio programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

NEXT                        LEFT          LAST                        PASSED       UNIT                        ACTIVATES                 -------------------------------------------------------------------------------------------------------------------------------------    
Sat 2024-01-20 10:04:02 UTC 1min 32s left Sat 2024-01-20 08:52:11 UTC 1h 10min ago dnf-makecache.timer         dnf-makecache.service
Sun 2024-01-21 00:00:00 UTC 13h left      Sat 2024-01-20 00:00:10 UTC 10h ago      logrotate.timer             logrotate.service
Sat 2024-01-20 21:13:00 UTC 11h left      Sat 2024-01-20 08:19:11 UTC 1h 43min ago snap.certbot.renew.timer    snap.certbot.renew.service

Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.

$ sudo certbot renew --dry-run

Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.

Paso 8 – Configurar Nginx

Zabbix instala un archivo de configuración de Nginx por defecto. Necesitamos editarlo para añadir el código para habilitar los certificados SSL. También necesitamos cambiar el puerto listen y añadir código para redirigir enlaces HTTP a HTTPS.

Abre el archivo /etc/nginx/conf.d/zabbix.conf para editarlo.

$ sudo nano /etc/nginx/conf.d/zabbix.conf

Edita el código para que el archivo tenga el siguiente aspecto.

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;

    root /usr/share/zabbix;

    index index.php;

    access_log  /var/log/nginx/zabbix.access.log;
    error_log   /var/log/nginx/zabbix.error.log;

    ssl_certificate      /etc/letsencrypt/live/zabbix.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/zabbix.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/zabbix.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location = /favicon.ico {
        log_not_found   off;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location /assets {
        access_log off;
        expires 10d;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /(api\/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
    }

    location /vendor {
        deny            all;
        return          404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass    unix:/run/php-fpm/zabbix.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index   index.php;

        fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
        fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;

        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout         60;
        fastcgi_send_timeout            180;
        fastcgi_read_timeout            180;
        fastcgi_buffer_size             128k;
        fastcgi_buffers                 4 256k;
        fastcgi_busy_buffers_size       256k;
        fastcgi_temp_file_write_size    256k;
    }
}

# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  zabbix.example.com;
    return 301   https://$host$request_uri;
}

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Verifica la configuración de Nginx.

$ sudo nginx -t

Inicia y habilita el servicio Nginx.

$ sudo systemctl enable nginx --now

Paso 9 – Acceder al Frontend Zabbix

Antes de instalar el frontend de Zabbix, establece el permiso en el directorio /etc/zabbix/web para que Nginx pueda acceder a él.

$ sudo chown -R nginx:nginx /etc/zabbix/web

Abre la URL https://zabbix.example.com en tu navegador y obtendrás la siguiente pantalla.

Zabbix Web Installer Inicio

Haz clic en el botón Paso siguiente para finalizar la instalación de Zabbix. La siguiente página comprueba los requisitos del sistema y si se cumplen todos.

Comprobación de los requisitos del sistema Zabbix

Si no hay ningún problema, haz clic en el botón Paso siguiente para continuar. A continuación, se te pedirá que introduzcas las credenciales de tu base de datos. Desmarca la opción Cifrado TLS de la base de datos, ya que no la hemos configurado.

Detalles de la base de datos Zabbix

Pulsa el botón Paso siguiente para continuar. Introduce el nombre de tu servidor Zabbix. No obstante, es opcional, pero si lo configuras, se mostrará en la barra de menús y en los títulos de las páginas.

Configuración de Zabbix

Pulsa el botón Paso siguiente para continuar. Se te pedirá que confirmes todos los ajustes.

Resumen de la instalación de Zabbix

Si todo está bien, pulsa el botón Paso siguiente para continuar. Deberías ver el mensaje que te informa de que la instalación se ha realizado correctamente.

Instalación de Zabbix completada

Pulsa el botón Finalizar para completar el proceso. Accederás a la página de inicio de sesión.

Página de inicio de sesión de Zabbix

El nombre de usuario por defecto es Admin y la contraseña es zabbix. Introduce los datos de acceso y haz clic en el botón Iniciar sesión para acceder al panel de control de Zabbix.

Panel Zabbix

Paso 10 – Configurar SELinux

Habilita el demonio HTTP para conectarse a Zabbix.

$ sudo setsebool -P httpd_can_connect_zabbix 1

Permite que Zabbix se conecte a todos los puertos TCP.

$ sudo setsebool -P zabbix_can_network on

Habilita el daemons_enable_cluster_mode para evitar los errores del gestor de HA.

$ sudo setsebool -P daemons_enable_cluster_mode on

Crea un paquete de políticas SELinux personalizado utilizando el registro de auditoría.

$ sudo grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i zabbix_policy.pp

Instala el paquete de políticas SELinux personalizado creado.

$ sudo semodule -i zabbix_policy.pp

Ejecuta el comando para comprobar los errores de la base de datos.

$ sudo sealert -a /var/log/audit/audit.log

Te sugerirá un montón de reglas a aplicar.

Ejecuta los siguientes comandos.

$ sudo ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
$ sudo semodule -X 300 -i my-phpfpm.pp
$ sudo ausearch -c 'zabbix_agentd' --raw | audit2allow -M my-zabbixagentd
$ sudo semodule -X 300 -i my-zabbixagentd.pp

Aplica la política para permitir que Nginx dé acceso a PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Aplica la política para permitir que se establezcan conexiones con hosts externos.

$ sudo setsebool -P httpd_can_network_connect 1

Pon SELinux en modo de aplicación.

$ sudo setenforce 1 && sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config

Paso 11 – Instalar el Agente de Zabbix en un sistema remoto

El trabajo principal del agente de Zabbix es recopilar información del sistema y enviarla al servidor central de Zabbix para su análisis. Instalaremos el agente en un sistema Rocky Linux 9, pero puedes hacerlo en cualquier distribución.

Paso 11.1 – Configurar el Cortafuegos en el sistema Remoto

Abre el puerto 10050 para permitir que el agente Zabbix se conecte al servidor.

$ sudo firewall-cmd --add-port=10050/tcp --permanent --zone=public
$ sudo firewall-cmd --reload

Paso 11.2 – Instalar el Agente Zabbix

Debes repetir el paso 4 excepto la última declaración de instalación. Es decir, editar el archivo /etc/yum.repos.d/epel.repo y añadir la siguiente línea en la sección [epel].

[epel]
...
excludepkgs=zabbix*

A continuación, instala el repositorio de Zabbix y limpia la caché del RPM.

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ sudo dnf clean all

Instala el agente de Zabbix.

$ sudo dnf install zabbix-agent

Paso 11.3 Configurar el Agente Zabbix

Zabbix soporta encriptación basada en certificados, pero para simplificar este tutorial, utilizaremos claves pre-compartidas (PSK) para asegurar la conexión entre el servidor y el agente.

Genera un archivo PSK.

$ sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

Muestra la clave para copiarla.

$ cat /etc/zabbix/zabbix_agentd.psk
797c84746dfe86f71b0f207785906d2bb886be27149b296d86df6b1ec9de6bbe

Copia esta clave porque la necesitaremos más adelante.

El agente Zabbix almacena su configuración en el archivo /etc/zabbix/zabbix-agentd.conf. Ábrelo para editarlo.

$ sudo nano /etc/zabbix/zabbix_agentd.conf

Descomenta las siguientes variables y actualiza sus valores como se muestra a continuación.

Server=<zabbix_server_IP>
ServerActive=<zabbix_server_IP>
HostMetadata=ZabbixLinuxClient
Hostname=zabbixclient.example.com

Pon la dirección IP de tu servidor Zabbix como valor para las variables Server y ServerActive. La variable HostMetadata puede ser cualquier cosa que puedas utilizar para identificar el sistema. También se utiliza en el proceso de auto-registro en el frontend de Zabbix, del que hablaremos más adelante. El elemento Hostname se refiere al nombre de host del sistema del nodo agente de Zabbix.

Puedes averiguar el nombre de host utilizando el siguiente comando.

$ cat /etc/hostname

A continuación, busca la sección que configura una conexión segura entre el servidor y el agente. Localiza la variable TLSConnect y cambia su valor de unencrypted a psk como se muestra a continuación.

...
### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=psk
...

A continuación, localiza la sección TLSAccept y cambia su valor a psk como se muestra a continuación.

...
### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=psk
...

A continuación, localiza la sección TLSPSKIdentity y cambia su valor a PSK 001 como se muestra.

...
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=PSK 001
...

Este es el ID PSK que utilizarás para añadir el host a través del front-end web de Zabbix.

Por último, localiza la sección TLSPSKFile y cambia su valor a la ubicación del archivo PSK como se muestra.

...
### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...

Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Paso 11.4 – Iniciar el Agente Zabbix

Inicia y habilita el servicio de agente de Zabbix.

$ sudo systemctl enable zabbix-agent --now

Paso 12 – Añadir el Cliente Zabbix al frontend de Zabbix para su monitorización

Podemos añadir un nuevo host a los grupos de host definidos existentes o crear un nuevo grupo de host. Los grupos de hosts te permiten categorizar los tipos de nodos que estás monitorizando. Para crear un nuevo grupo de anfitriones, abre la opción Grupos de anfitriones en el menú Configuración.

Menú del grupo de anfitriones de Zabbix

Añade el nombre del grupo en la casilla y pulsa el botón Aplicar para crear el grupo.

Para crear un nuevo host, haz clic en la opción Hosts del menú Configuración, y haz clic en el botón Crear host de la parte superior derecha.

Zabbix Crear Hosts

Añade el nombre de host del nodo Zabbix.

Escribe Agente Linux by Zabbix en la sección Plantillas y selecciona la plantilla en el desplegable.

Opción Plantillas Zabbix

Del mismo modo, escribe Servidores Linux en la sección Grupos y selecciónala.

Opción Grupos Zabbix

Pulsa el botón Añadir en la sección Interfaces y selecciona Agente.

Interfaz del Agente Zabbix

A continuación, añade la dirección IP del nodo cliente Zabbix. Cuando hayas terminado, la ventana emergente Nuevo host completo debería tener el siguiente aspecto.

Zabbix Nuevo Host Popup

A continuación, pasa a la pestaña Cifrado. Selecciona PSK para las opciones Conexiones al host y Conexiones desde el host. Establece la Identidad PS K en PSK 001, que es el valor que establecimos antes en el paso 11.3 para la variable TLSPSKIdentity. A continuación, establece el valor PSK como la clave que generaste antes en la máquina agente.

Encriptación del Agente Zabbix

Una vez terminado, pulsa el botón Añadir para terminar de añadir el host.

Deberías ver el nuevo host en la lista con una etiqueta verde indicando que el agente está conectado al servidor y que funciona como se espera.

Lista de hosts Zabbix

Paso 13 – Configurar las Notificaciones por Correo Electrónico

Zabbix soporta muchos tipos de notificaciones como correo electrónico, Slack, Telegram, SMS, etc. Para el propósito de nuestro tutorial, configuraremos las notificaciones por correo electrónico. Visita el front-end de Zabbix, haz clic en Administración y luego en Tipos de medios en el menú de la izquierda. Verás dos tipos de correo electrónico, uno para correo electrónico en texto plano y otro para correo electrónico HTML.

Tipos de medios Zabbix

Haz clic en la opción Correo electrónico ( HTML) y aparecerá la siguiente página.

Zabbix Email Tipo de medio Configurar

Introduce los datos de tu servidor SMTP. Para nuestro tutorial, estamos utilizando el servicio Amazon SES. Haz clic en el botón Actualizar una vez hayas terminado para guardar los detalles. Volverás a la página Tipos de medios. Haz clic en el botón Probar de la página para probar la configuración del correo electrónico. Se creará una ventana emergente. Introduce tu dirección de correo electrónico y haz clic en el botón Probar para enviar un correo electrónico de prueba.

Prueba Zabbix Email Popup

Deberías ver un mensaje de éxito en la ventana emergente notificando que ha funcionado correctamente y deberías recibir el siguiente correo electrónico en tu bandeja de entrada. Cierra la ventana emergente pulsando el botón Cancelar.

Email de prueba de Zabbix

Paso 14 – Crear un nuevo usuario

El usuario por defecto de Zabbix no está configurado para recibir ningún tipo de notificación. Aunque podemos hacerlo, el usuario por defecto tampoco es seguro de utilizar. La mejor opción es crear un nuevo usuario y luego desactivar el usuario por defecto.

Visita la sección Administración >> Usuarios del menú y haz clic en el botón Crear usuario de la parte superior derecha para abrir la siguiente página.

Página de nuevo usuario de Zabbix

Rellena los datos del usuario. Selecciona Administradores de Zabbix como grupo de usuarios. Una vez terminado, haz clic en la pestaña Medios. Haz clic en el botón Añadir y selecciona Correo electrónico (HTML) como tipo.

Pestaña Medios de Usuario de Zabbix

Introduce tu dirección de correo electrónico en el campo Enviar a y haz clic en el botón Añadir para añadir la opción de correo electrónico. A continuación, pasa a la pestaña Permisos y haz clic en el botón Seleccionar para añadir el rol Superadministrador.

Permisos de usuario de Zabbix

Pulsa el botón Añadir para terminar de añadir el usuario. A continuación, tienes que cerrar la sesión del front end, volver a entrar como el nuevo usuario y regresar a la página del usuario. Haz clic en el usuario Admin, selecciona el grupo Deshabilitado y actualiza el usuario. Esto desactivará el uso del usuario predeterminado.

Paso 15 – Enviar una alerta de prueba

Por defecto, Zabbix realiza un seguimiento de la cantidad de espacio libre en el servidor. Detecta todos los montajes de disco y realiza comprobaciones regularmente.

El primer paso es activar el activador de notificación que permite a Zabbix enviar notificaciones a todos los administradores. Zabbix ya tiene configurado el activador por defecto. Necesitamos habilitarlo para que funcione. Visita Configuración >> Acciones >> Acciones de activación y haz clic en el estado Desactivado para cambiarlo a Activado como se muestra.

Acciones desencadenantes de Zabbix

A continuación, inicia sesión en el nodo Zabbix y crea un archivo temporal lo suficientemente grande como para activar una alerta de uso de disco.

En primer lugar, determina el espacio libre en el servidor.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   51M  730M   7% /run
/dev/vda2        94G   12G   78G  13% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

Esto muestra que tenemos unos 78 GB de espacio libre. A continuación, utiliza el comando fallocate para preasignar más del 80% del espacio en disco. Es lo suficientemente grande como para activar la alerta.

$ fallocate -l 74G /tmp/temp.img

Comprueba de nuevo el uso del disco.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   54M  726M   7% /run
/dev/vda2        94G   86G  3.9G  96% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

Zabbix activará una alerta sobre el espacio en disco y enviará una alerta por correo electrónico al respecto. El correo electrónico tendrá el siguiente aspecto.

Correo electrónico de alerta de prueba de Zabbix

También puedes comprobar la alerta en el panel de control, que debería aparecer en cuestión de segundos.

Panel de control de supervisión de alertas de comprobación de discos de Zabbix

Elimina el archivo temporal cuando hayas terminado.

$ rm -f /tmp/temp.img

Deberías recibir otro correo electrónico notificándote que el problema se ha resuelto.

Prueba Zabbix Problema resuelto correo electrónico

Paso 16 – Configurar el registro automático para Nodos Linux

Cuando tienes que añadir varios nodos al servidor Zabbix, el proceso puede volverse un poco tedioso. Afortunadamente, el frontend de Zabbix te permite automatizar el proceso mediante el registro automático.

Visita Acciones >> Acciones de Autor registro y haz clic en el botón Crear acción de la parte superior derecha.

Página de autoregistros de Zabbix

Una vez en la nueva pantalla, dale un nombre(Registro automático de servidores Linux) a la acción.

Haz clic en el botón Añadir situado debajo de Condiciones para añadir una condición y elige Metadatos de host como tipo, contiene como operador y Linux como valor.

Zabbix Auto registro Condiciones

Haz clic en Añadir para continuar y la página de creación de acciones debería tener el siguiente aspecto.

Zabbix Autoregistro Nueva Página de Acción

Haz clic en la pestaña Operaciones, selecciona Añadir a grupo de host como Operación y selecciona Servidores Linux como Grupos de host. Haz clic en el botón Añadir para finalizar.

Detalles de la Operación de Autorregistro de Zabbix

Si quieres utilizar el cifrado PSK, también puedes configurarlo. Visita el menú Administración >> General >> Autorregistro y activa ambas opciones de encriptación. Introduce un ID PSK y una clave PSK creada en el servidor Zabbix. Puedes utilizar este ID PSK y esta clave en cada nodo y se encriptarán utilizando estos valores.

Cifrado de autorregistro Zabbix

A partir de ahora, cada vez que instales y configures el agente de Zabbix en un servidor Linux, se añadirá automáticamente al front-end de Zabbix.

Conclusión

Con esto concluye nuestro tutorial sobre la instalación y configuración de un servidor Zabbix en un sistema Rocky Linux 9. También hemos instalado un agente Zabbix en un servidor remoto para conectar con el servidor. Si tienes alguna pregunta, publícala en los comentarios a continuación.

También te podría gustar...