TypeScript अनुप्रयोगों की निगरानी: त्रुटियों से लेकर प्रदर्शन तक
TypeScript अनुप्रयोगों की निगरानी अभ्यासों और उपकरणों का एक समूह है जो वास्तविक समय में सिस्टम की अवलोकनीयता (observability) सुनिश्चित करता है। सामान्य लॉगिंग के विपरीत, पेशेवर निगरानी में मीट्रिक संग्रह, अनुरोध ट्रेसिंग, त्रुटि एकत्रीकरण और स्वचालित सूचना शामिल है। TypeScript के लिए, जो सर्वर (Node.js) और ब्राउज़र दोनों पर चलता है, एक एकीकृत निगरानी प्रणाली होना महत्वपूर्ण है। इस लेख में, हम प्रमुख उपकरणों और उनके एकीकरण के उदाहरणों पर चर्चा करेंगे।
TypeScript अनुप्रयोगों की निगरानी क्यों करें?
TypeScript JavaScript में संकलित होता है, जो डिबगिंग पर विशेष प्रभाव डालता है। टाइप वाला स्रोत कोड डायनामिक JS में बदल जाता है, और टाइप त्रुटियाँ केवल रनटाइम पर ही प्रकट हो सकती हैं। निगरानी के बिना, आप जोखिम उठाते हैं:
- प्रोडक्शन में
TypeErrorयाReferenceErrorको अनदेखा करना - प्रदर्शन में गिरावट (धीमे अनुरोध, मेमोरी लीक) पर ध्यान न देना
- त्रुटि का संदर्भ खोना (स्टैक ट्रेस, उपयोगकर्ता डेटा, वातावरण)
निगरानी प्रणाली के मुख्य घटक
आधुनिक निगरानी स्टैक तीन स्तंभों पर आधारित है: लॉग (logs), मीट्रिक (metrics) और ट्रेस (traces)। TypeScript अनुप्रयोगों के लिए, हम विशिष्ट लाइब्रेरीज़ पर विचार करेंगे:
1. Sentry — त्रुटि ट्रैकिंग का राजा
Sentry त्रुटि और प्रदर्शन निगरानी के लिए एक SaaS प्लेटफ़ॉर्म है। TypeScript के लिए आधिकारिक पैकेज @sentry/node और @sentry/react उपलब्ध हैं। यह स्वचालित रूप से अपवादों को पकड़ता है, स्टैक ट्रेस और संदर्भ एकत्र करता है।
स्थापना:
npm install @sentry/node @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, // ट्रेस संग्रह आवृत्ति (0-1) profilesSampleRate: 1.0, // प्रदर्शन प्रोफाइलिंग});
// त्रुटि पर मैन्युअल कॉलapp.get('/api/users', async (req, res) => { try { const users = await getUsers(); res.json(users); } catch (error) { Sentry.captureException(error); res.status(500).send('Internal Server Error'); }});लाभ:
- त्रुटियों का रिलीज़ से स्वचालित संबंध
- TypeScript के लिए source maps का समर्थन
- प्रदर्शन: धीमे लेन-देन की निगरानी
2. OpenTelemetry — observability का मानक
OpenTelemetry (OTel) टेलीमेट्री संग्रह के लिए एक खुला मानक है। TypeScript के लिए पैकेज @opentelemetry/sdk-node का उपयोग किया जाता है। OTel ट्रेस और मीट्रिक एकत्र करने और फिर उन्हें किसी भी सिस्टम (Jaeger, Prometheus, Datadog) में भेजने की अनुमति देता है।
Express के साथ एकीकरण का उदाहरण:
import { NodeSDK } from '@opentelemetry/sdk-node';import { getNodeAutoInstrumentations } from '@opentelemetry/instrumentation-node';
const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()], // एक्सपोर्टर को OTLP या कंसोल पर कॉन्फ़िगर किया जा सकता है});
sdk.start();
// सभी Express लॉजिक स्वचालित रूप से ट्रेस हो जाती हैimport express from 'express';const app = express();app.get('/data', (req, res) => { res.json({ status: 'ok' });});OpenTelemetry स्वचालित रूप से लोकप्रिय लाइब्रेरीज़ को इंस्ट्रूमेंट करता है: Express, MongoDB, Redis, gRPC। यह सेवाओं के माध्यम से अनुरोध के पूर्ण पथ का चित्र प्रदान करता है।
3. Prometheus + Grafana — मीट्रिक और विज़ुअलाइज़ेशन
TypeScript में मीट्रिक (RPS, latency, त्रुटियाँ) संग्रह के लिए लाइब्रेरी का उपयोग किया जाता है