Мониторинг доменов с помощью Zennoposter

Response Time Monitoring

Response time monitoring Response time monitoring is testing how fast is your site.

Response time monitoring is testing how fast is your site. It might be accessible, but bad performance can still make it unattractive for the clients. The monitoring of the response time allows you to check how the site acts as the time goes on. Do any of the scheduled tasks, like backup, updates etc affect the performance? Does the site works well for the whole world, or some regions of interest could meet a confusing delay?

The global monitoring system is quite useful -
as most of my outages are really regional outages out of my control. It helps to know this.

"

2017-02-01

Every year, millions of domain names are lost. What happens after domain expires?How long will your domain wait for you before someone grabs it? And how to omit this?

Monitor your domains for any changes. You can keep an eye on the state of available domains which you like, but don’t forget your own ones too. There is a wide variety of services, like HostTracker, which provide an easy, efficient way to track any changes of domain’s state.

Domains: do they have afterlife?

Everyone may face the problem of losing the domain name. Every year, millions of domain names are lost. Mostly, it happens unintentionally, the owners miss the renewal notices for various reasons and they do not figure out that they are in the process of losing their prized domain until it is too late! In this article you will get to know about the most known examples of domain expirations. Moreover, we will see that big companies, such as Microsoft, Foursquare, Yatra, are also insecure to "the drop game". Additionally, you will find out how to keep the domain name if you forget to pay for domain renewal. How long will your domain wait for you before someone grabs it? And how to omit this using HostTracker"s functions?

How Microsoft lost hotmail.co.uk

One of the most striking examples of dropping the domain name ocured in 2003 due to what is called the collective negligence. In spite of the fact, that people were trying to check up on what was happening and somehow to deal with the problem, Microsoft behaved as a typical bureaucratic organization. It turned a blind eye to people inquiries. Despite being warned that it’s time for the domain renewal, Microsoft overlooked these notifications. Therefore, the domain was returned to the pool of available domains. Moreover, its mail service wasn’t accessible in England.

Luckily, the domain was grabbed at once. The new owner was so kind that tried to inform Microsoft immediately that they needed to re-register the domain and restore the service. Nevertheless, Microsoft didn’t seem eager to get their site back and ignored these messages. Microsoft realized the issue just when journalists contacted it. Only then, the software giant reached a new owner of their domain. What is more, even after that, during a long period of time Microsoft had been stalling for time before the problem was sorted out. It seems that no one in the UK could deal with the problem, because only the central office was responsible for domain registrations.

Fortunately, hotmail.co.uk was regained. But still, Microsoft didn’t officially confirm that hotmail.co.uk had been dropped.

Only a registrar for all .uk domains shed light on this situation and born out that hotmail.co.uk had failed to be renewed despite being warned about the importance of the renewal procedure. Moreover, the registrar confirmed that the domain was snatched up by a private person. Apparently, all notifications via mail were ignored by the giant. It’s interesting that it wasn’t the very first time when something like that has happened with this company. In 1999, Microsoft had similar bad experience.

What happens after domain expires?

The procedure depends on registrar of the domain names. In addition, this procedure has changed many times over history. In this article we will be concerned with the most typical up-to-date procedure.

The first stage - the registrar shows loyalty to the client and gives extra time for domain renewal (grace period). Your grace period may take about from one to 2-3 weeks. This window can have a few deadlines - for example, a free update period, an additional fee etc. When the domain is in a grace period where all services are shut off, it isn’t available for registration by anybody else.

The second stage - the auction. After the registrar is sure that the domain renewal hasn’t been done, he puts it up for auction. It"s a registrar’s chance to bring in extra income- the domain can be auctioned off to the highest bidder. Let’s be frank, it works- many domains are snapped up at auction. Let’s look at some of the most popular auctions:

  • Go Daddy Auctions
  • NameJet
  • SnapNames.com

Each registrar cooperates with only one of these auction services. Domain names are exclusive to one auction, as the sell-off can’t take place at two locations. How does the auction work?

To begin with, there is often the opportunity to place a backorder. For example, if someone is very interested in scoring your domain name. In this case, the buyer will get the notification about the expiration status of the target domain and, definitely, leverage this opportunity. It’s worth noting that during this period, domains can be included in backorder auctions, where another participant can bid on your domain name. Generally, an auction can consist of several stages, as well as, after the main auction can follow the closeout of least desired domain names.

In addition to this, there are such sites that collect information and provide it in a more convenient way. For instance, these sites will help you to discover that more than 3 million domains have expired for the last 10 days. Furthermore, you will realize that even expensive (costing up to $ 500K) domains can be dropped after a while.

The third stage - domain "death". The domain disappears, and it can be retrieved on a common basis. Unfortunately, it’s unlikely if a domain name has any marginal value, as well as, consists of unambiguous words and is well-promoted. If so, the domain will probably get purchased, as nowadays it is also kind of business.

Some extra good examples

In 2010, a well-known website Foursquare forgot to renew their domain name. Luckily, they noticed this in time and quickly sorted out the problem. Nevertheless, customers couldn’t reach the site during this period of time. At that time the internet was bombarded with these news, yet the company has taken the advantage from this situation.

However, sad examples do exist too. In 2012, a popular Indian travel site Yatra.com, with millions of visitors and huge income, dropped their domain. Therefore they lost not only money, but also their reputation, clients and the trust of their partners. Eventually, the domain has been restored. The company hasn’t been as successful since.
Such common experience has held almost everyone once in a while in their history, from banks to giant companies. Actually, HostTracker had such experience too and it was the reason why we decided to write this article.

Web site monitoring service almost lost its domain

The truth is that сайт was almost lost despite having an instrument for keeping an eye for an expiration date and sending renewal alerts. Actually, this feature became HostTracker’s last resort, as all domains and sites are being monitored by HostTracker’s own monitoring system. In a manner of speaking, even though at that time the HostTracker company got the renewal alerts, everything seemed to be fine, as the auto-renewal was on. However, for some reason, the automatic payments didn’t pass through and the domain wasn’t renewed. To be honest, we are still not sure why did that happen, as their support could not explain the issue clearly. Luckily, we noticed the problem in time and solved it quickly.

  • Renew your domain in advance. In this case you might want to ask your registrar to set up your domain to auto-renewal in advance with your approval beforehand. Moreover, you will be notified in case of any problems.
  • Backorder does work. Just before HostTracker entered their grace period, someone had tried to contact HostTracker by mail to acquire the domain name. So pay attention to such things!
  • You would better not enter the grace period. Once the domain expires, it can be easily renewed at the regular price within a few days and HostTracker showed this. The disadvantage is that all customers will be greeted with the message that domain page isn’t available. You should never allow a domain to expire because working on recovering it can take a vast amount of time.
  • Monitor your domains for any changes. You can keep an eye on the state of available domains which you like, but don’t forget your own ones too. There is a wide variety of services, like HostTracker, which provide an easy, efficient way to track any changes of domain’s state. Check out the description of such HostTracker’s tools here in our blog.
more blog

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

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

Чем больше доменов я ставил на мониторинг, тем чаще сталкивался с тем, что по каким-то зонам не мог получить инфу. Из свежих примеров — .pro, .fm, .io. Наверняка были и другие, но я сталкивался с проблемами именно в этих зонах. Решил разобраться с этим вопросом поподробнее.

К моему удивлению, оказалось, что простого, понятного и надежного решения по получению информации о времени делегирования домена просто не существует. Очень подробно разобрана эта тема в статье на хабре . Прочитав и осознав все, что в ней написано, я понял, что реализовать простую потребность в мониторинге доменов малой кровью не получится.

Ниже я опишу несколько консольных способов получения информации о времени оплаты домена для передачи этой информации в zabbix:

  • Ruby gem Whois.
  • Консольная утилита linux — whois, jwhois.
  • Питоновский модуль — python-whois.
  • Whois client для node.js.

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

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

способ / домен pro io fm
ruby + + +
whois +
python + +
nodejs + +

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

То же самое на Debian 9, если предпочитаете его:

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

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

Парсинг времени делегирования домена через ruby

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

# mcedit /etc/zabbix/scripts/domain_left.rb #!/usr/bin/env ruby require "whois-parser" record = Whois.whois(ARGV) parser = record.parser expire = parser.expires_on.strftime("%Y-%m-%d") today = Time.now.strftime("%Y-%m-%d") expire_date = DateTime.parse(expire) today_date = DateTime.parse(today) left = (expire_date - today_date).to_i puts left

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

# /etc/zabbix/scripts/domain_left.rb сайт 394

Отлично, на выходе просто число, которое очень удобно передать в zabbix. Данный скрипт я написал не сам, а подсмотрел у автора этой статьи. У него есть большой минус. В скрипте используется whois-parser и его функция expires_on. Сделано это для упрощения создания скрипта. Не пришлось вручную парсить вывод, за нас это сделали авторы гема whois-parser. Но эти функции работают не со всеми доменами. В разных зонах вывод может быть разным. Покажу на примере.

Для этого создадим простой скрипт на ruby, который будет просто выводить информацию whois без парсинга, в сыром виде.

#!/usr/bin/env ruby require "whois-parser" domain = ARGV whois = Whois::Client.new r = whois.lookup(domain) puts r

Сохраняем скрипт и проверим с его помощью 2 домена: из зоны.pro и зоны.ru.

# ./domain.rb server.pro # ./domain.rb сайт

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

Registry Expiry Date: 2019-08-18T00:00:00Z

а в другом вот так:

Paid-till: 2019-08-09T11:01:06Z

Whois-parser умеет обрабатывать только первую строчку, вторую он не понимает, поэтому приведенный выше скрипт выдаст ошибку. Но в целом, библиотека ruby whois по моим опытам корректно обрабатывает больше всего доменов. Нужно только правильно распарсить вывод. Я программировать на ruby не умею, разбираться у меня не было времени, поэтому я оставил это решение как есть. Можно, конечно, выводить в текстовый файл, а потом парсить вывод через bash. Это я умею, но не захотелось костылить таким образом. Да и в целом, мне не нравится этот способ тем, что надо ставить ruby и регулярно обновлять его библиотеку. Только это гарантирует поддержку новых зон и всех изменений по старым.

В общем и целом способ с приведенным скриптом на ruby работает не хуже всех остальных способов, а если нормально распарсить выводы по всем нужным зонам, то это будет самый информативный и надежный вариант, при условии, что вы будете везде ставить ruby и обновлять библиотеку whois. Только этот способ показывал информацию по всем доменам, что мне попадались. Если доделаю скрипт, чтобы он работал со всеми доменами — обновлю.

Пока же я просто сделал костыль и распарсил вывод с помощью bash следующим образом:

#!/bin/bash DOMAIN="$1" data=$(/etc/zabbix/scripts/domain-simple.rb $1 | grep -E "paid|Expir" | grep -o -E "{4}.{2}.{2}|{2}/{2}/{4}" | tr . / | awk "NR == 1") expire=$((`date -d "$data" "+%s"`)) today=$((`date "+%s"`)) lefts=$(($expire - $today)) leftd=$(($lefts/86400)) echo $leftd

Сам скрипт domain-simple.rb:

#!/usr/bin/env ruby require "whois-parser" record = Whois.whois(ARGV) puts record

Я просто делаю полный вывод whois через ruby, а распарсиваю его башем, так как умею в нем работать. Получился вариант, который работает со всеми доменами. Можно этим скриптом передавать данные в zabbix.

Linux утилиты whois и jwhois

В комментариях к первоначальной статье мне подсказали про консольную утилиту whois, а позже я нагуглил и еще одну — jwhois. Я посмотрел на них внимательно и написал простенький скрипт для парсинга информации о делегировании. Данный способ самый простой и удобный. Обе утилиты ставятся через yum, первая из базового репозитория, вторая из . Не нужно дополнительных инструментов. Информативность средняя — все популярные домены есть, в том числе.io, но.pro и.fm не поддерживает. Увы и ах, мне они нужны.

Установим утилиту whois:

# yum install whois

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

#!/bin/bash DOMAIN="$1" data=$(whois $1 | grep -E "paid|Expir|expir" | grep -o -E "{4}.{2}.{2}|{2}/{2}/{4}" | tr . / | awk "NR == 1") expire=$((`date -d "$data" "+%s"`)) today=$((`date "+%s"`)) lefts=$(($expire - $today)) leftd=$(($lefts/86400)) echo $leftd

Сохраняйте скрипт и проверяйте работу. Работает так же, как и скрипт для ruby.

# ./domain_left.sh сайт 358

Я для себя решил остановиться на этом способе, как самом простом и универсальном.

Модуль python-whois для мониторинга оплаты доменов

В рамках своего исследования я решил проверить как с помощью python можно получать информацию whois. Я подозревал, что должен быть готовый модуль для этого и не ошибся. Такой модуль есть — python-whois . Для его работы нужен python версии 2, который по-умолчанию стоит в системе CentOS 7, что очень удобно.

Нам нужно только установить этот модуль через pip. Pip для 2-й версии ставится из .

# yum install python2-pip # pip install python-whois

#!/usr/bin/env python import whois from datetime import datetime from sys import argv,exit now = datetime.now() domain = argv w = whois.whois(domain) if type(w.expiration_date) == list: w.expiration_date = w.expiration_date else: w.expiration_date = w.expiration_date domain_expiration_date = str(w.expiration_date.day) + "/" + str(w.expiration_date.month) + "/" + str(w.expiration_date.year) timedelta = w.expiration_date - now days_to_expire = timedelta.days

Проверка:

# ./domain-left.py сайт 358

Работает так же, как и предыдущие скрипты. Решение на python поддерживает зоны.pro, .fm, не поддерживает.io.

Whois клиент для Node.js

Последнее рассмотренное мной консольное решение по получению данных whois основывается на клиенте для Node.js. Этот способ неудобен, как и с ruby, тем, что надо отдельно ставить node на сервер. Если python на centos сервере точно будет, то node придется ставить отдельно. Сделаем это.

# curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - # yum install nodejs

Устанавливаем whois client:

# npm install whois

Под node.js я программировать вообще не умею и со скриптами не работал никогда. Так что готового скрипта для zabbix не сделал. Покажу на простом примере, как выполнять проверку. Делаем скрипт и в нем сразу указываем домен для проверки.

Var whois = require("whois") whois..log(data) })

Запускаем его:

# node domain-left.js

В выводе увидите привычную информацию whois в таком же виде, как и для остальных проверок. Если бы этот способ проверял все необходимые мне домены, я бы его доделал. Он понимает домены.pro и.io, но не понимает.fm. Так что я не стал на нем подробно останавливаться.

Скрипт auto discovery доменов для 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 агента

Я настраиваю zabbix агент на работу со скриптом на ruby. Вы можете выбрать скрипт по своему усмотрению. Изменить нужно будет только путь к скрипту в описании итема domain.expire.

Добавим скрипты через пользовательские параметры (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:

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

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

Заключение

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.
Казалось, шансов найти короткий, красивый и подходящий домен, уже не будет.
Но нет, на дворе 2018 год, море новых доменных зон и дешевых незанятых двузнаков.

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

Базовая теория

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

Обычно регламент освобождения доменов следующий:

  • Когда заканчивается срок регистрации домена, домен отключается. Пользователю дается месяц на то, чтобы его продлить (иногда - по завышенной цене).
  • Если продления не происходит, а домен по усмотрению регистратора имеет ценность, то он выставляется на аукцион. Если ценности не усмотрели - освобождается.
  • Если домен не выкупается на аукционе, то он тоже поступает в свободную продажу.
Если домен попадает на аукцион, Вы получаете право за него соревноваться.
Если домен попадает в свободное обращение, Вы получаете право его приобрести.

На рынке котируются домены двух типов:

  1. Короткие
  2. Известные
1. Короткие делятся на:
  • 2-3-буквенные (tt.net, on.com, one.one)
  • 2-3-циферные (00.com, 25.ru, 111.tk)
  • 2-3-символьные (b2.ru, b2b.net)
Предпочтение отдается буквенным, потом циферным, потом символьным.
Брать не несущие смысловой нагрузки домены вида "j1e", наверное, не стоит. Вам они нужны?
Ведь даже двухсимвольных доменов в свободном доступе сейчас в избытке.

2. Известные деляется на:

  • Словарные слова, словосочетания, аббревиатуры (justice.com, getjuice.now)
  • Брендовые наименования (mozilla.org, сайт)
Первые покупать перспективно. Вторые - не очень, иногда их могут законно забрать.

Короткие домены отсеять и проверять несложно. Известные - труднее из-за их количества.
Бывает, что в названии домена оригинальничают, играясь с доменной зоной: gu.ru, tele.com, dobavok.net.

Нетрудно догадаться, как в этой ситуации помогает Zennoposter. Мало кто еще захочет мониторить тысячи доменов вручную.

Как это работает?

Реализация следующая: список доменов -> запрос к whois -> внесение данных.
Когда у какого-то из доменов срок действия подойдет к концу, он снова проверяется в whois и распределяется по спискам:

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

Как работать с шаблоном?

  • Вписали список желаемых доменов в domains.txt.
  • Поставили шаблон на ежедневный запуск.
  • Когда домен освобождается, Вы об этом узнаете одним из первых.
  • Покупаете красивый домен раньше других = PROFIT!
Прикладываю шаблон. Для удобства понимания, все действия шаблона я подробно расписал и прокомментировал, а также записал видео с заранее отобранными доменами.

Пример работы шаблона и истории про загадочные бессрочные домены и домен cum.by, смотрите в видео ниже:

Что же на практике?

На практике ситуация следующая:
Часть красивых доменов освобождаются без аукциона. Лучшие домены отправляются на аукцион. Но, из-за небольшого количества участников и большого количества доменов, часто не выкупаются.
А по его окончанию, быстро забираются по обычной цене теми, кто внимательно за ними следил. Так я однажды упустил один шикарный домен, который каким-то чудом никто не купил на аукционе.

Правил определения ценности доменов у регистраторов - не знаю. Мое предположение заключается в том, что регистраторы могут оценивать их не только вручную, но и по статистике запрашиваемости.

И напоследок, немного новостей:
Домен 20.com недавно был продан за $1,75 млн. Чуть ранее, домен 01.com ушел за $1,82 млн.
Стоит ли этим заниматься - решать Вам. Но, имея такой инструмент как ZennoPoster, почему бы не мониторить для собственных нужд действительно красивые домены?! Ведь их всегда можно будет продать.

Счастливого будущего в доменных инвестициях!