Найти в Дзене

Zabbix 5 — срок действия домена

Оглавление

Продолжаю работу по переводу шаблонов на пятую версию Zabbix. Сегодня дописал третью версию шаблона для мониторинга срока действия доменов. Мониторим в Linux.

Новую версия полностью переработал. Получилось следующее:

  • Существенно уменьшено количество файлов. Для работы шаблона достаточно самого шаблона, одного скрипта и одного конфигурационного файла с пользовательскими переменными.
  • Механизм crontab больше не используется для получения данных доменов.
  • Международные доменные имена (IDN) поддерживаются, например, "испытание.рф".
  • Добавлена возможность указать название домена, которое вместе с доменным именем используется в триггеров.
  • Кроме срока действия домена отслеживаются дополнительные данные.
  • Все данные домена получаются одним запросом, скрипт можно использовать для просмотра данных домена из Linux.
  • Тайминги настраиваются в макросах шаблона.
  • И самое главное, список проверяемых доменов можно менять в самом шаблоне, он больше не хранится на хосте. Для получения данных доменов используется низкоуровневое обнаружение.

Механизм получения данных домена основан на работе утилиты whois.

whois — сетевой протокол на основе протокола TCP. Его основное предназначение: получение в текстовом виде регистрационных данных о владельцах IP адресов и доменных имен.

Работа whois описана в RFC 3912 http://tools.ietf.org/html/rfc3912. Открываем TCP соединение на 43 порт к нужному whois серверу, посылаем запрос в определенном формате, который зависит от конкретного whois сервера, заканчиваем запрос "\r\n" и получаем результат, формат которого также зависит от конкретного whois сервера. Получается что мы куда-то отправляем что-то и получаем в ответ нечто.

Из-за того, что результат выдачи whois сервера может в любой момент измениться, я не гарантирую правильность работы скрипта. Используйте на свой страх и риск и не забывайте вовремя оплачивать домены.

Скрипт протестирован в зонах:
RU NET.RU ORG.RU PP.RU SPB.RU MSK.RU РФ
INFO RE ORG COM NET TW OOO SHOP
.

Есть шанс что в каких-то других зонах тоже будет работать.

Я подобрал несколько whois серверов к тем доменным зонам, которые мне были нужны и постарался распарсить основные данные домена, которые мне могли пригодиться:

  • Название регистратора
  • NS сервера
  • Дата создания домена
  • Дата истечения срока оплаты домена
  • Количество дней до истечения срока оплаты домена

Сознательно не стал собирать контактные данные владельца домена, потому как мониторинг мне нужен не для этого.

-2

Плюс 9 триггеров, отслеживающих срок действия домена, смену регистратора и NS серверов. Один триггер срабатывает в том случае, если элемент перестаёт получать данные.

-3

Установка шаблона

Скачать шаблон для Zabbix 5.0: zbx5_domain_check.zip

В качестве хоста я использую сам Zabbix сервер, привязываю шаблон к нему. На хосте (у меня Ubuntu) устанавливаю необходимый для работы скрипта пакет whois:

apt-get install whois

Копируем domain_check.conf в папку с пользовательскими переменными, у меня это /etc/zabbix/zabbix_agentd.conf.d/domain_check.conf. Не забываем про владельца и права:

chown root\: /etc/zabbix/zabbix_agentd.conf.d/domain_check.conf
chmod 644 /etc/zabbix/zabbix_agentd.conf.d/domain_check.conf

Копируем папку со скриптом в /etc/zabbix/scripts/. В ней у нас:

  • /etc/zabbix/scripts/domain_check.sh

Не забываем про владельца и права:

chown -R root\: /etc/zabbix/scripts
chmod a+x /etc/zabbix/scripts
/*

Перезапускаем агент:

service zabbix-agent restart

Можно проверить работу скрипта:

cd /etc/zabbix/scripts
./domain_check.sh "Проверка" "internet-lab.ru"
-4

Импортируем шаблон zbx5_domain_check.xml.

В макросах шаблона можно отредактировать периодичность опроса данных:

  • {$DOMAIN_DISCOVERY_PERIOD} — 6h. Периодичность автообнаружения доменов.
  • {$DOMAIN_HISTORY_PERIOD} — 180d. Срок хранения истории. У меня не работает, берётся значение из Zabbix. Оставил, вдруг в какй-то из версий будет работать.
  • {$DOMAIN_NODATA_PERIOD} — 1d. Когда поднимать панику, если данных домена нет.
  • {$DOMAIN_REQUEST_PERIOD} — 6h. Периодичность опроса доменов.
  • {$DOMAIN_TREND_PERIOD} — 180d. Срок хранения трендов.
-5

Список проверяемых доменов

Находим шаблон в Configuration → Templates. Я назвал шаблон Domain check.

-6

Переходим в items. Здесь всего один элемент данных под названием Domain list.

-7

Кликаем по нему.

-8

Выбираем вкладку Preprocessing.

-9

Здесь один шаг препроцессинга JavaScript. Нажимаем на его параметр.

-10

А вот и список доменов в формате JSON. Здесь его можно отредактировать и указать свой список. Формат списка:

var DomainList = {
"data": [
{
"{
#NAME}": "Сисадминам internet-lab.ru", "{#DOMAIN}": "internet-lab.ru" }, { "{#NAME}": "Пиццерия setpizza.com", "{#DOMAIN}": "setpizza.com" }, { "{#NAME}": "Карты cardmoney.net", "{#DOMAIN}": "cardmoney.net" }, { "{#NAME}": "Банк masterbank.net", "{#DOMAIN}": "masterbank.net" }, { "{#NAME}": "Спорт sportmaster.info", "{#DOMAIN}": "sportmaster.info" } ] }; return JSON.stringify(DomainList)

Для каждого проверяемого домена указывается:

  • {#NAME} — название. Любое название, применяется в именах триггеров. Обязательный параметр.
  • {#DOMAIN} — домен. Можно в формате IDN, например, на кириллице. Обязательный параметр.

Примечание

Если приходится часто проверять данные SSL сертификатов, то можно вынести скрипт на отдельный хост.

Если домены не входят в один JSON, то можно сделать несколько шаблонов с разными именами и разным набором проверяемых SSL сертификатов.

Данные исключённых из списка доменов удаляются через 30 дней согласно правилам низкоуровневого обнаружения LLD.

Триггеры, отслеживающие срок действия домена, настроены на 30, 14, 7, 1, 0- дней.

Значение {$DOMAIN_NODATA_PERIOD} должно превышать {$DOMAIN_REQUEST_PERIOD}, иначе сработает триггер, отслеживающий отсутствие данных домена.

Источник:
https://internet-lab.ru/zabbix_domain_expiration3

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.