什么是npm
npm是Node.js的包管理器,也是世界上最大的软件注册表之一。它包括了各种类型的软件包,例如:命令行工具、AngularJS组件、React Native组件、Grunt插件等等。npm是JS开发者非常重要的工具之一。它提供了比如安装、共享、分发代码的渠道等非常方便的功能。
什么是buho应用程序性能监控
buho是一个面向Node.js后端应用的性能监控工具,支持对CPU、内存、吞吐量、延迟等指标的监控。同时,buho自带web UI,可直观地展示监控统计数据,便于开发者进行问题追踪与性能优化。
如何使用buho
安装buho
在npm上安装buho:
$ npm install buho
使用buho
基本使用
在你的Node.js程序中,引入并初始化buho:
const Buho = require("buho"); buhoInstance = new Buho();
这里的buhoInstance
就是buho的监控实例。buho Monitor将自动监控程序运行时的CPU和内存指标。
执行完上面的代码后,在可以在启动你的应用程序前,使用一下命令,开启buho web UI:
$ buho start
buho web UI将在http://localhost:8000/中开启,可以在这里实时监控应用程序的运行情况。
控制buho的监控对象和周期
buho默认监控代理程序的CPU和内存指标,同时,buho默认在后台每5秒采集一次数据,这些参数均可以用户配置。
要修改默认配置,直接通过buho.init({options})
进行设置即可,例如:
-- -------------------- ---- ------- ----- ---- - ---------------- ------------ - --- ------- ------------------- ---------------- -- ------- --------------- -- ------ -------------- -- ---- -------------- - -- --------- ------------- -- -- ------- --- ---------------- -- -- ------- --------------- -- --
自定义监控指标
如果默认指标不能满足开发者的需求,可自定义监控指标。首先,还是在初始化buho监控实例时,通过参数customMetrics
指定自定义指标即可:
const Buho = require("buho"); buhoInstance = new Buho(); buhoInstance.init({ customMetrics: { requestCount: () => {return 1}, requestDuration: () => {return Math.random()}, }, },
使用Promise/Callbacks来更新自定义指标:
buhoInstance.setMetric('userRating', async () => { return await someDatabaseQuery(); });
定期轮询数据库的自定义例子:
setInterval(() => { someDatabaseQuery().then(data => { var count = data.reduce((a, row) => row.points + a, 0); buhoInstance.setMetric('userRatingCount', () => count); }); }, 60000);
buho在Express中的使用
buho可以在Express.js中轻松地使用,首先引入bw-monitor-express
包:
const MonitorExpress = require("buho/src/monitor/express"); const mon = MonitorExpress([{ path: "/buho/metrics" }]); app.use(mon);
现在,只需在express的路由中添加buho指标即可:
app.get("/example", function(req, res) { req.buho.increment("requests_handled"); res.json({ message: "hello" }); });
在以上的代码中,requests-handled
被作为自定义指标,并使用req.buho.increment()
递增其值。
buho的指标分类
指标名称 | 说明 |
---|---|
Process delay | 以毫秒为时间单位, 每秒钟Buho Monitor测量的您的应用程序的处理时间 |
Process CPU % | 对于每个完整的采样时间范围,Buho Monitor通过使用Linux prc文件系统来测量您的应用程序的处理时间 |
Memory usage | 您的应用程序在内存中使用的字节数 |
Memory RSS usage | 这是已在RAM中分配的字节数,也是为您的应用程序函数所用的工作内存数 |
Memory heap usage | 堆占用的字节数 |
Memory heap limit | 堆的最大容量 |
Memory used heap | 这是堆被使用的字节数 |
Memory total heap | 应用程序内可用的堆的最大字节数 |
Uptime | 应用程序的运行时间 |
buho的web UI
buho自带web UI,因为它基于Express.js构建。buho的web UI默认部署在您的应用程序的8000端口上。 您可以通过http://localhost:8000访问buho的web UI,同样也可以使用Chrome的开发者工具查看网络请求的细节(如下图所示):
我们可以看到发起了一个可以查看监控数据点的XHR。在XHR中,姑且把该数据点称为直线Y,而该数据点有效的时间段(即该数据点是有效的起始时间和结束时间)为横坐标X范围。简单来说,导图中的XHR代表了请求的一次数据点,可以获取到该数据点的坐标以及监控项的名称等信息。
buho的进一步优化
buho对于基于Node.js的应用的性能监控非常友好,它为开发者打造了一个全面的,易于扩展的监测平台,可用于实时监控应用程序的压力测试和性能问题,而且界面流畅易用,使用起来非常方便。当然,为了更好的性能体验,还有一些优化方案可以使用,如websocket传输、elasticsearch后端存储、定时数据缓存刷新等等,这些都是开发人员可以进行改进的地方。更多的细节实现可以在buho官方文档中获取。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c8cccdc64669dde545a