Full Stack Python logo Full Stack Python

全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码

监控

监控工具用于收集、分析并展现来自 web 应用执行时的信息。每个应用程序在所有等级的 web 堆栈都会发生问题。 监控工具为开发者和运维团队提供了透明度,使他们能(及时)响应并修复问题。

监控为何是必要的?

收集并分析你的生产环境数据是非常重要的,它能帮助积极地解决 web 应用的稳定性、性能和错误等问题。

监控与日志的区别

监控和日志的目的是非常类似的,它们能够帮助诊断应用程序的问题并为调试过程提供帮助。 关于它们的区别的一种看法是,日志是在特定的事件发生时产生,而监控则在后台被动地收集数据。

例如,当一个错误发生时,代码中的异常处理函数会将特定的事件通过日志输出。与此同时,监控代理会测量代码并收集数据,这些数据不仅含有异常日志,而且还有函数的运行性能。

日志和监控的这点区别是模糊的,这也并不是区分它们的唯一一种方式。事实上,它们对于维护一个生产环境的 web 应用都是非常有帮助的。

监控层

操作系统和 web 堆栈网络级中有好几种重要的资源需要监控。

  • CPU 利用率
  • Memory 利用率
  • 永久性存储器使用占比
  • 网络带宽和延迟

应用级的监控包含多个方面。每个方面对应的时间量和资源量都是不同的,这些取决于应用程序是否有大量的读操作、大量的写操作或者是流量快速波动等特性。

  • 应用程序警告和错误(HTTP 500 错误)
  • 应用程序代码性能
  • 模板渲染时间
  • 应用程序的浏览器渲染时间
  • 数据库查询性能

开源监控项目

  • statsd 是一个 node.js 的网络后台服务,它能够监听测量数据并收集它们,用于传送到其它服务中,如 Graphite。

  • Graphite 存储基于时间序列的数据并将它们在一个 Django web 应用的图表中显示出来。

  • Bucky 测量 web 应用在终端用户浏览器中的运行性能,并把测量数据发送回服务器收集起来。

  • Sensu 是一款使用 Ruby 编写的开源监控框架,但它兼容其它任何语言编写的 web 应用。

  • Graph Explorer ,由 Vimeo 编写,它是基于 Graphite 的操作面板,含有一些新增的特性并且设计巧妙。

  • PacketBeat 用于嗅探协议包。后来 Elasticsearch 允许开发者们使用 Kibana 用户界面搜索收集的数据并呈现出 web 应用内部正在发生什么。

  • Munin 是一个基于插件的监控系统客户端,它用于将监控数据发送到用于分析并可视化的 Munin 节点。注意这个项目是用 Perl 完成的,所以收集数据的节点上必须要安装 Perl 5。

托管的监控服务

  • New Relic,用于监控应用程序和数据库,同时它含有用于收集并分析你的堆栈工具的其它数据的插件。

  • CopperEgg 是运行在服务器和基础设施上的更低层的监控服务。它在 DevOps 商店非常流行,他们正在改变生产环境并且希望能够立即获得这些修改的反馈信息。

  • Status.io 专注于 web 应用的启动时间和响应指标透明度。

  • StatusPage.io (没错,Status 和 StatusPage.io 都有)提供了简单设置状态页以监控程序启动时间的功能。

  • PagerDuty 在应用程序出现稳定性、性能或启动时间等问题发生时会给特定的人员或小组发出警告。

  • App Enlight 提供了性能、异常和错误监控功能,并且目前是专门针对 Python web 应用的。

  • Opbeat 为 Django 构建的。Opbeat 把性能指标、版本跟踪和错误日志集成到单个简易的服务中了。

监控相关资源

监控学习清单

  • 回顾“软件即服务”和以上列出的开源监控工具。第三方服务为你提供了更加简易的设置过程以及数据托管服务。开源项目则会给你更多的控制权,但是你需要拥有用于监控的额外就绪的服务器。

  • 我推荐的方案是安装试用版 New Relic 来学习它是如何与你的应用一同工作的。它能让你领略到应用程序级别的监控工具的能力。

  • 当你的应用扩展时,就去看看如何设置一款开源监控项目,例如带有 Graphite 的 StatsD。集成这两个项目将能为你收集和用于可视化的系统测量数据提供更细粒度的控制。

下一个你想学习的话题是什么?

我想学习如何通过 Web 分析来了解用户的更多知识。

如何自动化服务器配置和部署?

什么是 Web 应用编程接口(APIs)?

#### 在这里注册以便每月能收到一份邮件资料,内容包含本站的主要更新、教程和 Python 书籍的打折码等。

The Full Stack Python Guide to Deployments 想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.

邮件获取更新

##### 注册以便每月能收到一份邮件资料,内容包含本站的主要更新和 Python 教程。

目录

1. 简介学习编程为什么用 Python?Python 2 还是 3?企业 PythonPython CommunityBest Python Podcasts最佳 Python 资源最佳 Python 视频2. 开发环境VimEmacs3. 核心语言生成器推导式4. Web 开发Web 框架DjangoFlaskBottlePyramidMorepath其它 Web 框架Web 设计级联样式表 (CSS)JavaScriptWebSockets模板引擎Web 应用安全静态网站生成器Jinja25. 数据关系型数据库NoSQL 数据存储对象关系映射器PostgreSQLMySQLSQLite6. Web APIsAPI 集成API 的创建Twilio7. 部署服务器平台即服务(PaaS)操作系统Web 服务器WSGI 服务器源码控制应用程序依赖静态内容任务队列配置管理持续集成日志监控Web 分析Docker缓存微服务DevOpsNginxApache HTTP 服务器CaddyGreen Unicorn (Gunicorn)UbuntuPelicanLektorMkDocs8. 测试单元测试集成测试代码度量调试9. MetaBotsChange LogFuture DirectionsAbout the AuthorSQLAlchemyPeewee …或者显示全部目录内容.

监控

重要的更新内容会通过 Twitter 账号@fullstackpython发布。


需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。

Chapters

1. 简介2. 开发环境3. 核心语言4. Web 开发5. 数据6. Web APIs7. 部署 » 监控 8. 测试9. Meta …or view the full table of contents.


This site is based on Matt Makai's project Full Stack Python, thanks for his excellent work!

此网站由 @haiiiiiyun开源爱好者们 共同维护。 若发现错误或想贡献,请访问: Github fullstackpython.cn 项目