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.
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.
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.
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.
Pulsa el botón Paso siguiente para continuar. Se te pedirá que confirmes todos los ajustes.
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.
Pulsa el botón Finalizar para completar el proceso. Accederás a la página de inicio de sesión.
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.
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.
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.
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.
Del mismo modo, escribe Servidores Linux en la sección Grupos y selecciónala.
Pulsa el botón Añadir en la sección Interfaces y selecciona Agente.
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.
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.
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.
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.
Haz clic en la opción Correo electrónico ( HTML) y aparecerá la siguiente página.
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.
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.
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.
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.
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.
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.
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.
También puedes comprobar la alerta en el panel de control, que debería aparecer en cuestión de segundos.
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.
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.
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.
Haz clic en Añadir para continuar y la página de creación de acciones debería tener el siguiente aspecto.
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.
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.
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.