python+pycurl检查网站性能指标

对于一个网站运维人员来说,一个网站的性能好坏是大家非常关心的内容,我们知道衡量一个网站的好好多方面,但对运维人员来说站点的性能指标是我们比较关注的内容,从用户角度来说,最直观的感受就是用户户输入网址后站点内容打开速度的快慢,那从一个用户发起请求到服务器,然后服务器响应提供给数据给客户端,了解http协议的小伙伴应该知道,这中间要经过多个步骤才能实现,所以说一个站点如果出现访问速度上的问题,要从整条链路上去查原因而不能只看某一方面,访问示意图如下:

client-server-architecture

在这个访问过程中我们会关注以下几个指标:

  • DNS解析所消耗时间
  • 从建立连接到准备传输所消耗的时间
  • 从建立连接到传输开始消耗的时间
  • 传输结束所消耗的总时间
  • 平均下载速度
  • 返回的HTTP状态码

通过对以上几个指标的实时监测,当出现问题时就可以快速分析定位问题, 那如何获得这些数据呢,下面就要用到我们的pycurl了,Pycurl包是一个libcurl的Python接口,它是由C语言编写的,速度非常的快,下面看看我们的具体实现:

 

脚本里我只获取了一些比较核心的指标,当然pycurl功能不止这些,如果需要它还可以获取更细致的指标,例如:平均上传速度,HTTP头部大小等。有需要的小伙伴可以自己再研究下,脚本不做多解释了,关键行我加了注释, 最终获取的数据写入到了文本里,可以定时执行这个脚本来实时获取最新数据,这个脚本对要求不高的场景使用没啥问题,但对我们自动化运维来说只迈出了第一步而已,因为最好的方式是通过一个web页面去实时展示各个站点的情况,便于只观的观看,那要实现一个基本的站点,有几个问题我们需要我们思考去解决:

  1. 获取的数据要保存下来,就是有一个入库操作
  2. 随着站点的增加,后台运行,为效率考虑必须要用并发执行
  3. 前台方面:入库的数据要在前台展示,就需要用ajax
  4. 前台展示的页面要能主动自动刷新
  5. 前台入口需要提供一个用户添加url地址的表单
  6. 当然为好看,我们也要使用boostrap等类似的前端框架。

做完这些才算是基本完成我们最终的目标,在后续的文章里我们会逐一完成上面任务,喜欢的小伙伴还请转发,谢谢。