监控网站服务质量出图学习后续篇

    前面我们已经学习过了,如何收集网站服务质量的一些相关数据,然后通过入库出图,开始打算是用rrdtool做画图,但是经过一段时间的研究,发现echarts出图合理和美观,下面贴出我实时收集到的数据和出图展示部分:

1、数据收集,并且格式化形成字典:

    

#!/usr/bin/env python

# -*- coding: utf-8 -*-  

import os,sys,json  

import time  

import sys  

import pycurl 


class Test:

    def __init__(self):

        self.contents = ‘‘

    def callback(self,buf):

        self.contents = self.contents + buf

def test_gzip(input_url):

    data = {} 

    t = Test() 

    c = pycurl.Curl()  

    c.setopt(pycurl.WRITEFUNCTION,t.callback)

    c.setopt(pycurl.ENCODING, ‘gzip‘)

    c.setopt(pycurl.URL,input_url) 

    c.perform()    

    NAMELOOKUPTIME =  c.getinfo(c.NAMELOOKUP_TIME)  

    CONNECTTIME =  c.getinfo(c.CONNECT_TIME) 

    PRETRANSFERTIME =   c.getinfo(c.PRETRANSFER_TIME)         

    STARTTRANSFERTIME = c.getinfo(c.STARTTRANSFER_TIME)   

    TOTALTIME = c.getinfo(c.TOTAL_TIME)

    HTTPCODE =  c.getinfo(c.HTTP_CODE)  

    SIZEDOWNLOAD =  c.getinfo(c.SIZE_DOWNLOAD)  

    HEADERSIZE = c.getinfo(c.HEADER_SIZE)   

    SPEEDDOWNLOAD=c.getinfo(c.SPEED_DOWNLOAD) 

    data["HTTPCODE"]= HTTPCODE  

    data["NAMELOOKUPTIME"]="%.2f"%(NAMELOOKUPTIME*1000)  

    data["CONNECTTIME"]="%.2f"%(CONNECTTIME*1000) 

    data["PRETRANSFERTIME"]="%.2f"%(PRETRANSFERTIME*1000)  

    data["STARTTRANSFERTIME"]="%.2f"%(STARTTRANSFERTIME*1000)

    data["TOTALTIME"]="%.2f"%(TOTALTIME*1000)

    data["SIZEDOWNLOAD"]="%d"%(SIZEDOWNLOAD)  

    data["HEADERSIZE"] ="%d"%(HEADERSIZE)  

    data["SPEEDDOWNLOAD"]="%d"%(SPEEDDOWNLOAD)

    print data  

if __name__ == ‘__main__‘:

    input_url = sys.argv[1]

    test_gzip(input_url)

2、后端处理数据,格式化输出:

def pycurl(request):

        cmd = "python  %s/backend/pcurl.py www.shikee.com" %(‘/yizhan/oms/app01‘)

        data = os.popen(cmd).read()

        data=eval(data)   #这个函数害苦我了,开始怎么设置都不对,调用eval之后搞定

        NAMELOOKUPTIME=float(data[‘NAMELOOKUPTIME‘])

        CONNECTTIME=float(data[‘CONNECTTIME‘])

        PRETRANSFERTIME=float(data[‘PRETRANSFERTIME‘])

        STARTTRANSFERTIME=float(data[‘STARTTRANSFERTIME‘])

        TOTALTIME=float(data[‘TOTALTIME‘])

        SPEEDDOWNLOAD=float(data[‘SPEEDDOWNLOAD‘])

        return render_to_response(‘pycurl.html‘,{‘NAMELOOKUPTIME‘:NAMELOOKUPTIME,‘CONNECTTIME‘:CONNECTTIME,‘PRETRANSFERTIME‘:PRETRANSFERTIME,‘STARTTRANSFERTIME‘:STARTTRANSFERTIME,‘TOTALTIME‘:TOTALTIME,‘SPEEDDOWNLOAD‘:SPEEDDOWNLOAD})

3、出图的小代码:

var myChart = ec.init(document.getElementById(‘main‘)); 

                

                var option = {

                    tooltip: {

                        show: true

                    },

                    legend: {

                        data:[‘www.shikee.com‘]

                    },

                    xAxis : [

                        {

                            type : ‘category‘,

                            data : ["DNS解析时间","建立连接时间","重定向消耗时间","传输结束时间","传输结束时间"]

                        }

                    ],

                    yAxis : [

                        {

                            type : ‘value‘

                        }

                    ],

                    series : [

                        {

                            "name":"服务质量图",

                            "type":"bar",

                            "data":[{{NAMELOOKUPTIME}},{{CONNECTTIME}},{{PRETRANSFERTIME}},{{STARTTRANSFERTIME}},{{TOTALTIME}}]

                        }

                    ]

                };

4、出的效果图:

技术分享

今天的效果展示暂时就到这里了

本文出自 “小罗” 博客,请务必保留此出处http://xiaoluoge.blog.51cto.com/9141967/1617461

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。