Python学习笔记-DNS域名轮循业务监控
大部分的DNS解析是一个域名对应一个IP地址,但是通过DNS轮循技术可将一个域名对应多个IP地址,这样可以实现简单且高效的负载平衡,但是轮循技术有一个缺点就是当目标主机不可用时,不能自动的删除,所以引出了要对业务主机的服务的可用性进行监控。
本例通过分析当前域名的解析IP,再结合服务端口探测来实现自动监控,在域名解析中添加、删除IP时,无须对监控脚步更改。
! Python 2.x中的"httplib"模块在Python 3.x中变为"http.client"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/python3
#
import dns.resolver
import os
import http.client
iplist = [] #定义域名IP列表变量
appdomain = "www.google.cn" #定义业务域名
def get_iplist(domain = ""): #域名解析函数,解析成功IP将被追加到iplist
try :
A = dns.resolver.query(domain, 'A' ) #解析A记录类型
except Exception as 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 True
def checkip(ip):
checkurl = ip + ":80"
getcontent = ""
http.client.socket.setdefaulttimeout( 5 ) #定义http连接超时时间(5秒)
conn = http.client.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." )
|
Python学习笔记-DNS域名轮循业务监控相关推荐
- Python学习笔记-DNS处理模块dnspython
DNS处理模块dnspython dnspython是python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消 ...
- Python学习笔记:异步IO(1)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Deep learning with Python 学习笔记(6)
本节介绍循环神经网络及其优化 循环神经网络(RNN,recurrent neural network)处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息. ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- Python学习笔记(六)
1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...
- Python学习笔记:Day15 部署Web App
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:web开发3
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:web开发2
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:web开发1
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
最新文章
- 建立实体-关系模型2
- 在centos6.4下安装python3.5
- python花钱培训值吗-Python培训费用高不高?Python培训真的值得吗?
- TCP之超时重传机制
- #论文 《ImageNet Classification with Deep Convolutional Neural Networks》
- 一个QQ旋风的BUG
- P3168 [CQOI2015]任务查询系统 主席树 + 差分
- 再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化
- Mobile and MID opportunities in APAC
- 鸿蒙硬件HI3861-MQTT-连接华为云
- java简单功能测试,java 自动化测试小功能集锦
- fpga数电基础之--------触发器
- registerClassAlias()函数和getClassByAlias()函数
- java集合学习笔记--二维集合HashMap
- 这40个Python可视化图表案例,强烈建议收藏!
- 目标跟踪 SiamFC++ (Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines)
- 杰奇python采集器_linux下能完美运行的杰奇采集器ckp
- 初识内存控制器和SDRAM【一文了解】
- python剪切文件到另外路径_python剪切文件
- 自然语言处理系统NLP之拼写纠错