Nest.js应用稳定性保障:Terminus磁盘与内存监控教程
Nest.js应用稳定性保障:Terminus磁盘与内存监控教程
【免费下载链接】terminusTerminus module for Nest framework (node.js) :robot:项目地址: https://gitcode.com/gh_mirrors/terminus3/terminus
在构建生产级Nest.js应用时,保障应用的稳定性和可靠性至关重要。今天,我将为您介绍如何使用Terminus模块进行磁盘与内存监控,这是确保应用健康运行的关键技术。Terminus作为Nest.js生态系统的官方健康检查模块,提供了全面的监控解决方案,帮助开发者及时发现和预防系统资源问题。
🚀 为什么需要磁盘与内存监控?
在生产环境中,应用的稳定性直接关系到用户体验和业务连续性。磁盘空间不足或内存泄漏都可能导致应用崩溃,造成服务中断。Terminus的磁盘与内存监控功能能够:
- 实时监控系统资源使用情况
- 预警潜在的系统风险
- 提供标准化的健康检查接口
- 集成到Kubernetes等容器编排平台
📦 快速安装与配置
首先,通过npm或yarn安装Terminus模块:
npm install --save @nestjs/terminus或者使用yarn:
yarn add @nestjs/terminus🔧 磁盘监控配置指南
Terminus的磁盘监控功能基于lib/health-indicator/disk/disk.health.ts实现,提供了两种监控方式:
1. 按百分比监控磁盘使用率
import { Controller, Get } from '@nestjs/common'; import { HealthCheckService, DiskHealthIndicator, HealthCheck, } from '@nestjs/terminus'; @Controller('health') export class HealthController { constructor( private health: HealthCheckService, private disk: DiskHealthIndicator, ) {} @Get() @HealthCheck() check() { return this.health.check([ // 监控磁盘使用率不超过50% () => this.disk.checkStorage('disk_health', { thresholdPercent: 0.5, // 50%阈值 path: '/', // 监控根目录 }), ]); } }2. 按绝对大小监控磁盘使用量
() => this.disk.checkStorage('disk_health', { threshold: 250 * 1024 * 1024 * 1024, // 250GB阈值 path: '/', }),💾 内存监控配置指南
内存监控功能在lib/health-indicator/memory/memory.health.ts中实现,支持监控堆内存和RSS内存:
1. 堆内存监控
import { Controller, Get } from '@nestjs/common'; import { HealthCheck, HealthCheckService, MemoryHealthIndicator, } from '@nestjs/terminus'; @Controller('health') export class HealthController { constructor( private health: HealthCheckService, private memory: MemoryHealthIndicator, ) {} @Get() @HealthCheck() healthCheck() { return this.health.check([ // 监控堆内存使用不超过200MB async () => this.memory.checkHeap('memory_heap', 200 * 1024 * 1024), ]); } }2. RSS内存监控
async () => this.memory.checkRSS('memory_rss', 3000 * 1024 * 1024),🎯 实战配置示例
下面是一个完整的磁盘与内存监控配置示例:
// app.module.ts import { Module } from '@nestjs/common'; import { TerminusModule } from '@nestjs/terminus'; import { HealthController } from './health/health.controller'; @Module({ imports: [TerminusModule], controllers: [HealthController], }) export class AppModule {} // health.controller.ts import { Controller, Get } from '@nestjs/common'; import { HealthCheck, HealthCheckService, MemoryHealthIndicator, DiskHealthIndicator, } from '@nestjs/terminus'; @Controller('health') export class HealthController { constructor( private health: HealthCheckService, private memory: MemoryHealthIndicator, private disk: DiskHealthIndicator, ) {} @Get() @HealthCheck() check() { return this.health.check([ // 内存监控 async () => this.memory.checkHeap('memory_heap', 200 * 1024 * 1024), async () => this.memory.checkRSS('memory_rss', 3000 * 1024 * 1024), // 磁盘监控 () => this.disk.checkStorage('disk_health', { thresholdPercent: 0.7, // 使用率不超过70% path: '/', }), ]); } }📊 监控结果解析
配置完成后,访问http://localhost:3000/health将返回如下格式的健康状态:
{ "status": "ok", "info": { "memory_heap": { "status": "up" }, "memory_rss": { "status": "up" }, "disk_health": { "status": "up" } }, "details": { "memory_heap": { "status": "up" }, "memory_rss": { "status": "up" }, "disk_health": { "status": "up" } } }当资源使用超过阈值时,状态将变为"down",帮助您及时发现问题。
🔍 高级配置选项
自定义错误处理
Terminus提供了丰富的错误处理机制,您可以在lib/errors/messages.constant.ts中找到相关的错误消息常量:
import { STORAGE_EXCEEDED } from '@nestjs/terminus'; // 自定义错误处理逻辑 try { await this.disk.checkStorage('disk_health', options); } catch (error) { if (error.message.includes(STORAGE_EXCEEDED('disk storage'))) { // 磁盘空间不足的处理逻辑 console.error('磁盘空间不足,请及时清理!'); } }多路径监控
您可以监控多个磁盘路径:
return this.health.check([ () => this.disk.checkStorage('system_disk', { thresholdPercent: 0.8, path: '/', }), () => this.disk.checkStorage('data_disk', { thresholdPercent: 0.9, path: '/data', }), ]);🛠️ 最佳实践建议
- 合理设置阈值:根据实际业务需求设置合理的监控阈值
- 定期调整配置:随着业务增长,定期调整监控参数
- 集成告警系统:将Terminus监控结果集成到现有的告警系统中
- 测试监控功能:在开发环境充分测试监控功能
- 文档化配置:记录所有监控配置和阈值设置
📈 监控指标的意义
内存监控指标
- heapUsed:JavaScript堆内存使用量
- rss:进程常驻内存集大小
磁盘监控指标
- thresholdPercent:磁盘使用百分比阈值
- threshold:磁盘使用绝对大小阈值
🎉 总结
通过Terminus的磁盘与内存监控功能,您可以轻松构建健壮的Nest.js应用监控体系。这些监控功能不仅帮助您及时发现系统资源问题,还能为容器化部署提供标准化的健康检查接口。
记住,良好的监控是应用稳定性的基石。合理配置Terminus监控,让您的应用在生产环境中运行得更加稳定可靠!
🔗 相关资源
- 官方文档
- 内存监控示例代码
- 磁盘监控示例代码
- 健康检查模块源码
现在就开始使用Terminus为您的Nest.js应用添加专业的磁盘与内存监控吧!🚀
【免费下载链接】terminusTerminus module for Nest framework (node.js) :robot:项目地址: https://gitcode.com/gh_mirrors/terminus3/terminus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考