当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

Python3对DNS负载均衡环境下的WEB服务器的监控脚本

很多大型网站为了减轻压力,避免单点故障,使用了多个服务器(IP)地址来为单一网站提供服务。其中包括使用DNS轮训来实现负载。但是对于管理员而言,如何可以监控这些服务器那些是ok那些是有问题的呢?下面脚本可以帮你实现。importsocket,urllib.parse

很多大型网站为了减轻压力,避免单点故障,使用了多个服务器(IP)地址来为单一网站提供服务。

其中包括使用DNS轮训来实现负载。

但是对于管理员而言,如何可以监控这些服务器那些是ok那些是有问题的呢?

下面脚本可以帮你实现。  

  1. import socket,urllib.parse,configparser,re,sys,http.client,time  
  2.   
  3. #coding:utf-8   
  4.   
  5. #域名转换IP地址函数   
  6. def dom2ip(dname):  
  7.     iplist=socket.gethostbyname_ex(dname)[2]  
  8.     return iplist  
  9.   
  10. #字典数据生成函数   
  11. def parse(url,key):  
  12.     zhlist[key]={}  
  13.     zhlist[key][\'host\']=a.hostname  
  14.     zhlist[key][\'path\']=a.path  
  15.     zhlist[key][\'port\']=a.port  
  16.     zhlist[key][\'query\']=a.query  
  17.     zhlist[key][\'url\']=a.geturl()  
  18.     try:  
  19.         zhlist[key][\'ips\']=dom2ip(a.hostname)  
  20.     except Exception as err:  
  21.         print(\'你的配置文件格式有错误,n错误信息:\',err,\'n程序已退出\')  
  22.         sys.exit(1)  
  23.           
  24.   
  25.   
  26. #headers   
  27. headers={  
  28.     \'User-Agent\':\'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko)\'  
  29. }  
  30.   
  31.   
  32.   
  33.   
  34. def getinfo(domain,ip,path=\'/\',port=80):  
  35.     headers[\'Host\']=domain  
  36.     h=http.client.HTTPConnection(ip,port,timeout=8)  
  37.     h.request(\'GET\',path,headers=headers)  
  38.     r=h.getresponse()  
  39.     print(r.getheaders())  
  40.     print(\'服务器返回状态\',r.status)  
  41.     print(\'服务器返回结果\',r.reason)  
  42.     print(\'目标时间:\',r.getheader(\'Date\'))  
  43.     print(\'目标Web端:\',r.getheader(\'Server\'))  
  44.     print(\'目标网页上次修改时间:\',r.getheader(\'Last-Modified\'))  
  45.     print(\'目标内容返回:\',r.getheader(\'Content-Length\'),\'字节\')  
  46.     print(\'目标返回编码:\',r.getheader(\'Content-Encoding\'))  
  47.     try:  
  48.          
  49.           
  50.         #分析网页的字符集   
  51.         a=r.getheader(\'Content-Type\')  
  52.         b=re.findall(\'charset=(.*)$\',a,re.I)  
  53.         for i in b:  
  54.             charset=i  
  55.         try:  
  56.             charset  
  57.             res=res.decode(charset,\'ignore\')  
  58.         except:  
  59.             res=r.read(2048)  
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有