Оглавление
Довольно простой шаблон и скрипт, позволяющие мониторить время истечения регистрации доменов — Registration Expiry
Скрипт, определения срока окончания регистрации.
Данный скрипт позволяет определить, сколько осталось времени до окончания регистрации. При этом необходимо обратить внимание, что используются различные поля описания времени окончания регистрации. Так например, Registration Expiration Date, Registry Expiry Date, paid-till Если необходимо,можно дописать новые патерны. В качестве основной утилиты используется программа whois, которая должна быть установлена в системе
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/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 |
Поместим его в каталог, указанный в конфигурации сервера как ExternalScripts=/usr/lib/zabbix/externalscripts и установим права и разрешим выполнение
1 2 3 4 |
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/checkdomainexpire.sh chmod +x /usr/lib/zabbix/externalscripts/checkdomainexpire.sh |
Настройка zabbix_agentd.conf
Добавляем к конфигурационный файл zabbix агента на сервере исполняемый скрипт
1 2 3 4 |
vi /etc/zabbix/zabbix_agentd.conf UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/checkdomainexpire.sh $1 |
После чего перезапустим агент
1 2 3 |
service zabbix-agent restart |
Шаблон Zabbix
Так выглядит информация, которую возможно получить при помощи скрипта и шаблона
Скачать шаблон zbx_export_templates
<?xml version=»1.0″ encoding=»UTF-8″?>
<zabbix_export>
<version>3.4</version>
<date>2018-06-15T11:29:18Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Domain Expiration</template>
<name>Domain Expiration</name>
<description/>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Домены</name>
</application>
</applications>
<items>
<item>
<name>Cрок регистрации домена {$DOMAINNAME}</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>domainexpire[{$DOMAINNAME}]</key>
<delay>4h</delay>
<history>90d</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>дней</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Домены</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules/>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Domain Expiration:domainexpire[{$DOMAINNAME}].last()}<30</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Регистрация домена {$DOMAINNAME} заканчивается</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
</triggers>
</zabbix_export>
Данный шаблон необходимо импортировать в Zabbix.
Настройка имени домена, для мониторинга
После прикрепления данного шаблона к хосту, необходимо задать макрос, а именно прописать имя домена, как показано на примере ниже.
Триггер уведомления об окончании срока действия можно скорректировать по своему усмотрению, в данном примере используется месяц
Не забудьте продлить свой домен!!! )
Доброе утро! Мне понравился пост,я рад что нашел его. Но есть некоторые пробелы в шагах реализации. Допустим нигде на указано что каждый домен надо добавить в «Узлы сети» и потом добавить в Шаблоны выше указный Шаблон. Конечно очень понятно было добавить «Макросы» для данного домена. И не указано что можно или нужно ещё добавить из других пробелов ка например «ICMP loss или ICMP ping». Но это я понял как делается, но было бы хорошо указать в посте. Самый главный вопрос это я сделал все пошагово и проверил в ручную домен проверяется нормально, но в самом Zabbix домены появляются и в… Подробнее »
Доброе утро, Сергей!
Сейчас пройду по алгоритму еще раз. У меня тоже были проблемы с данными, возможно впопыхах что то упустил. Спасибо, за оценку )
Спасибо заранее если получиться что-то исправить.
Сергей, что выдает
zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
и все тоже самое, но от пользователя zabbix
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
sh: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: Permission denied
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
sh: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: Permission denied
Хотя весь путь к /usr/lib/zabbix/externalscripts/checkdomainexpire.sh принадлежит
пользователю zabbix .
Странно это, почему отвечает Permission denied под пользователем кому принадлежит файл.
Хорошо.
Что показывает ls -l /usr/lib/zabbix/externalscripts/
Возможно файл не сделан исполняемым
chmod +x /usr/lib/zabbix/externalscripts/checkdomainexpire.sh
А вот так
/usr/lib/zabbix/externalscripts/checkdomainexpire.sh kost.su 347 отвечает нормально.
Хорошо, но это выполняется от пользователя с повышенными привилегиями. Теперь понятно, почему нет данных
По пунктам
1. /etc/zabbix/zabbix_agentd.conf
UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/checkdomainexpire.sh $1
2. ls -l /usr/lib/zabbix/externalscripts/checkdomainexpire.sh
-rwxr-xr-x 1 zabbix zabbix 1339 июн 15 09:51 /usr/lib/zabbix/externalscripts/checkdomainexpire.sh
В /etc/sudoers вроде нет дополнительных разрешений…
Да все так и есть как вы описали выше по 1, 2
Не на sudoers вроде обычные разрешения на CentOS 7
А что именно может помешать?
Имелось ввиду, что в файле sudoers прописаны дополнительные разрешения
1. Необходимо проверить от какого пользователя запущен агент zabbix
2. Попробовать выполнить файл, расположенный в другой директории
Таким образом можно выяснить — дело в правах на файл или директорию. Далее будет понятно, что делать
Есть папка /etc/sudoers.d , а там
cat zabbix_sudo
Defaults:zabbix !requiretty
Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap
#zabbix ALL = (other_user) NOPASSWD: ALL
zabbix ALL = (root) NOPASSWD: ZABBIX_CMD
1) Но как я смотрю на папку zabbix/
drwxr-xr-x. 2 zabbix zabbix 4096 июл 4 12:12 scripts
drwxr-x—. 2 apache apache 4096 июн 27 11:02 web
-rw-r—r—. 1 root root 10785 июл 9 15:59 zabbix_agentd.conf (может дело в правах )
drwxr-xr-x. 2 root root 4096 июл 4 14:04 zabbix_agentd.d
-rw-r——. 1 root zabbix 15116 май 16 15:34 zabbix_server.conf
2) есть папка zabbix/scripts/ пара скриптов там на руте работают правильно
Так, ОС Debian\Ubuntu ?
Сергей, если есть скайп, то добавьте меня, будет немного проще и быстрее
Есть но им на работе трудно пользоваться.
Есть и вайбер, ватсапп, ими могу писать не часто но получается.
Ок
OS CentOS 7
Скайп есть, попытался добавить но нашлось столько с твоих скайпом одинаковых даже не знал кого добавить.
Скайп — Дзержинск, админ в темноте )
Изменим строку
Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap
на
Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap, /usr/lib/zabbix/externalscripts/checkdomainexpire.sh, /usr/bin/whois
И попробуем запустить
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
Не могу понять ответ :
sh: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: Permission denied
А вот так
sudo sh /usr/lib/zabbix/externalscripts/checkdomainexpire.sh kost.ru работает.
Да и дошло то того что получаю ответ :
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k sh domainexpire[kost.su]
zabbix_get [13825]: invalid parameter «domainexpire[kost.su]»
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k sh domainexpire[kost.su] — SH тут явно лишнее, так как интерпретатор указан первой строкой в скрипте
После внесение изменений
меняем
Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap
на
Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap, /usr/lib/zabbix/externalscripts/checkdomainexpire.sh, /usr/bin/whois
Что то изменилось?
Я поменял Cmnd_Alias ZABBIX_CMD = /usr/bin/nmap, /usr/lib/zabbix/externalscripts/checkdomainexpire.sh, /usr/bin/whois
Но ничего не изменилось.
sh Добавил случайно .
Ответ тот же
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[kost.su]
sh: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: Permission denied
Хорошо!
Делаем следующее – для пользователя под которым запущен zabbix agent (zabbix 992 0.0 0.0 83168 1180 ? S июл08 0:31 /usr/sbin/zabbix_agentd:) в /etc/passwd зададим SHELL
Было
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
Стало
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/bin/bash
Далее
su – zabbix
whois ya.ru
cd /usr/lib/zabbix/externalscripts/
./checkdomainexpire.sh ya.ru
21
Значит не все так плохо.
Доброе утро это сработало.
Ответы такие же как и у тебя.
Доброе утро! Отлично!!! Т.е. все пути и файлы доступны для пользователя
Теперь остается понять, что не так при выполнении команды от демона zabbix_agentd
sudo -u zabbix /usr/lib/zabbix/externalscripts/checkdomainexpire.sh ya.ru
20
и
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[ya.ru]
20
если вторая команда отдает Permission deny, смотрим под какой учеткой запущен zabbix_agentd командой ps -uax | grep agent и проверям Userparametr в /etc/zabbix/zabbix_agentd.conf – UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/checkdomainexpire.sh $1
Да вторая команда отдает Permission deny ps -uax | grep agent zabbix 29603 0.0 0.0 95292 1292 ? S 08:58 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 29604 0.0 0.0 95292 1608 ? S 08:58 0:02 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 29605 0.0 0.0 95416 2488 ? S 08:58 0:01 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 29606 0.0 0.0 95416 2480 ? S 08:58 0:01 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 29607 0.0 0.0 95416 2508 ? S 08:58 0:01 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 29608 0.0 0.0 95424 2252 ? S 08:58 0:00 /usr/sbin/zabbix_agentd: active checks… Подробнее »
1. Пробуем выполнить альтернативный код
Добавляем в /etc/zabbix/zabbix_agentd.conf
UserParameter=echoz[*],/usr/bin/echo $1
Перезапускам службу
service zabbix-agent restart
Тестируем sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k «echoz[TEST]»
2. Проверяем /usr/sbin/sestatus Если включен, отключаем его — echo 0 > /selinux/enforce или setenforce 0 или vi /etc/sysconfig/selinux изменить SELINUX=disabled и перегрузить сервер
Пробуем повторно sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k «echoz[TEST]»
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k «echoz[TEST]»
TEST выходит.
На sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[ya.ru]
sh: /usr/lib/zabbix/externalscripts/checkdomainexpire.sh: Permission denied это все как роот
Порбуем SELinux отключить на время
ДА это был виновен SELinux в этом!!!
sudo -u zabbix zabbix_get -s 127.0.0.1 -p 10050 -k domainexpire[ya.ru]
20
Но можно было бы настроить чтобы SELinux понимал эти комманды?
Наверное теперь можно и zabbix bash убрать.
Спасибо за помощь интересно было понять.
Да, можно добавить разрешения в SE
Да, оболочку для пользователя Zabbix можно отключить
Данные появились?
Ну и славно, дополню пост
Данные пока ещё не появились но думаю уже завтра или сегодня должны появиться.
Если нужна помощь для поста могу дать что я делал, то что выше описал в самом начале.
Да, если можно, в двух строках
1) Выше описанное с шаблоном и скриптом
2) Создаём группу узлов сети
3) Создаём узел сети для каждого домена (отдельно для каждого)
4) После прикрепления данного шаблона к хосту, необходимо задать макрос, а именно прописать имя домена .
Примерно так.
Привет!
Вот как посмотрел сегодня данных так и нет в График.
Привет! )
Так, продолжаем разбор полетов
При просмотре данных, поставить галки — Показывать элементы данных без истории
и Показывать детали При наведении на элемент данных высвечивает сообщение, которое сможет подсказать в чем причина.
Да наверно нужно понять в чем дело.
Так как изначально его ставил не я, поэтому может я что-то и пропускаю.
Но в основном я многое что установлено понял уже.
Так что не проблема разобраться, но очень хочется понять где и что упускаю.
Привет!
Да сейчас появилось значения нашёл и где проблема была.
Интервал обновления в 4 часа это нормально ?
Доброго времени суток.
Проверка раз в 4 часа, на самом деле избыточна, так как время регистрации домена обновляется раз в сутки, поэтому достаточно единожды за 24 часа проверять.
Ну я так и сделаю.
Но странная вещь , показывает проблему
Красная кнопка рядом с графиком ( /usr/lib/zabbix/externalscripts/domainexpire: [2] No such file or directory)
Но он там есть :
zabbix zabbix 1049 июл 4 18:06 /usr/lib/zabbix/externalscripts/domainexpire
И в агенте
UserParameter=domainexpire[*], /usr/lib/zabbix/externalscripts/domainexpire $1
Привет!
Странная вещь, смотрю сегодня красная кнопка с проблемой исчезла значит настроил правильно но в графике данных так и нет, только какая то серая масса в графике.
Добрый день
А что показывает в строке последнее значение при установленных галочках Показывать элементы данных без истории и Показывать детали
SELinux запущен?
К сожалению ничего не показывает.
SELinux status: disabled
SELinux Я давно уже убрал.
Приветствую Вас!
Большое спасибо за проделанную работу, однако у меня появилась проблема по получении информации. График не дает никакой информации [нет данных]
я так понял, что проблема в настройке zabbix
a
проверил, zabbix может запустить
cat /etc/passwd
zabbix:x:995:992:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
[root@localhost home]# su - zabbix -s /bin/sh
su: warning: cannot change directory to /var/lib/zabbix: Нет такого файла или каталога
-sh-4.2$ /usr/lib/zabbix/externalscripts/checkdomainexpire.sh test.ru
62
не подскажете, какова полная процедура внесения ?
p.s. приложил скрины настройки на zabbixе
https://ibb.co/svYzjXx
https://ibb.co/ZH9sWYG
https://ibb.co/NrLNSSg
https://ibb.co/ZzcdyWM
Заранее спасибо за уделенное время!
Доброго времени суток
Что показывает ошибка при наведении на items в разделе последние данные
И попробуйте передать оригинальное имя вашего домена скрипту
/usr/lib/zabbix/externalscripts/checkdomainexpire.sh DOMAIN.RU
Все заработало!
Так как я новичок, не знал что он обновит информацию через 5 часа или если обносить принудительно!
Спасибо за уделенное время, и за скрипт!
с:
Скорее всего интервал опроса у меня стоит 6 часов. Потому что чаще нет смысла опрашивать. По большому счету раз в день достаточно.
Спасибо вам за оценку работы )
Судя по пингу (и комментариям) — у Вас в адресе узла указан 127.0.0.1 и пингуется локалхост, а не сервер у которого проверяется продленность домена.
Добрый день
В шаблоне нет ICMP мониторинга. Он предназначен исключительно для проверки истечения времени регистрации.
Имя домена необходимо задать макросом. Хост, который необходимо опрашивать другими шаблонами, в стандартных параметрах хоста.