< meta name="referrer" content="origin">
Home » Zabbix » Мониторинг времени делегирования домена в zabbix

Мониторинг времени делегирования домена в zabbix

Под моим управлением находится куча всевозможных доменов. Я веду табличку в Exel по эти доменам и ставлю свой контактный e-mail у регистраторов, чтобы не пропустить окончание делегирования. Давно собирался каким-то образом автоматизировать этот процесс. Наконец дошли руки и я решил настроить мониторинг срока делегирования доменов с помощью Zabbix.

Введение

Как обычно начал с гугления темы. На удивление, не нашел практически ничего на эту тему, кроме одного метода с использованием языка ruby и гема whois. В этой статье автор неплохо описывает данный способ. Используются 2 скрипта: один для парсинга файла со списком доменов, второй для определения времени делегирования. В заббиксе настраивается шаблон с автоопределением доменов, так что не нужно заводить отдельные итемы для каждого домена, достаточно их просто добавлять в текстовый файл.

В англоязычном гугле я еще раз нашел рецепт со скриптом на ruby, но без автообнаружения. Решил не изобретать велосипед, а воспользоваться готовыми наработками. Я их осознал, проверил и представляю вам подробную инструкцию. Она будет более понятна и подробна, нежели приведенная выше ссылка.

Подготовка к мониторингу за доменами

Если у вас еще нет системы мониторинга, то можете установить последнюю версию zabbix по моей подробной инструкции. Я чаще всего работаю с CentOS, поэтому инструкцию в первую очередь предлагаю для этой системы. Но ничто вам не мешает установить zabbix на Freebsd.

Для мониторинга за сроком делегирования доменов мы будем использовать скрипт на языке программирования Ruby. Чтобы скрипт работал, необходимо установить Ruby на сервер. Если вы используете, как я, сервер на базе CentOS 7, то можете воспользоваться моей инструкцией по установке последней версии Ruby на CentOS 7. Там как раз речь идет об установке необходимого гема whois для мониторинга срока делегирования домена.

Создание скриптов

Если у вас настроен и готов к работе zabbix и установлен ruby, приступаем к настройке скриптов. Идем в папку /etc/zabbix/scripts и создаем там скрипт:

# mcedit /etc/zabbix/scripts/domain_left.rb
#!/usr/bin/env ruby
require 'whois'
require 'date'

domain = ARGV[0]

whs = Whois::Client.new(timeout: 30)
r = whs.lookup(domain)
expire = r.expires_on.strftime("%Y-%m-%d")
today = Time.now.strftime("%Y-%m-%d")
expire_date = DateTime.parse(expire)
today_date = DateTime.parse(today)
difference_in_days = (expire_date - today_date).to_i
puts difference_in_days

Его тут же можно проверить. Сохраняете скрипт и запускаете в командной строке, указывая через пробел имя домена для проверки:

# /etc/zabbix/scripts/domain_left.rb serveradmin.ru
394

Отлично, на выходе просто число, которое очень удобно передать в zabbix.

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

