npm包buho使用教程

阅读时长 6 分钟读完

什么是npm

npm是Node.js的包管理器,也是世界上最大的软件注册表之一。它包括了各种类型的软件包,例如:命令行工具、AngularJS组件、React Native组件、Grunt插件等等。npm是JS开发者非常重要的工具之一。它提供了比如安装、共享、分发代码的渠道等非常方便的功能。

什么是buho应用程序性能监控

buho是一个面向Node.js后端应用的性能监控工具,支持对CPU、内存、吞吐量、延迟等指标的监控。同时,buho自带web UI,可直观地展示监控统计数据,便于开发者进行问题追踪与性能优化。

如何使用buho

安装buho

在npm上安装buho:

使用buho

基本使用

在你的Node.js程序中,引入并初始化buho:

这里的buhoInstance就是buho的监控实例。buho Monitor将自动监控程序运行时的CPU和内存指标。

执行完上面的代码后,在可以在启动你的应用程序前,使用一下命令,开启buho web UI:

buho web UI将在http://localhost:8000/中开启,可以在这里实时监控应用程序的运行情况。

控制buho的监控对象和周期

buho默认监控代理程序的CPU和内存指标,同时,buho默认在后台每5秒采集一次数据,这些参数均可以用户配置。

要修改默认配置,直接通过buho.init({options})进行设置即可,例如:

-- -------------------- ---- -------
----- ---- - ----------------
------------ - --- -------
-------------------
  ----------------  -- -------
  ---------------  -- ------
  --------------  -- ----
  -------------- - -- ---------
    ------------- -- -- ------- ---
    ---------------- -- -- ------- ---------------
  --
--

自定义监控指标

如果默认指标不能满足开发者的需求,可自定义监控指标。首先,还是在初始化buho监控实例时,通过参数customMetrics指定自定义指标即可:

使用Promise/Callbacks来更新自定义指标:

定期轮询数据库的自定义例子:

buho在Express中的使用

buho可以在Express.js中轻松地使用,首先引入bw-monitor-express包:

现在,只需在express的路由中添加buho指标即可:

在以上的代码中,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

纠错
反馈