APM:云引擎性能统计工具

姓名:马行健

学号:16020199036

转载自:https://zhuanlan.zhihu.com/p/26612510

LeanCloud 的云引擎提供了一种支持多种语言的容器服务,由开发者编写后端代码来实现更复杂的后端业务逻辑,作为云存储的补充。但对于云引擎来说,开发者编写的后端代码是一个「黑盒」,在出现错误时,开发者需要自行通过日志中查找出现问题的接口;而如果出现性能问题也只能依靠扩容来缓解,事后开发者还需要自行查找性能瓶颈,LeanCloud 实在帮不上什么忙。

查找性能瓶颈是解决性能问题的最重要一环。现在市面上类似 newrelic 的产品有很多,但往往价格不菲,因此我们开发了一个名为 LeanEngine APM(LeanEngine APM (Beta))的实验性项目,来帮助云引擎用户更有针对性地观测性能数据、定位性能瓶颈。目前 APM 支持 Node.js、Python 和 Java 三种语言。当用户在代码中接入对应的采集器后,自定义路由的统计数据便会自动上报至 APM。

APM 报表页面可以显示出调用量、耗时和成功率,并且支持按照多种维度进行分组和筛选展现,下面是部分报表的截图。


图片发自App

各响应代码的请求量随时间变化图


图片发自App

可以选择时间粒度和范围,可以根据路由、实例和响应代码进行筛选


图片发自App


路由汇总统计,可以按照次数、错误率和平均响应排序

如果开发者希望统计某一个函数的执行情况,特别是调用外部服务和进行后台操作,也可以使用 APM 的「函数追踪」功能(具体使用方法见特定语言的采集器文档)。以 Node.js 为例,我们用 wrapTask 将已有的函数包裹起来,这样 APM 便可以统计到调用次数和耗时等信息:

var apm = require('leanengine-apm');

var sendMail = apm.wrapTask('sendMail', function(template, address) {

  // ...

});

各语言的采集器都是开源的(Node.js 采集器、Python 采集器、Java 采集器),今后我们还会在 APM 添加更多的工具和功能,帮助开发者解决云引擎中的性能问题,也欢迎大家将需求提交到 Github Issue 中帮助我们来完善这一产品。

你可能感兴趣的:(APM:云引擎性能统计工具)