Как мы домены мониторить начали и что из этого получилось
Всем привет! Все началось с того, что у нас в компании развелось очень много доменов которые нужно вовремя продлевать. И вот, после одного провала с продлением доменов, было принято решение начать мониторить дату истечения домена и выводить его в мониторинге 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
Код модуля тутПул-реквесты, запросы фич привествуются! Надеюсь, мой опыт поможет избавиться от подобной проблемы