TypeScript 应用监控:指标与告警

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

监控 TypeScript 应用:指标与告警



在现代 Web 开发中,监控 TypeScript 应用不是奢侈品,而是必需品。没有它,您可能只有在用户反馈时才知道系统故障。在本文中,我们将探讨如何为 TypeScript 项目设置有效的监控,跟踪哪些指标,以及如何配置告警,以便在问题变得严重之前收到通知。



为什么监控 TypeScript 应用如此重要?



TypeScript 作为 JavaScript 的超集,常用于构建复杂的企业级系统和基于 Node.js 的服务器端解决方案。然而,JavaScript 在底层动态特性可能导致意外的运行时错误。监控可以:



  • 早期发现问题 — 在影响用户之前。
  • 分析性能 — 识别代码中的瓶颈。
  • 预测故障 — 基于指标趋势。
  • 提升代码质量 — 了解哪些模块是“问题最多”的。


TypeScript 应用的关键指标



要使监控有效,需要收集正确的指标。我们将它们分为三个主要组别。



1. 技术指标(RED 方法)



RED(Rate, Errors, Duration)方法非常适合微服务和 API:



  • Rate(请求频率) — 每秒请求数(RPS)。
  • Errors(错误) — 错误百分比(4xx, 5xx)。
  • Duration(响应时间) — 请求处理时间(p50, p95, p99)。


使用 prom-client 库收集指标的示例:



import client from 'prom-client';import express from 'express';

const app = express();

// 创建指标const httpRequestDuration = new client.Histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelNames: ['method', 'route', 'status_code'], buckets: [0.1, 0.5, 1, 2, 5]});

const httpRequestsTotal = new client.Counter({ name: 'http_requests_total', help: 'Total number of HTTP requests', labelNames: ['method', 'route', 'status_code']});

// 用于收集指标的中间件app.use((req, res, next) => { const end = httpRequestDuration.startTimer(); res.on('finish', () => { const labels = { method: req.method, route: req.path, status_code: res.statusCode }; httpRequestsTotal.inc(labels); end(labels); }); next();});

// Prometheus 端点app.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics());});

app.listen(3000, () => console.log('Server running on port 3000'));


2. 业务指标



这些指标反映业务健康状况:



  • 成功交易数量。
  • 平均购物车大小(针对电子商务)。
  • 数据库响应时间。
  • 活跃用户数量。


用于跟踪订单的自定义指标示例:



const ordersCreated = new client.Counter({  name: 'orders_created_total',  help: 'Total number of orders created',  labelNames: ['status']});

// 在代码中的某处export function createOrder(data: OrderData): Order { // 创建订单的逻辑 ordersCreated.inc({ status: 'success' }); return order;}


3. 基础设施指标



对于 Node.js/TypeScript 应用,以下指标至关重要:



  • 内存使用情况(heap, RSS)。
  • CPU 负载。
  • 打开的文件描述符数量。
  • 活跃连接数。
  • 垃圾回收(GC)。


收集内存指标的示例:





                
                

博客

书籍推荐