TypeScript एप्लिकेशन की उन्नत निगरानी: मेट्रिक्स और अलर्ट

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript एप्लिकेशन की उन्नत निगरानी: मेट्रिक्स और अलर्ट

\n

आधुनिक डेवलपमेंट में, निगरानी केवल "सर्वर चालू है या नहीं" जांचने तक सीमित नहीं रह गई है। जटिल वितरित वातावरण में काम करने वाले TypeScript एप्लिकेशन के लिए एक उन्नत ऑब्जर्वेबिलिटी सिस्टम आवश्यक है। केवल एरर लॉग करना पर्याप्त नहीं है — आपको कस्टम परफॉरमेंस मेट्रिक्स इकट्ठा करने, बुद्धिमान अलर्ट सेट करने और पूर्वानुमानित विश्लेषण के लिए डैशबोर्ड बनाने की आवश्यकता है। इस लेख में, हम आधुनिक टूल्स और बेस्ट प्रैक्टिसेज का उपयोग करके TypeScript एप्लिकेशन की पेशेवर निगरानी को लागू करने का तरीका देखेंगे।

\n\n

1. कस्टम परफॉरमेंस मेट्रिक्स का संग्रह

\n

बुनियादी मेट्रिक्स (CPU, मेमोरी) अक्सर पूरी तस्वीर नहीं देते। TypeScript एप्लिकेशन के लिए बिज़नेस मेट्रिक्स और रनटाइम मेट्रिक्स महत्वपूर्ण हैं। आइए prom-client (Node.js के लिए Prometheus क्लाइंट) लाइब्रेरी का उपयोग करके कस्टम मेट्रिक्स संग्रह सेटअप करना देखें।

\n\n

कस्टम मेट्रिक्स के प्रकार

\n
    \n
  • Counter (काउंटर) — घटनाओं की गिनती के लिए (अनुरोध, त्रुटियाँ)।
  • \n
  • Gauge (गेज) — उन मानों के लिए जो बढ़ और घट सकते हैं (सक्रिय कनेक्शनों की संख्या)।
  • \n
  • Histogram (हिस्टोग्राम) — मानों के वितरण के लिए (प्रतिक्रिया समय)।
  • \n
  • Summary (सारांश) — निष्पादन समय के क्वांटाइल के लिए।
  • \n
\n\n

उदाहरण: TypeScript में कस्टम मेट्रिक्स रजिस्टर करना

\n
import client from 'prom-client';\nimport express, { Request, Response } from 'express';\n\n// मेट्रिक्स रजिस्टर बनाएं\nconst register = new client.Registry();\nclient.collectDefaultMetrics({ register });\n\n// कस्टम एरर काउंटर\nconst errorCounter = new client.Counter({\n  name: 'app_errors_total',\n  help: 'Total number of application errors',\n  labelNames: ['type', 'code'],\n  registers: [register],\n});\n\n// HTTP अनुरोध समय के लिए हिस्टोग्राम\nconst httpRequestDuration = new client.Histogram({\n  name: 'http_request_duration_seconds',\n  help: 'Duration of HTTP requests in seconds',\n  labelNames: ['method', 'route', 'status'],\n  buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5],\n  registers: [register],\n});\n\n// सक्रिय उपयोगकर्ताओं के लिए गेज\nconst activeUsers = new client.Gauge({\n  name: 'active_users_count',\n  help: 'Number of currently active users',\n  labelNames: ['user_type'],\n  registers: [register],\n});\n\nconst app = express();\n\n// अनुरोध समय मापने के लिए मिडलवेयर\napp.use((req: Request, res: Response, next) => {\n  const end = httpRequestDuration.startTimer();\n  res.on('finish', () => {\n    end({ method: req.method, route: req.path, status: res.statusCode });\n  });\n  next();\n});\n\n// मेट्रिक्स के लिए एंडपॉइंट\napp.get('/metrics', async (req: Request, res: Response) => {\n  res.set('Content-Type', register.contentType);\n  res.end(await register.metrics());\n});\n\n// एरर सिमुलेशन\napp.get('/error', (req: Request, res: Response) => {\n  errorCounter.inc({ type: 'validation', code: '400' });\n  res.status(400).send('Bad Request');\n});\n\napp.listen(3000, () => console.log('Server on port 3000'));
\n\n

2. Prometheus और Grafana के साथ एकीकरण

\n

एकत्रित मेट्रिक्स को निर्यात और विज़ुअलाइज़ करना आवश्यक है। Prometheus हमारे /metrics एंडपॉइंट को पोल करेगा, और Grafana डैशबोर्ड पर डेटा प्रदर्शित करेगा।

\n\n

TypeScript एप्लिकेशन के लिए Prometheus कॉन्फ़िगरेशन

\n
# prometheus.yml\nglobal:\n  scrape_interval: 15s\nscrape_configs:\n  - job_name: 'typescript-app'\n    static_configs:\n      - targets: ['localhost:3000']\n    metrics_path: '/metrics'\n    # एनवायरनमेंट लेबल जोड़ें\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: instance\n        regex: '([^:]+):.*'\n        replacement: '${1}'
\n\n

विश्लेषण के लिए उन्नत PromQL क्वेरी

\n
    \n
  • rate(app_errors_total[5m]) — पिछले 5 मिनट में त्रुटि दर।
  • \n
  • histogram_quantile(0.95, rate(http_request_durati

ब्लॉग

पुस्तक अनुशंसाएँ