Категории

Скрипт для проверки даты окончания оплаты домена в забикс

28.07.2025 14:11 | коды из категории: Linux

про Скрипт для проверки даты окончания оплаты домена в забикс

Полное руководство по мониторингу доменов в Zabbix

Автоматизируем контроль за сроком окончания регистрации доменных имен

Введение

В этой статье я подробно расскажу, как настроить автоматический мониторинг даты окончания регистрации доменов в системе Zabbix. Это решение особенно полезно для:

Требования

Перед началом работы убедитесь, что у вас есть:

Пошаговая реализация

1. Создаем скрипт для проверки whois

Создадим файл скрипта в папке внешних скриптов Zabbix:

sudo nano /usr/lib/zabbix/externalscripts/check_domain_expiry.sh

Добавьте следующий код:

#!/bin/bash
DOMAIN="$1"

# Для .ru доменов ищем "paid-till"
if [[ "$DOMAIN" =~ \.ru$ ]]; then
    EXPIRY_DATE=$(whois "$DOMAIN" | grep -i "paid-till" | awk -F: '{print $2}' | xargs | cut -d 'T' -f1)
else
    # Для остальных доменов ищем стандартные поля
    EXPIRY_DATE=$(whois "$DOMAIN" | grep -Ei "Expiration Date:|Registry Expiry Date:|expires:|Expiry Date:" | head -1 | awk -F: '{print $2}' | >
fi

# Пытаемся преобразовать дату в формат YYYY-MM-DD
if [[ "$EXPIRY_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
    echo "$EXPIRY_DATE"
else
    # Пробуем другие форматы (например, "28-Dec-2025")
    EXPIRY_DATE=$(date -d "$EXPIRY_DATE" +"%Y-%m-%d" 2>/dev/null)
    if [ -z "$EXPIRY_DATE" ]; then
        echo "2099-12-31"  # Возвращаем далёкую дату, если парсинг не удался
    else
        echo "$EXPIRY_DATE"
    fi
fi

Даем скрипту права на выполнение:

sudo chmod +x /usr/lib/zabbix/externalscripts/check_domain_expiry.sh
sudo chown zabbix:zabbix /usr/lib/zabbix/externalscripts/check_domain_expiry.sh

2. Настраиваем Zabbix агент

Открываем конфигурационный файл агента:

sudo nano /etc/zabbix/zabbix_agentd.conf

Добавляем строку:

UserParameter=domain.expiry[*], /usr/lib/zabbix/externalscripts/check_domain_expiry.sh "$1"

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

sudo systemctl restart zabbix-agent

3. Проверяем работу скрипта

Выполните команду:

sudo -u zabbix /usr/lib/zabbix/externalscripts/check_domain_expiry.sh example.com

Ожидаемый вывод - дата в формате ГГГГ-ММ-ДД или ERROR в случае проблем.

4. Создаем элемент данных в Zabbix

  1. Зайдите в веб-интерфейс Zabbix
  2. Перейдите: Configuration → Hosts
  3. Выберите нужный хост или создайте новый
  4. Нажмите "Items" → "Create item"
  5. Заполните поля:
    • Name: Domain expiry date for example.com
    • Type: Zabbix agent
    • Key: domain.expiry[example.com]
    • Type of information: Text
    • Update interval: 1d
  6. Сохраните элемент данных

5. Настраиваем триггер для оповещений

  1. Перейдите: Configuration → Hosts → Triggers
  2. Нажмите "Create trigger"
  3. Заполните поля:
    • Name: Domain example.com expires soon
    • Expression:
      {host:domain.expiry[example.com].strptime("%Y-%m-%d") - now() } < 30*86400
    • Severity: Warning
  4. Сохраните триггер

6. Настраиваем оповещения

  1. Перейдите: Configuration → Actions
  2. Создайте новое действие (Action)
  3. Настройте условия (например, срабатывание по вашему триггеру)
  4. Добавьте операцию (Operation) с отправкой email/telegram/sms
  5. Сохраните действие

Возможные проблемы и решения

1. Скрипт возвращает ERROR

Причина: whois-запрос не вернул дату или она в неожиданном формате.

Решение: Проверьте вручную вывод whois для вашего домена и при необходимости доработайте скрипт.

2. Элемент данных не получает значения

Причина: Проблемы с правами или конфигурацией агента.

Решение:

  1. Проверьте логи агента: tail -f /var/log/zabbix/zabbix_agentd.log
  2. Убедитесь, что скрипт работает от пользователя zabbix: sudo -u zabbix /usr/lib/zabbix/externalscripts/check_domain_expiry.sh example.com
  3. Проверьте наличие UserParameter в конфиге агента

3. Триггер не срабатывает

Причина: Неправильный тип данных или формат даты.

Решение:

  1. Убедитесь, что тип элемента данных - Text
  2. Проверьте, что дата возвращается в формате ГГГГ-ММ-ДД
  3. Добавьте проверку на ошибки в выражении триггера

Заключение

Настроив мониторинг доменов в Zabbix по этой инструкции, вы сможете:

Для расширения функционала можно:

Теги: #Zabbix #МониторингДоменов #WhoisМониторинг #ПроверкаДоменов #скрипт #script

Комментарии

iotprof 28.07.2025 15:56
с тригером глюк произошел. я переделал скрипт. надо в секундах выводить ато сравнение дат не знаю как синтаксис делать для тригера. короч надо в код добавить date -d &quot;$EXPIRY_DATE&quot; +%s а дату удалить. в итоге получим в секундах, а число сравнить уже проще

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

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA