Всем привет! Все началось с того, что у нас в компании развелось очень много доменов которые нужно вовремя продлевать. И вот, после одного провала с продлением доменов, было принято решение начать мониторить дату истечения домена и выводить его в мониторинге Nagios.
Как мониторить?
У нас было несколько доменов в зонах kz, ru, kg, ge, com.
Самый простой способ узнать всю нужную информацию о домене — запустить whois. Это по идее должен знать каждый. Но как все это дело внедрить в мониторинг?
Чем мониторить?
Покопавшись по просторам интернета, был найден модуль python-whois. Он хорошо выполнял свою работу для доменов com, net и кучи других доменов, описанных в описании к модулю.
Не хватало функционала для нескольких доменов в зонах kg.
В итоге появился форк проекта python-whois-extended который расширяет функционал для больших TLD.
Ок, как внедрить в нагиос?
Все просто, пишем простой чек
#!/usr/bin/env python
#
# Usage:
# python check_domain.py -d DOMAIN
import whois
from datetime import datetime
from sys import exit
from optparse import OptionParser
def check_domain(domain):
q = whois.query(domain)
if (q.expiration_date - datetime.now()).days <= 30:
print "CRITICAL: Domain: {0} expires on {1}".format(domain, q.expiration_date)
exit(2)
print "OK: Domain: {0} expires on {1}".format(domain, q.expiration_date)
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-d", "--domain", dest="domain", help="Domain to monitor expiry date")
(options, args) = parser.parse_args()
if not options.domain:
print parser.print_help()
exit(0)
check_domain(options.domain)
Что он делает? Светит красным в мониторинге за месяц до истечения домена.
Что интересно, появился еще один мейнтейнер, который добавил поддержку для hk, cn и kr TLD.
Текущий список поддерживаемых доменов такой:
com, net, org, uk, pl, ru, lv, jp, co_jp, de, at, eu, biz, info, name, us, co, me, be, nz, cz, it, fr, kg, vc, fm, tv, edu, ca, cn, kr, hk
Код модуля тут
Пул-реквесты, запросы фич привествуются!
Надеюсь, мой опыт поможет избавиться от подобной проблемы
Автор: Gen1us2k