node中怎么使用Nest.js 實(shí)現(xiàn)請求監(jiān)控?下面本篇文章給大家介紹一下node 框架 Nest.js 實(shí)現(xiàn)簡易版請求監(jiān)控的方法,希望對大家有所幫助!
平時(shí)我們做業(yè)務(wù)處理時(shí),想看一個(gè)時(shí)間端的業(yè)務(wù)請求實(shí)況,看下某些接口 cpu
內(nèi)存
等 使用情況,做出針對性的接口優(yōu)化時(shí)要做一個(gè)監(jiān)控系統(tǒng)。但是如果是自己搞一個(gè)小項(xiàng)目沒有那么多資源應(yīng)該如何實(shí)現(xiàn)呢。這里我們采用 Nest
的一個(gè)第三方包 nest-status-monitor
來看一下。
貼出 node.js框架–Nest.js 中文文檔以方便大家進(jìn)一步學(xué)習(xí) Nest 中文文檔(https://docs.nestjs.cn/)
狀態(tài)監(jiān)控包文檔 nest-status-monitor:
https://www.npmjs.com/package/nest-status-monitor
安裝依賴
-
首先在我們的
Nest
項(xiàng)目中安裝一下需要的依賴 -
yarn add nest-status-monitor
狀態(tài)監(jiān)控包 -
yarn add @nestjs/platform-socket.io 6.10.14
需要用到的socket
包 ,這里因?yàn)闋顟B(tài)監(jiān)控包由于版本和最新的socket
包不兼容,故安裝老的版本
實(shí)現(xiàn)
-
狀態(tài)監(jiān)控配置
/* statusMonitor.ts */ export default { pageTitle: 'Nest.js Monitoring ', // 配置端口 port: 3000, // 這里記得加全局路由 '/api' path: '/status', ignoreStartsWith: '/health/alive', spans: [ { interval: 1, // Every second retention: 60, // Keep 60 datapoints in memory }, { interval: 5, // Every 5 seconds retention: 60, }, { interval: 15, // Every 15 seconds retention: 60, }, ], chartVisibility: { cpu: true, mem: true, load: true, responseTime: true, rps: true, statusCodes: true, }, healthChecks: [], };
-
mian.ts 文件中引用,并注冊
/* main.ts */ import { StatusMonitorModule } from 'nest-status-monitor'; import statusMonitorConfig from './config/statusMonitor'; async function bootstrap() { ... // 注冊狀態(tài)監(jiān)控 StatusMonitorModule.setUp(statusMonitorConfig), } bootstrap();
效果
-
啟動(dòng)項(xiàng)目
yarn run start:dev
-
在瀏覽器中輸入 http://localhost:3000/api/status 這個(gè)是設(shè)置的顯示地址。大家也可以根據(jù)自己需求環(huán)境去設(shè)置
-
如上圖所示,我剛才測試發(fā)了兩個(gè)
400
的請求 與一個(gè)200
的請求,清晰的展示在最下面。
總結(jié)
- 至此我們在開發(fā)成本不高的情況下已經(jīng)弄好了一個(gè)小工具,可實(shí)時(shí)監(jiān)控服務(wù)器情況。
- 大家知道那些支持 Nest 開源的小工具,可以在評論區(qū)進(jìn)行交流?;ハ鄬W(xué)習(xí)~( ̄▽ ̄)~*