Django应用程序性能的云监控

版权声明:此文章作者为肖鹏,如需转载请联系听云College团队成员阮小乙,邮箱:ruanqy#tingyun.com

近些年来,快速建站的需求越来越多。Django作为Python语言中最为流行的Web框架,受到越来越多的开发者欢迎。如何监控Django应用的性能,是很多开发者关心的问题。

Django作为Python语言中最为流行的Web框架,受到越来越多的开发者欢迎。互联网上基于Django的站点越来越多,像Disqus, Bitbucket如何去监控Django应用是目前大家普遍关心的一个问题,并且Django作为一个Web框架,经常会用到像Mongodb这样的NOSQL数据库来做后台存储,以及Memcached作缓存。作为一个完整的前后台应用,如何去 监控其整体性能,也是一个问题.

对于应用级别的监控,很多地方不同于传统的设备和网络监控,大家比较熟悉的协议就是SNMP,比较熟悉的工具比如ZABBIX。传统的这种监控架构, 安装配置和部署都都很复杂,但是绝大部分监控系统的架构原理大同小异,无非就是agent+server的模式.

在应用级别的监控中,对于Web性能的监控是很重要的一块内容,Google search web performance test会出来很多结果。

Django

介绍

Django(维基百科) Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。

学习

Django的入门非常简单,本质上来说,Django 只不过是用Python编写的一组类库。 用Django开发站点就是使用这些类库编写Python代码。 因此,学习Django的关键就是学习如何进行Python编程并理解Django类库的运作方式。

如果你有Python开发经验,在学习过程中应该不会有任何问题。按照Django官方提供的教程一步步来,很快就可以简单入门,并且开发简单的Django应用。

搭建Django应用

如何搭建一个简单的Django应用。

安装

任何时候安装Python类库,都推荐使用virtualenv。然后可以通过源码或者pip安装。

创建一个简单的项目

24.png

startproject 命令创建一个目录,包含4个文件:

24.1.png

如果你还没启动服务器的话,请切换到你的项目目录里 (cd mysite ),运行下面的命令:

24.2.png

这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问 http://127.0.0.1:8000/ 。 你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面。 它开始工作了。

MongoDB和Memcached

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

24.3.png

MongoDB有基于Python的API——Pymongo。Pymongo用于操作MongoDB非常简单。例如:

24.4.png

memcached是一种缓存技术,存储在内存中(高性能分布式内存缓存服务器)。目的:提速。(传统的都是把数据保存在关系型数据库管理系统即RDBMS,客户端请求时会从RDBMS中读取数据并在浏览器中显示,这样当访问量过大时或集中时,导致RSBMS负担过重,数据库响应恶化,浏览器中显示延迟等严重问题,使用memcached减少数据库查询和访问次数以提高访问速度,提高扩展性)

Python对于Memcached的操作也非常简单:

24.5.png

有了这些基本操作,就可以学习在Django应用中使用MongoDB和Memcached了。

使用听云Python探针监控Django APP

打开https://report.tingyun.com/overview/application 新建一个应用。

下载安装探针

24.6.png

24.7.png

启动探针

24.8.png

程序的配置文件在/tmp/tingyun.ini, 可以修改配置.

查看监控结果

探针会尝试与听云服务器建立连接,然后上传监控数据。

应用拓扑: 所谓应用拓扑借用了网络拓扑的概念,这里的节点就是应用,线就是应用之间的调用关系

24.9.png

在情报汇总页面里给出了一些基本监控数据的汇总显示,下面举例说明:

应用服务器响应时间画出了当前几个应用的响应时间。 

24.10.png

Apdex指标 什么是Apdex? Apdex是Application Performance Index的简称. 是一个由众多网络分析技术公司和测量工业组成的联盟组织联合起来开发的. Apdex用一句话来概括,就是用户对应用性能满意度的量化值。 它提供了一个统一的测量和报告用户体验的方法,第一次把最终用户的体验和应用性能联系在了一起。具体内容请参考维基百科.

如图所示, 1代表了所有用户都满意,因为所有的访问都是成功的, 容忍样本和失望样本都是0. 所以总的Apdex指数就是1.

24.11.png

24.12.png

响应时间和吞吐率. 坐标纵轴左边rpm代表吞吐量,右边代表响应时间. 

24.13.png

一些数据库的监控数据

最耗时的SQL操作. 

24.14.png

24.15.png

24.16.png

对于服务器资源的监控

听云也提供了对服务器CPU和内存等资源的监控, 这些是传统网络和设备监控的内容,

把它们放到应用监控里,对于我们了解应用对物理资源的占用情况提供了数据 支撑. 

24.17.png

对于服务器资源的监控

听云也提供了对服务器CPU和内存等资源的监控, 这些是传统网络和设备监控的内容,把它们放到应用监控里,对于我们了解应用对物理资源的占用情况提供了数据支撑. 

24.18.png

想阅读更多技术文章,请访问听云技术博客,访问听云官方网站感受更多应用性能优化魔力。

关于作者

许小午

不是一个没有故事的女同学

我要评论

评论请先登录,或注册