TypeScript 应用监控:库、工具与配置

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

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

开始课程

TypeScript 应用监控:工具与库完全指南



监控是现代 TypeScript Web 应用开发中不可或缺的一部分。没有监控,您将盲目工作:错误未被发现,性能下降,用户流失。在本文中,我们将介绍用于监控 TypeScript 应用的关键库和工具,包括 Sentry、OpenTelemetry、Prometheus 以及内置日志记录。您将了解如何实时配置错误收集、指标和追踪。



1. Sentry:实时错误跟踪



Sentry 是最流行的错误监控平台。它开箱即用地支持 TypeScript,允许捕获异常、记录执行上下文并接收崩溃通知。



安装与基本配置



npm install @sentry/node @sentry/tracing


在 Node.js 上的 TypeScript 应用中初始化 Sentry 的示例:



import * as Sentry from "@sentry/node";import { ProfilingIntegration } from "@sentry/profiling-node";

Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0", integrations: [ new ProfilingIntegration(), ], tracesSampleRate: 1.0, profilesSampleRate: 1.0,});

// 强制发送错误app.get("/debug-sentry", function mainHandler(req, res) { throw new Error("Sentry 测试错误!");});


上下文日志记录



Sentry 允许添加自定义标签和上下文:



Sentry.setUser({ email: "user@example.com" });Sentry.setTag("environment", "production");Sentry.captureException(new Error("处理订单时出错"));


2. OpenTelemetry:追踪和指标的标准



OpenTelemetry 是用于收集遥测数据(追踪、指标和日志)的开放标准。它支持 TypeScript,并易于与任何后端(Jaeger、Zipkin、Prometheus)集成。



安装包



npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/instrumentation-http @opentelemetry/instrumentation-express


追踪配置示例



import { NodeSDK } from "@opentelemetry/sdk-node";import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-node";

const sdk = new NodeSDK({ traceExporter: new ConsoleSpanExporter(), instrumentations: [getNodeAutoInstrumentations()],});

sdk.start();


现在,每个 HTTP 请求将自动包装在带有元数据的跨度(span)中。您可以添加自定义跨度:



import { trace } from "@opentelemetry/api";

const tracer = trace.getTracer("my-service");

app.get("/api/data", async (req, res) => { const span = tracer.startSpan("processData"); try { const data = await fetchData(); span.setAttribute("data.size", data.length); res.json(data); } finally { span.end(); }});


3. Prometheus + express-prom-bundle:Node.js 指标



要收集性能指标(RPS、响应时间、错误数量),请使用 Prometheus 结合 express-prom-bundle 库。它会自动从 Express 应用收集指标。



安装



npm install prom-client express-prom-bundle


配置示例



import express from "express";import promBundle from "express-prom-bundle";

const app = express();

const metricsMiddleware = promBundle({ includeMethod: true, includePath: true, includeStatusCode: true, customLabels: { project: "my-app" }, metricsPath: "/metrics",});

app.use(metricsMi

推荐