【Python】DNS域名轮循业务监控
来源:互联网 发布:ubuntu 16.04 arm gcc 编辑:程序博客网 时间:2024/06/05 10:07
应用背景:
大部分的DNS解析都是一个域名对应一个IP地址,但通过DNS轮循技术可以做到一个域名对应多个IP,从而实现负载均衡,减轻服务器压力,不过此方案的最大弊端是目标主机不可用时无法被自动剔除,因此做好业务主机的服务可用监控至关重要
步骤:
- 安装dnspython模块:pip install dnspython
- 获取域名所有的A记录解析IP列表
- 对所有IP进行HTTP级别的探测
#-*- coding: utf-8 -*- #!/usr/bin/pythonimport dns.resolverimport osimport httplibiplist=[] #定义域名IP列表变量appdomain="www.baidu.com" #定义业务域名def get_iplist(domain=""): #域名解析函数,解析成功IP将追加到iplist try: A = dns.resolver.query(domain, 'A') #解析A记录类型 except Exception,e: print "dns resolver error:"+str(e) return for i in A.response.answer: for j in i.items: iplist.append(j.address) #追加到iplist return Truedef checkip(ip): checkurl=ip+":80" getcontent="" httplib.socket.setdefaulttimeout(5) #定义http连接超时时间(5秒) conn=httplib.HTTPConnection(checkurl) #创建http连接对象 try: conn.request("GET", "/",headers = {"Host": appdomain}) #发起URL请求,添加host主机头 r=conn.getresponse() getcontent =r.read(15) #获取URL页面前15个字符,以便做可用性校验 finally: if getcontent=="<!DOCTYPE html>": #监控URL页的内容一般是事先定义好,比如“HTTP200”等 print ip+" [OK]" else: print ip+" [Error]" #此处可放告警程序,可以是邮件、短信通知if __name__=="__main__": if get_iplist(appdomain) and len(iplist)>0: #条件:域名解析正确且至少要返回一个IP for ip in iplist: checkip(ip) else: print "dns resolver error."
0 0
- 【Python】DNS域名轮循业务监控
- Python学习笔记-DNS域名轮循业务监控
- DNS域名轮循业务监控
- 域名DNS轮循解析
- python 基于dns 轮询的业务检测
- python与域名系统(DNS)正向查询
- dns域名
- 业务监控
- 业务监控
- DNS 域名劫持、域名污染
- 域名DNS相关问题
- 域名系统【DNS】
- 获得主机域名(DNS)
- DNS域名服务器
- DNS 域名系统
- DNS域名系统
- DNS域名系统
- DNS域名系统
- hdu 3565 Bi-peak Number 数位dp
- iOS 之通过反射机制获得变量名
- 界面添加弹出菜单 隐藏主界面的菜单栏 隐藏右上角最大化最小化按钮
- YUV format
- LeetCode-Palindrome Partitioning
- 【Python】DNS域名轮循业务监控
- 博弈详解合集(巴什+威佐夫+尼姆)
- hdu 1597 二分查找
- SEAndroid安全机制中的进程安全上下文关联分析
- IOS开发之屏幕适
- 动画(三)(转场动画, 动画组)
- iOS 之UITapGestureRecognizer活学活用
- HDU 1159 Common Subsequence 最大公共子序列
- Java注解处理器