python应用性能监控工具简介

监控简介

监视工具捕获,分析和显示Web应用程序执行信息。每个应用程序在Web堆栈的所有层都可能出现问题。监控工具通过展示帮助开发人员和运营团队响应并修复问题。

捕获和分析有关生产环境的数据对于主动处理Web应用程序的稳定性,性能和错误至关重要。

监视和日志记录的目的非常相似,它们有助于诊断应用程序的问题并帮助调试。主要差异为日志基于事件触发,而监视是被动的背景数据集合。

例如发生错误时,通过异常处理程序中的代码显式记录该事件。同时,监视代理程序对代码进行检测,并且不仅收集有关已记录异常的数据,还收集有关函数和方法性能的数据。

操作系统和网络的监控关注: CPU、内存和磁盘利用率,网络带宽和延迟

应用程序级别监视包含几个方面。 基于应用程序是重读,重写还是受到快速波动的影响而有所不同。涉及应用程序警告和错误(500级HTTP错误)、应用代码性能、模板渲染时间、浏览器渲染应用程序的时间、数据库查询性能等。

开源监控项目

错误跟踪

最初只是一个Python监控项目,但现在可以用于任何编程语言。

图片.png

度量

是一个node.js网络守护程序,它监听指标并聚合它们以便转移到另一服务(如Graphite)。

存储时间序列数据,并通过Django Web应用程序在图形中显示它们。

图片.png

是一个用Ruby编写的开源监控框架,但适用于任何编程语言Web应用程序。

Vimeo的Graph Explorer是一个基于Graphite的仪表板,具有附加功能和平滑的设计。

基于客户端插件的监控系统,可以将监控流量发送到Munin节点,在那里可以分析和可视化数据。请注意,此项目是用Perl编写的,因此必须在收集数据的节点上安装Perl 5。

用户监控

测量来自最终用户浏览器的Web应用程序的性能,并将该数据发送回服务器以进行收集。

本文最新版本地址 https://china-testing.github.io/python_monitor.html

第三方监控服务

第三方监控软件没有部署和操作软件的负担。但是,托管监控成本不低,应用程序数据有危险,因此这些服务并不适合每个项目。

错误跟踪

用于服务器端和客户端,用于捕获和报告异常。 pyrollbar代码库为Python Web应用程序提供了快速集成。还有一些常见Web框架的具体说明,例如Django和Pyramid。

是开源工具的托管版本,用于货币化并支持二次开发。

应用程序性能监控(APM)

提供应用程序和数据库监控以及用于捕获和分析堆栈中其他devleoper工具(如Twilio)的数据的插件。

专为django而建。 Opbeat将性能指标,发布跟踪和错误记录结合到一个简单的服务中。

监控Django和Flask应用程序的性能,自动检测视图,SQL查询,模板等。

状态页面

Web应用程序的正常运行时间和响应指标可视化。

简单的设置状态页面,用于监控应用程序的运行时间。

事件管理

如果应用程序存在稳定性,性能或正常运行时间问题,PagerDuty会向指定人员或组发出警报。

监控资源

How to Add Hosted Monitoring to Flask Web Applications及[How to Monitor Bottle Web Applications] (https://www.fullstackpython.com/blog/monitor-python-web-applications.html)系列文章,介绍如何将托管监控添加到主要的Python Web框架应用程序。

The Virtues of Monitoring

Effortless Monitoring with collectd, Graphite, and Docker

Practical Guide to StatsD/Graphite Monitoring是一个详细的指南,其中包含用于监控基础架构的代码示例。

"10 Things They Forgot to Monitor 描述了超出磁盘和内存使用等标准。

四个Linux服务器监控工具 Four Linux server monitoring tools

如何设计有用的监控和图形可视化 How to design useful monitoring and graphing visualizations

5 years of metrics and monitoring 是一个很好的演示,突出了可视化。线图通常不是最佳解决方案,而且它们被过度使用。

Collector Highlight Series有一篇关于StatsD 的文章,解释了如何安装它以及它是如何工作的。

survey on monitoring tools有一些关于开发人员和运营人员在其环境中使用的数据和图表。

Ryan Frantz写了一篇关于Solving Monitoring 的好文章,其中新的定义是基于当今复杂系统的监控手段,以及该实践应如何发展。

监控学习清单

查看下面的软件即服务和开源监控工具。第三方服务往往更容易设置和托管数据。开源项目为您提供了更多控制权,但您需要为监控准备其他服务器。

我的建议是在试用期内安装New Relic的免费选项,以了解它如何与您的应用配合使用。它将使您对应用程序级监视工具的功能有所了解。

作为您的应用程序比例,请查看如何使用Graphite设置其中一个开源监视项目,例如StatsD。这两个项目的组合将为您提供对您正在收集和可视化的系统指标的细粒度控制。

python监控库参考:https://github.com/china-testing/python-api-tesing#%E7%9B%91%E6%8E%A7

参考资料

links