TypeScript अनुप्रयोगों की निगरानी: निदान से observability तक
TypeScript पर विकास आज सर्वर-साइड (Node.js, Deno, Bun) और क्लाइंट-साइड (React, Angular, Vue) दोनों को कवर करता है। हालांकि, एप्लिकेशन जितना जटिल होगा, यह समझना उतना ही महत्वपूर्ण होगा कि production में क्या हो रहा है। TypeScript अनुप्रयोगों की निगरानी केवल लॉग एकत्र करना नहीं है, बल्कि एक पूर्ण observability प्रणाली है जिसमें मीट्रिक, ट्रेसिंग और अलर्ट शामिल हैं। इस लेख में, हम निगरानी सेट करने के लिए प्रमुख पुस्तकालयों और दृष्टिकोणों पर चर्चा करेंगे।
TypeScript को विशेष दृष्टिकोण की आवश्यकता क्यों है
TypeScript JavaScript में संकलित होता है, इसलिए JS के लिए मानक उपकरण TS के साथ भी काम करते हैं। हालांकि, कुछ बारीकियाँ हैं:
- एरर स्टैक संकलित कोड की ओर इशारा कर सकता है, मूल TS कोड की ओर नहीं।
- एरर ट्रेसिंग के सही होने के लिए Source maps अनिवार्य हैं।
- टाइपिंग मीट्रिक और स्पैन को अधिक सटीक रूप से एनोटेट करने की अनुमति देती है।
1. Sentry — फ्रंटएंड और बैकएंड के लिए एरर का राजा
Sentry एरर और प्रदर्शन को ट्रैक करने का सबसे लोकप्रिय प्लेटफॉर्म है। TypeScript के लिए आधिकारिक SDK उपलब्ध है।
स्थापना:
npm install @sentry/node @sentry/tracing# या React के लिए:npm install @sentry/react @sentry/tracingNode.js के लिए उदाहरण:
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("/api/data", async (req, res) => { try { const data = await fetchData(); res.json(data); } catch (err) { Sentry.captureException(err); res.status(500).send("Error"); }});TypeScript के लिए विशेषताएँ:
- Source maps के लिए समर्थन: इन्हें
sentry-cliया webpack प्लगइन के माध्यम से अपलोड करें। - टाइपिंग: SDK सभी विधियों के लिए प्रकार निर्यात करता है।
- प्रोफाइलिंग: देखें कि कौन से फंक्शन धीमे हैं।
2. OpenTelemetry — observability का सार्वभौमिक मानक
OpenTelemetry (OTel) ट्रेस, मीट्रिक और लॉग एकत्र करने के लिए API और SDK का एक सेट है। यह TypeScript पर माइक्रोसर्विसेज के लिए उपयुक्त है।
स्थापना:
npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/instrumentation-http @opentelemetry/instrumentation-expressट्रेसिंग सेटअप का उदाहरण:
import { NodeSDK } from "@opentelemetry/sdk-node";import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-node";import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
const sdk = new NodeSDK({ traceExporter: new ConsoleSpanExporter(), instrumentations: [getNodeAutoInstrumentations()],});
sdk.start();
// एप्लिकेशनimport express from "express";const app = express();app.get("/", (req, res) => { res.send("Hello OTel!");});app.listen(3000);लाभ:
- विक्रेता-तटस्थता: डेटा Jaeger, Zipkin, Datadog, Grafana में भेजा जा सकता है।
- लोकप्रिय पुस्तकालयों (Express, gRPC, MongoDB) का स्वचालित इंस्ट्रूमेंटेशन।
- TypeScript-first: सभी SDK पूर्ण टाइपिंग के साथ TS में लिखे गए हैं।
3. Prometheus + मीट्रिक के लिए क्लाइंट
मीट्रिक (RPS, latency, memory) एकत्र करने के लिए Prometheus का उपयोग prom-client क्लाइंट के साथ करें।
स्थापना:
npm install prom-clientExpress और TypeScript के साथ उदाहरण:
import ex