# mcedit /etc/zabbix/scripts/domain_discovery.sh
#!/bin/bash
JSON=$(for i in `cat /etc/zabbix/scripts/domain_list.txt`; do printf "{\"{#DOMAIN}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/')
printf "{\"data\":["
printf "$JSON"
printf "]}"

И последнее — создадим файл со списком доменов. Каждый домен с новой строки.

# mcedit /etc/zabbix/scripts/domain_list.txt
yandex.ru
mail.ru

Проверим работу скрипта для парсинга:

# /etc/zabbix/scripts/domain_discovery.sh
{"data":[{"{#DOMAIN}":"mail.ru"},{"{#DOMAIN}":"yandex.ru"}]}

Вывод подходящий для передачи в заббикс.

Настройка zabbix агента

Добавим скрипты через пользовательские параметры (UserParameter) агента. Для этого идем в папку с пользовательскими скриптами /etc/zabbix/zabbix_agentd.d и создаем там конфиг для наших параметров:

# mcedit /etc/zabbix/zabbix_agentd.d/domain.conf
UserParameter=domain.discovery[*], /bin/bash /etc/zabbix/scripts/domain_discovery.sh
UserParameter=domain.expire[*], /usr/local/bin/ruby /etc/zabbix/scripts/domain_left.rb $1

Обращаю внимание на путь к ruby. В разных системах он может быть разный. Проверьте куда он у вас установлен и отредактируйте путь. Проверить можно командой:

# whereis ruby
ruby: /usr/lib64/ruby /usr/local/bin/ruby /usr/local/lib/ruby /usr/share/ruby /usr/src/ruby-2.3.1/ruby.o /usr/src/ruby-2.3.1/ruby /usr/src/ruby-2.3.1/ruby.c

Сохраняйте конфиг и перезапускайте zabbix agent:

# systemctl restart zabbix-agent

В консоли закончили настройки, теперь идем в панель администрирования заббикс.

Создание шаблона для наблюдения за доменами

Дальше все стандартно и просто. Я выгрузил готовый шаблон у себя и предлагаю вам его скачать и импортировать, чтобы вручную не создавать все необходимое. Забираем файл — шаблон.

Импортируете шаблон себе в систему. Назначаете его хосту, в котором настроили скрипты и ждете появления данных. Минут через 5 проверяете в Latest Data:

Мониторинг делегирования домена в zabbix

Забавно, время делегирования обоих доменов одинаковое. Сначала подумал, что глюк, решил проверить вручную. Оказалось, что все верно. У них одинаковый срок продления. Без проблем работает наблюдение за доменами .рф. Их нужно перевести в Punycode и добавить так же, как и обычные домены.

Заключение

Очередной пример простоты и удобства системы мониторинга Zabbix. С его помощью можно мониторить все, что угодно. Недавно я настраивал мониторинг системы управления насосами. Система передавала параметры в текстовый файл, а я его парсил и отправлял интересующие параметры заббиксу.  Подробнее об этом написал в отдельной статье.


Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по Zabbix

Рекомендую полезные материалы по Zabbix:
Настройки системы
  • Установка 3.2 на CentOS 7
  • Обновление 3.0 -> 3.2
  • Обновление 2.4 -> 3.0
  • Установка Zabbix Proxy
  • Работа на NGINX
Видео и подробное описание установки и настройки Zabbix 3.2, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание обновления системы мониторинга zabbix версии 3.0 до новой версии 3.2.
Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.
Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.
Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.
Мониторинг служб и сервисов
 
  • Температура процессора
  • Nginx и php-fpm
  • Mysql репликация
  • Службы Linux
  • Рейд mdadm
  • Транки Asterisk
  • Synology
Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов.
Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров.
Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы.
Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks)
Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция.
Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix.
Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix.
Мониторинг различных значений
  • Мониторинг сайта
  • Мониторинг бэкапов
  • Размер бэкапа
  • Делегирование домена
  • Значения из текстового файла
  • Мониторинг логов
Настройка мониторинга web сайта в zabbix. Параметры для наблюдения - доступность сайта, время отклика, скорость доступа к сайту.
Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time.
Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов.
Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены.
Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.

4 комментария

  1. RUBY — это круто…
    https://mnorin.com/monitoring-daty-prodleniya-domennogo-imeni.html — так не проще?

    • Спасибо за ссылку, так проще. Но мне под руку сразу попался скрипт на руби, поэтому я на нем сделал. В принципе, никаких сложностей у меня не возникло. Про консольный whois я просто не знал.

    • в этой статье скрипт дату не верно вычисляет, вернее paid-till видимо ввиду того что при выводе результата от whois в строке paid-till стоит символ T

  2. на команду

    # /etc/zabbix/scripts/domain_left.rb serveradmin.ru

    ругается

    root@zabbix:/etc/zabbix/zabbix_agentd.d# /etc/zabbix/scripts/domain_left.rb serveradmin.ru
    /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require’: cannot load such file — whois (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require’
    from /etc/zabbix/scripts/domain_left.rb:2:in `’

Добавить комментарий

Ваш e-mail не будет опубликован.