當前位置:
首頁 >
Python学习笔记-DNS域名轮循业务监控
發布時間:2025/6/15
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
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域名轮循业务监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux redhat 红帽 cent
- 下一篇: 六:Dubbo与Zookeeper、Sp