TypeScript अनुप्रयोगों की निगरानी: मेट्रिक्स और अलर्ट A से Z तक

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

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

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

परिचय: TypeScript-अनुप्रयोगों के लिए निगरानी क्यों महत्वपूर्ण है

\n

TypeScript स्केलेबल वेब एप्लिकेशन बनाने के लिए एक शक्तिशाली उपकरण है, लेकिन सबसे अच्छा कोड भी प्रोडक्शन में विफलताओं से सुरक्षित नहीं है। निगरानी प्रणाली के बिना, आप स्वचालित अलर्ट के बजाय उपयोगकर्ताओं से समस्याओं के बारे में जानने का जोखिम उठाते हैं। इस लेख में, हम निगरानी सेटअप के पूरे चक्र को कवर करेंगे: मेट्रिक्स संग्रह से लेकर सूचनाएं भेजने तक।

\n

हम observability के तीन प्रमुख स्तंभों पर चर्चा करेंगे: मेट्रिक्स (सिस्टम के संख्यात्मक संकेतक), लॉग (घटनाओं के विस्तृत रिकॉर्ड) और ट्रेसिंग (अनुरोधों को ट्रैक करना)। विशेष ध्यान लोकप्रिय टूल्स — Prometheus, Grafana और Sentry के साथ एकीकरण पर होगा।

\n\n

1. TypeScript-अनुप्रयोगों के लिए मुख्य मेट्रिक्स

\n

अलर्ट सेट करने से पहले, यह निर्धारित करना आवश्यक है कि आपके एप्लिकेशन के लिए कौन सी मेट्रिक्स महत्वपूर्ण हैं। हम उन्हें तीन समूहों में विभाजित करते हैं:

\n\n

1.1 व्यावसायिक मेट्रिक्स

\n

उपयोगकर्ता के दृष्टिकोण से एप्लिकेशन के स्वास्थ्य को दर्शाते हैं:

\n
    \n
  • प्रति सेकंड अनुरोधों की संख्या (RPS) — सर्वर पर लोड दिखाता है
  • \n
  • प्रतिक्रिया समय (latency) — p50, p95, p99 प्रतिशतक
  • \n
  • त्रुटियों की संख्या — 4xx और 5xx स्थितियाँ
  • \n
  • सक्रिय उपयोगकर्ता — सत्र, WebSocket कनेक्शन
  • \n
\n\n

1.2 तकनीकी मेट्रिक्स

\n

बुनियादी ढांचे की स्थिति दिखाते हैं:

\n
    \n
  • CPU और मेमोरी — प्रोसेसर लोड और मेमोरी लीक
  • \n
  • Event Loop Lag — Node.js इवेंट लूप में देरी
  • \n
  • Garbage Collection — कचरा संग्रह की आवृत्ति और अवधि
  • \n
  • HTTP कनेक्शन पूल — खुले कनेक्शनों की संख्या
  • \n
\n\n

1.3 उदाहरण: TypeScript में Prometheus के साथ मेट्रिक्स संग्रह

\n

Node.js के लिए prom-client लाइब्रेरी स्थापित करें:

\n
npm install prom-client @types/prom-client
\n\n

metrics.ts फ़ाइल बनाएं:

\n
import client from 'prom-client';\nimport express, { Request, Response } from 'express';\n\n// मेट्रिक्स रजिस्टर बनाएं\nconst register = new client.Registry();\nclient.collectDefaultMetrics({ register });\n\n// कस्टम मेट्रिक: HTTP अनुरोधों की संख्या\nconst httpRequestCounter = new client.Counter({\n  name: 'http_requests_total',\n  help: 'Total number of HTTP requests',\n  labelNames: ['method', 'route', 'status_code'],\n  registers: [register],\n});\n\n// प्रतिक्रिया समय हिस्टोग्राम\nconst httpRequestDuration = new client.Histogram({\n  name: 'http_request_duration_seconds',\n  help: 'Duration of HTTP requests in seconds',\n  labelNames: ['method', 'route', 'status_code'],\n  buckets: [0.1, 0.5, 1, 2, 5],\n  registers: [register],\n});\n\n// मेट्रिक्स संग्रह के लिए Middleware\nexport function metricsMiddleware(req: Request, res: Response, next: Function) {\n  const end = httpRequestDuration.startTimer();\n  res.on('finish', () => {\n    const labels = {\n      method: req.method,\n      route: req.route?.path || 'unknown',\n      status_code: res.statusCode.toString(),\n    };\n    httpRequestCounter.inc(labels);\n    end(labels);\n  });\n  next();\n}\n\n// Prometheus के लिए Endpoint\nexport function metricsEndpoint(req: Request, res: Response) {\n  res.set('Content-Type', register.contentType);\n  res.send(register.metrics());\n}
\n\n

2. अलर्ट सेटअप: सिद्धांत से व्यवहार तक

\n

अलर्ट स्मार्ट होने चाहिए — बहुत अधिक झूठे अलर्ट टीम को थका देते हैं। विसंगतियों के लिए "तीन सिग्मा" नियम और महत्वपूर्ण मेट्रिक्स के लिए सीमा मानों का उपयोग करें।

\n\n

2.1 Prometheus में अलर्ट नियम

\n

alerts.yml फ़ाइल बनाएं:

\n
groups:\n  - name: typescript-app\n    rules:\n      - alert: HighErrorRate\n        expr: |\n          rate(http_requests_total{status_code=~"5.."}[5m]) \n          / \n          rate(http_requests_total[5m]) > 0.05\n        for: 2m\n        labels:\n          severity: critical\n        annotations:\n                

ब्लॉग

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