Cómo configurar la monitorización de la expiración de dominios en Zabbix
Lidiar con las fechas de vencimiento de los dominios es bastante frustrante: si se te pasa una, corres el riesgo de perder tu dominio o pagar cargos adicionales. Esta guía te explica cómo automatizar el control de esas fechas de vencimiento cruciales en Zabbix. No es complicado, pero requiere una pequeña configuración: principalmente scripts y configuración de Zabbix.¿El resultado? Recibirás una práctica advertencia cuando tus dominios estén a punto de vencer, lo que podría evitarte la molestia de perder un dominio inesperadamente.
Normalmente, se puede comprobar la caducidad manualmente o usar un servicio externo, pero este método ayuda a mantener la verificación automática. Es especialmente útil si tienes varios dominios o si simplemente te molesta verificar cada uno manualmente. En resumen: crearás un script que solicite a tu registrador la fecha de caducidad mediante whois y luego le indicarás a Zabbix que lo ejecute regularmente para recibir alertas cuando un dominio se acerque a su fecha de caducidad. Pero ojo: necesitarás la utilidad whois instalada en tu servidor Linux y algunos ajustes en la configuración del agente de Zabbix.¿Perfecto? No.¿Práctico? Sin duda.
Cómo solucionar el monitoreo de expiración de dominios en Zabbix
Método 1: Instale y configure la utilidad whois en su servidor Linux
Esta parte es sencilla: si la utilidad whois no está instalada, el script no obtendrá los datos de caducidad. Según la distribución, ejecute:
- CentOS/RHEL/Rocky Linux:
$ sudo dnf install whois -y - Ubuntu/Debian:
$ sudo apt install whois -y
¿Por qué? Porque el script usa whois para consultar al registrador. En algunas configuraciones, si falta whois, el script simplemente devuelve información sin sentido o nada en absoluto, lo cual es muy frustrante cuando se intenta monitorear varios dominios.
Método 2: Verifique la ruta de los scripts externos en Zabbix
Ahora, revisa tu archivo zabbix_server.conf. Busca la línea que define ExternalScripts ; debe indicar dónde colocarás tu script. Normalmente, es así:
ExternalScripts=/usr/lib/zabbix/externalscripts
Si esta línea está comentada, descomentela. Si el directorio no existe, créelo:
$ sudo mkdir -p /usr/lib/zabbix/externalscripts
Aquí es donde va tu script, por lo que debes colocarlo allí y hacerlo ejecutable.
Método 3: Crear el script bash para obtener la expiración del dominio
Crea un nuevo archivo en /usr/lib/zabbix/externalscripts/domain_expiration.sh. Aquí tienes una breve explicación de lo que debes incluir:
#!/bin/bash DOMAIN="$1" exdate=`whois $DOMAIN | grep -E 'paid|Expire|Expiry' | grep -o -E '[0-9]{4}.[0-9]{2}.[0-9]{2}|[0-9]{2}/[0-9]{2}/[0-9]{4}'` # Handle different date formats; might need tweaking depending on registrar if [[ $exdate =~ [0-9]{2}/[0-9]{2}/[0-9]{4} ]]; then # Convert MM/DD/YYYY to YYYY-MM-DD dateparts=(${exdate//\// }) # Split by / exdate="${dateparts[2]}-${dateparts[0]}-${dateparts[1]}" fi expire=$(date -d "$exdate" +%s) today=$(date +%s) leftsec=$(( $expire - $today )) leftdays=$(( $leftsec / 86400 )) echo $leftdays
Por supuesto, diferentes registradores pueden mostrar la fecha de vencimiento en varios formatos, por lo que es posible que tengas que ajustar esta parte un poco en función del resultado whois de tu registrador específico.
Método 4: Haga que el script sea ejecutable y pruébelo
Establecer los permisos del script:
$ sudo chmod +x /usr/lib/zabbix/externalscripts/domain_expiration.sh
Pruébelo directamente con un nombre de dominio:
$ /usr/lib/zabbix/externalscripts/domain_expiration.sh example.com
Si todo va bien, debería mostrar el número de días restantes para el vencimiento. De lo contrario, revise la salida del comando whois y ajuste el análisis de la fecha. A veces, la salida del registrador varía lo suficiente como para generar falsos negativos o positivos.
Método 5: Deje que Zabbix use su script a través de UserParameter
Editar la configuración del agente Zabbix:
$ sudo vim /etc/zabbix/zabbix_agentd.conf
Agregue esta línea, ajustando la ruta si es necesario:
UserParameters=domainexpire[*], /usr/lib/zabbix/externalscripts/domain_expiration.sh $1
Esto permite que Zabbix llame a su script utilizando la clave domainexpire, pasando el nombre de dominio como parámetro.
Método 6: Reinicie el agente Zabbix y pruebe la recuperación de datos
Reinicie el agente para que adopte la nueva configuración:
$ sudo systemctl restart zabbix-agent
Luego, ejecute lo siguiente en su servidor para verificar si Zabbix puede obtener los datos:
$ sudo zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[woshub.com]
Si todo está configurado correctamente, debería obtener el número de días restantes para el vencimiento. De lo contrario, revise el script, la configuración y si el agente tiene permisos para ejecutar scripts.
Método 7: Configurar la monitorización en la interfaz de usuario de Zabbix
En Zabbix, crea un nuevo elemento en un host (o una plantilla dedicada) con:
- Nombre: Tiempo de expiración del dominio {$DOMAINNAME}
- Tipo: Agente Zabbix
- Llave:
domainexpire[{$DOMAINNAME}] - Tipo de información: Numérica (sin signo)
- Intervalo de actualización: 1d
- Historia: 90d
- Tendencia: 365d
Luego agrega un disparador como:
- Nombre del disparador: El dominio {$DOMAINNAME} expirará en
- Expresión:
last(/YourHost/domainexpire[{$DOMAINNAME}])<=39 - Gravedad: Alta
Esto se activa cuando quedan menos de 40 días, lo que te avisa antes de que el dominio caduque. Activador de recuperación opcional:
last(/YourHost/domainexpire[{$DOMAINNAME}])>=40
Finalmente, asigna esta configuración a un host con tu nombre de dominio, configura la macro {$DOMAINNAME}con tu dominio real y tendrás todo bajo control. Incluso puedes configurar alertas por correo electrónico o mensajes emergentes cuando se active el disparador. Te ahorras muchos dolores de cabeza en el futuro.
Resumen
- Instale la utilidad whois si falta.
- Configure la ruta de ExternalScripts en la configuración del servidor Zabbix.
- Cree el script bash para analizar la fecha de vencimiento desde la salida whois.
- Haga que el script sea ejecutable y pruébelo manualmente.
- Configurar el agente Zabbix con UserParameter.
- Reinicie el agente y pruebe con
zabbix_get. - Configure el artículo y el activador en la interfaz de usuario de Zabbix para monitorear los días de vencimiento.
Resumen
Conectar todo esto es bastante satisfactorio una vez que funciona, ya que recibes advertencias continuas en lugar de tener que lidiar con problemas de última hora. Claro, es un poco complicado con los formatos de fecha y los ajustes del script según las peculiaridades del registrador, pero una vez configurado, te da tranquilidad. Si las cosas parecen complicadas, revisa el resultado del script manualmente y compáralo con la información WHOIS de tu registrador. A veces, un ajuste rápido en la línea de análisis de fecha lo soluciona todo. Ojalá esto ayude a evitar sorpresas con sus dominios; al menos a mí me funcionó.