В этой статье мы рассмотрим, как настроить отслеживания срока действия (делегирования /регистрации) ваших доменов в Zabbix. Это позволит вам не пропустить дату продления аренды и окончания делегирования ваших доменных имен.
Если в течении 30 дней после окончания срока регистрации домена, предыдущий владелец не оплачивает его, домен освобождается (разделегируется). Рассмотрим простой скрипт и шаблон для Zabbix, которые позволят вот мониторить время окончания регистрации домена.
Итак, предполагаем, что у вас уже установлен Zabbix сервер . Для получения данных о сроках делегирования доменов мы будем использовать небольшой bash скрипт. Для его работы на хосте должна быть установлена утилита whois . Установите ее:
- CentOS/RHEL/Rocky Linux:
$ sudo dnf install whois -y
- Ubuntu/Debian:
$ sudo apt install whois -y
Проверьте в конфигурационном файле zabbix-server.conf путь к каталогу для внешних скриптов. По умодчанию это (раскоментируйте сттроку):
ExternalScripts=/usr/lib/zabbix/externalscripts
Создайте в этом каталоге файл /usr/lib/zabbix/externalscripts/domain_expiration.sh со следующим кодом:
#!/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}'`
expire=$((`date -d "$exdate" '+%s'`))
today=$((`date '+%s'`))
leftsec=$(($expire - $today))
leftdays=$(($leftsec/86400))
echo $leftdays
Разрешите запуск файла:
$ sudo chmod +x /usr/lib/zabbix/externalscripts/domain_expiration.sh
Проверьте, что скрипт работает корректно. Укажите в качестве параметра имя домена, для которого вы хотите получить количество дней, оставшихся до окончания делегирования.
$ /usr/lib/zabbix/externalscripts/domain_expiration.sh remontka.com
В моем примере скрипт вернул, что до окончания срока действия домена осталось 39 дней.
Теперь с помощью параметра UserParameter нужно разрешить запуск этого пользовательского скрипта агентом Zabbix.
$ sudo mcedit /etc/zabbix/zabbix_agentd.conf
Добавьте строку:
UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/domain_expiration.sh $1
Такой параметр позволит выполнить определенный внешний скрипт через агента Zabbix. Для вызова этого скрипта из Zabbix нужно исопльзовать параметр domainexpire.
Перезапустите агента:
$ sudo service zabbix-agent restart
Проверьте, что агент zabbix может получить данные через новый параметр. Для тестирования агента используется утилита zabbix-get:
$ sudo apt install zabbix-get
$ zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[remontka.com]
Если вы все настроили правильно, команда должна вернуть количество дней до окончания срока регистрации домена.
Теперь добавьте новый шаблон CheckDomainExpiration для мониторинга сроков делегирования доменов в Zabbix.
На вкладке items добавьте параметр
- Имя: Cрок регистрации домена {$DOMAINNAME}
- Type: Zabbix Agent
- Key:
domainexpire[{$DOMAINNAME}]
- Type of information: Numeric (unsigned)
- Update Interval: 1d
- History: 90d
- Trenfd: 365d
Теперь добавьте новый триггер
- Name: Срок регистрации домена {$DOMAINNAME} заканчивается
- Expression:
last(/CheckDomainExpiration/domainexpire[{$DOMAINNAME}])<39
- Severity: High
Такой триггер буде срабатывать, если до окончания срока регистрации домена осталось менее 39 дней.
Можно сразу добавить параметр триггера для восстановления:
Recovery expression: last(/CheckDomainExpiration/domainexpire[{$DOMAINNAME}])>=40
Теперь добавьте в Zabbix новый хост для вашего доменного именис с типом интерфейса Agent.
На вкладке Macros нужно указать имя домена, срок регистрации которого вы хотите отслеживать:
- Macro:
{$DOMAINNAME}
- Value:
remontka.com
Назначьте хосту ранее созданный шаблон CheckDomainExpiration.
В нашем шаблоне срок регистрации домена проверяется раз в сутки. Чтобы получить данные из whois немедленно, найдите ваш параметр на вкладке хоста и нажмите Execute Now .
Теперь проверьте Latest Data. Zabbix показывает, что срок регистрации вашего домена истекает через 39 дней.
Сработал триггер, который отправил уведомление на email или в telegram и показал проблему на дашборде. По аналогии добавьте через Hosts все домены, срок регистрации которых нужно отслеживать.