pycurl 模块监控web服务质量应用

做过运维的应该都做过http服务了。像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去监控服务之类,今天学习了pycurl模块,这里记录一下:

模块相关说明:

c=pycurl.Curl()#创建一个curl对象c.setopt(pycurl.CONNECTTIMEOUT,5)#连接的等待时间,设置为0则不等待c.setopt(pycurl.TIMEOUT,5)#请求超时时间c.setopt(pycurl.NOPROGRESS,0)#是否屏蔽下载进度条,非0则屏蔽c.setopt(pycurl.MAXREDIRS,5)#指定HTTP重定向的最大数c.setopt(pycurl.FORBID_REUSE,1)#完成交互后强制断开连接,不重用c.setopt(pycurl.FRESH_CONNECT,1)#强制获取新的连接,即替代缓存中的连接c.setopt(pycurl.DNS_CACHE_TIMEOUT,60)#设置保存DNS信息的时间,默认为120秒c.setopt(pycurl.URL,”http://www.baidu.com”)#指定请求的URLc.setopt(pycurl.USERAGENT,”Mozilla/5.2(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50324)”)#配置请求HTTP头的User-Agentc.setopt(pycurl.HEADERFUNCTION,getheader)#将返回的HTTPHEADER定向到回调函数getheaderc.setopt(pycurl.WRITEFUNCTION,getbody)#将返回的内容定向到回调函数getbodyc.setopt(pycurl.WRITEHEADER,fileobj)#将返回的HTTPHEADER定向到fileobj文件对象c.setopt(pycurl.WRITEDATA,fileobj)#将返回的HTML内容定向到fileobj文件对象c=pycurl.Curl()#创建一个curl对象c.getinfo(pycurl.HTTP_CODE)#返回的HTTP状态码c.getinfo(pycurl.TOTAL_TIME)#传输结束所消耗的总时间c.getinfo(pycurl.NAMELOOKUP_TIME)#DNS解析所消耗的时间c.getinfo(pycurl.CONNECT_TIME)#建立连接所消耗的时间c.getinfo(pycurl.PRETRANSFER_TIME)#从建立连接到准备传输所消耗的时间c.getinfo(pycurl.STARTTRANSFER_TIME)#从建立连接到传输开始消耗的时间c.getinfo(pycurl.REDIRECT_TIME)#重定向所消耗的时间c.getinfo(pycurl.SIZE_UPLOAD)#上传数据包大小c.getinfo(pycurl.SIZE_DOWNLOAD)#下载数据包大小c.getinfo(pycurl.SPEED_DOWNLOAD)#平均下载速度c.getinfo(pycurl.SPEED_UPLOAD)#平均上传速度c.getinfo(pycurl.HEADER_SIZE)#HTTP头部大小好了通过上面的思路,我们写一个脚本来完成这个工作就好了:直接代码:#!/usr/bin/envpython#-*-coding:utf-8-*-importos,sysimporttimeimportsysimportpycurlclassTest:def__init__(self):self.contents=”defcallback(self,curl):self.contents=self.contents+curldeftest_gzip(url):t=Test()c=pycurl.Curl()c.setopt(pycurl.WRITEFUNCTION,t.callback)c.setopt(pycurl.ENCODING,’gzip’)c.setopt(pycurl.URL,input_url)c.perform()NAMELOOKUP_TIME=c.getinfo(c.NAMELOOKUP_TIME)CONNECT_TIME=c.getinfo(c.CONNECT_TIME)PRETRANSFER_TIME=c.getinfo(c.PRETRANSFER_TIME)STARTTRANSFER_TIME=c.getinfo(c.STARTTRANSFER_TIME)TOTAL_TIME=c.getinfo(c.TOTAL_TIME)HTTP_CODE=c.getinfo(c.HTTP_CODE)SIZE_DOWNLOAD=c.getinfo(c.SIZE_DOWNLOAD)HEADER_SIZE=c.getinfo(c.HEADER_SIZE)SPEED_DOWNLOAD=c.getinfo(c.SPEED_DOWNLOAD)print”HTTP状态码:%s”%(HTTP_CODE)print”DNS解析时间:%.2fms”%(NAMELOOKUP_TIME*1000)print”建立连接时间:%.2fms”%(CONNECT_TIME*1000)print”准备传输时间:%.2fms”%(PRETRANSFER_TIME*1000)print”传输开始时间:%.2fms”%(STARTTRANSFER_TIME*1000)print”传输结束总时间:%.2fms”%(TOTAL_TIME*1000)print”下载数据包大小:%dbytes/s”%(SIZE_DOWNLOAD)print”HTTP头部大小:%dbyte”%(HEADER_SIZE)print”平均下载速度:%dbytes/s”%(SPEED_DOWNLOAD)if__name__==’__main__’:url=sys.argv[1]test_gzip(url)美不美乡中水,亲不亲故乡人。

pycurl 模块监控web服务质量应用

相关文章:

你感兴趣的文章:

标签云: