pycurl监控http响应时间

运维监控   站点监控  

pycurl 的一些响应信息

pycurl.NAMELOOKUP_TIME    域名解析时间  
pycurl.CONNECT_TIME       远程服务器连接时间  
pycurl.PRETRANSFER_TIME   连接上后到开始传输时的时间  
pycurl.STARTTRANSFER_TIME 接收到第一个字节的时间  
pycurl.TOTAL_TIME         上一请求总的时间  
pycurl.REDIRECT_TIME      如果存在转向的话,花费的时间

pycurl.EFFECTIVE_URL  
pycurl.HTTP_CODE HTTP     响应代码  
pycurl.REDIRECT_COUNT     重定向的次数  
pycurl.SIZE_UPLOAD        上传的数据大小  
pycurl.SIZE_DOWNLOAD      下载的数据大小  
pycurl.SPEED_UPLOAD       上传速度  
pycurl.HEADER_SIZE        头部大小  
pycurl.REQUEST_SIZE       请求大小  
pycurl.CONTENT_LENGTH_DOWNLOAD   下载内容长度  
pycurl.CONTENT_LENGTH_UPLOAD     上传内容长度  
pycurl.CONTENT_TYPE        内容的类型  
pycurl.RESPONSE_CODE       响应代码  
pycurl.SPEED_DOWNLOAD      下载速度  
pycurl.SSL_VERIFYRESULT  
pycurl.INFO_FILETIME        文件的时间信息

pycurl.HTTP_CONNECTCODE      HTTP 连接代码  
pycurl.HTTPAUTH_AVAIL  
pycurl.PROXYAUTH_AVAIL  
pycurl.OS_ERRNO  
pycurl.NUM_CONNECTS  
pycurl.SSL_ENGINES  
pycurl.INFO_COOKIELIST  
pycurl.LASTSOCKET  
pycurl.FTP_ENTRY_PATH  

Python 监控插件

#!/usr/bin/python
# coding: UTF-8
import StringIO  
import pycurl  
import sys  
import os  
import json

class Http_Test:  
    def __init__(self):
        self.contents = ''
    def body_callback(self,buf):
        self.contents = self.contents + buf

def Check_Url(input_url):  
    t = Http_Test()
    c = pycurl.Curl()
    c.setopt(pycurl.WRITEFUNCTION,t.body_callback)
    c.setopt(pycurl.ENCODING, 'gzip')
    c.setopt(pycurl.URL,input_url)
    c.perform()
    http_code = c.getinfo(pycurl.HTTP_CODE)
    http_conn_time = c.getinfo(pycurl.CONNECT_TIME)
    http_pre_tran = c.getinfo(pycurl.PRETRANSFER_TIME)
    http_start_tran = c.getinfo(pycurl.STARTTRANSFER_TIME)
    http_total_time = c.getinfo(pycurl.TOTAL_TIME)
    http_size = c.getinfo(pycurl.SIZE_DOWNLOAD)
    http_namelookup_time = c.getinfo(pycurl.NAMELOOKUP_TIME)
    http_connectcode = c.getinfo(pycurl.HTTP_CONNECTCODE)
    info = """
    监测URL:%s
    响应代码: %s
    连接代码: %s
    连接时间: %.3f秒
    域名解析时间: %.3f秒
    请求总的时间: %.3f秒
    连接上后到开始传输时间: %.3f秒
    接收到第一个字节的时间: %.3f秒
    """ %( input_url,http_code,http_connectcode,http_conn_time,http_namelookup_time,http_total_time,http_pre_tran,http_start_tran)
    return info

if __name__ == "__main__":  
    input_url = 'www.baidu.com'
    info = Check_Url(input_url)
    print info

如图

将数据传给监控平台生成图表