Заметки сисадмина

Мониторим время окончания оплаты домена с помощью Zabbix

Согласитесь, что за оплатой домена надо следить? Заходить в личный кабинет и проверять? А если пропустите письмо по почте? Если есть zabbix, то можно делать это автоматически! А заодно можно сделать уведомление в telegram

Мониторим время окончания оплаты домена с помощью Zabbix

Согласитесь, что за оплатой домена надо следить? Заходить в личный кабинет и проверять? А если пропустите письмо по почте? Если есть zabbix, то можно делать это автоматически! А заодно можно сделать уведомление в telegram


Поискав немного в интернете информацию, нашел интересный скрипт. Решил с Вами поделиться, может кому будет полезно.

Для работы скрипта необходимо установить WHOIS

Сам скрипт выглядит так:

#!/bin/sh

# получаем имя домена
DOMAIN=$1

# получаем имя зоны
ZONE=`echo $DOMAIN | sed ’ s/\./ /’ | awk ’ { print $2 }’ `

# получаем дату протухания домена
# Должна вернуться в формате ГГГГ-ММ-ДД (год-месяц-день)
case "$ZONE" in
ru|net.ru|org.ru|pp.ru)
DATE=`whois $DOMAIN | grep paid-till | awk ’ { print $2 }’ | sed ’ s/\./-/g’ `
;;
com|net)
DATE=`whois $DOMAIN | grep "Registration Expiration Date:" | sed ’ s/Registrar Registration Expiration Date: //g;s/T/ /g’ | awk ’ { print $1 }’ ` ;;
org)
DATE=`whois $DOMAIN | grep "Registry Expiry Date:" | sed ’ s/Registry Expiry Date: //g;s/T/ /g’ | awk ’ { print $1 }’ ` ;;
*)
DATE="$(whois $DOMAIN | awk ’ /[Ee]xpir.*[Dd]ate:/ || /[Tt]ill:/ || /expire/ {print $NF; exit;}’ )"
if test -z "$DATE"; then #Отсутствует информация в Whois для домена
echo "-1"
continue
fi
esac

# считаем дни и выводим
expr \( `date --date="$DATE" +%s` - `date +%s` \) / 60 / 60 / 24


Скрипт кладем в каталог по умолчанию для внешних скриптов, который указан в конфигурации сервера zabbix, вот строчка по умолчанию в zabbix-server.conf

ExternalScripts=/usr/lib/zabbix/externalscripts

Теперь выдаем права и делаем его исполняемым:

chown zabbix:zabbix /usr/lib/zabbix/externalscripts/checkdomainexpire.sh
chmod +x /usr/lib/zabbix/externalscripts/checkdomainexpire.sh
Теперь осталось в агента добавить свой параметр:
mcedit /etc/zabbix/zabbix_agentd.conf
UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/checkdomainexpire.sh $1
Перезапускаем агента:
service zabbix-agent restart

Все, на этом подготовка завершена, осталось добавить шаблон и прикрутить его к хосту.

Скачать шаблон domain_template.rar

Создаем узел, прикручиваем к нему данный шаблон и переходим в макросы:

Делаем макрос:

{$DOMAINNAME} - Имя домена, который надо "смотреть"

Все, ожидаем получение данных.

Вот так это выглядит во вкладке "Мониторинг -> Последние данные"

Поделиться
Комментарии
Дмитрий 05.03.2019 15:24
А если надо мониторить несколько доменов, а для этого оно и надо по большей части. Как в данном примере добавить больше одного домена на мониторинг?
Виталий 05.03.2019 17:31
Я делаю это так: У меня на каждый домен сделан новый узел сети и в нем естественно свой макрос. Но при этом все они ссылаются на один и тот же скрипт (к ним привязан один и тот же шаблон)
Евгений 19.03.2019 05:25
Для тех, у кого будет ошибка bad interpreter: No such file or directory. Суть проблемы в том, что на платформе Windows редакторы добавляют символ «возврата каретки» CR/LF, то есть при переносе кода скрипта в Linux в конце каждой строки получаем ненужные символы ^M. Будьте внимательней, а скрипт к статье можно было приложить и файлом.
Валерий 25.09.2019 07:22
Добрый день. Не подскажите, при создание узла какой интерфейс нужно добавить? Просто на скриншоте видно зеленый свет загорелся на "ZBX", Значит просто добавлялся "Интерфейс агента 127.0.0.1" ?
Валерий 25.09.2019 08:09
Так с создание узла разобрался. Но вот теперь такой вопрос, почему у элемента данных такая ошибка ? Value "sh: 1: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: not found" of type "string" is not suitable for value type "Numeric (unsigned)" ?
Виталий 25.09.2019 09:53
Добрый день. Для начала надо смотреть что прилетает после выполнения скрипта? Возможно там не только цифры, но и какой то текст. Вы пробовали просто выполнить скрипт вручную? Соответственно вместо вместо переменных ($1) подставить то значение, которое у Вас прописано в элементе данных.
Максим Орлов

Ваш покорный слуга - компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Оставить комментарий

Ваш Email адрес не будет опубликован. Все обязательные поля обозначены *