जावास्क्रिप्ट अनुप्रयोगों की निगरानी: उन्नत स्तर के मीट्रिक और अलर्ट

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

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

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

जावास्क्रिप्ट अनुप्रयोगों की निगरानी: मीट्रिक और अलर्ट (उन्नत स्तर)

\n\n

Node.js पर आधुनिक जावास्क्रिप्ट अनुप्रयोग लगातार जटिल होते जा रहे हैं: ये माइक्रोसर्विसेज, event-driven आर्किटेक्चर, real-time सिस्टम हैं। सरल "जीवित/मृत" निगरानी अब पूरी तस्वीर नहीं देती। स्थिरता और उच्च प्रदर्शन सुनिश्चित करने के लिए उन्नत दृष्टिकोण की आवश्यकता है: व्यावसायिक मीट्रिक का संग्रह, latency विश्लेषण, स्मार्ट अलर्ट का सेटअप और observability। इस लेख में, हम Node.js, Prometheus और Grafana का उपयोग करके उन्नत स्तर पर निगरानी प्रणाली बनाने का तरीका समझेंगे।

\n\n

1. Node.js अनुप्रयोगों के लिए प्रमुख मीट्रिक

\n\n

निगरानी सही मीट्रिक चुनने से शुरू होती है। production वातावरण के लिए तीन समूह महत्वपूर्ण हैं:

\n\n
    \n
  • RED-मीट्रिक (Rate, Errors, Duration) — अनुरोधों की आवृत्ति, त्रुटियों की संख्या, प्रतिक्रिया समय।
  • \n
  • USE-मीट्रिक (Utilization, Saturation, Errors) — CPU लोड, मेमोरी उपयोग, खुले फ़ाइल डिस्क्रिप्टर की संख्या।
  • \n
  • व्यावसायिक मीट्रिक — सक्रिय उपयोगकर्ताओं की संख्या, कार्य कतार का आकार, घटना प्रसंस्करण गति।
  • \n
\n\n

prom-client लाइब्रेरी का उपयोग करके मीट्रिक संग्रह का उदाहरण:

\n\n
const client = require('prom-client');\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.3, 0.5, 1, 3, 5]\n});\n\napp.use((req, res, next) => {\n    const end = httpRequestDuration.startTimer();\n    res.on('finish', () => {\n        end({ method: req.method, route: req.route?.path || 'unknown', status_code: res.statusCode });\n    });\n    next();\n});
\n\n

garbage collection (GC) और event loop lag की निगरानी करना भी अनिवार्य है — इससे प्रदर्शन समस्याओं को गंभीर होने से पहले पहचानने में मदद मिलेगी।

\n\n

2. अलर्ट सेटअप: सरल से स्मार्ट तक

\n\n

अलर्ट केवल सर्वर डाउन होने की सूचना नहीं हैं। उन्नत स्तर पर, अलर्ट होने चाहिए:

\n\n
    \n
  • प्रासंगिक — दिन का समय, सप्ताह का दिन, व्यावसायिक चक्रों को ध्यान में रखें।
  • \n
  • बहु-स्तरीय — Warning, Critical, Pager।
  • \n
  • पूर्वानुमानात्मक — रुझानों के आधार पर (उदाहरण: 15 मिनट में latency में 20% वृद्धि)।
  • \n
\n\n

पूर्वानुमान के साथ Prometheus Alertmanager के लिए नियम का उदाहरण:

\n\n
groups:\n  - name: nodejs_alerts\n    rules:\n      - alert: HighErrorRate\n        expr: rate(http_requests_errors_total[5m]) / rate(http_requests_total[5m]) > 0.05\n        for: 2m\n        labels:\n          severity: critical\n        annotations:\n          summary: "उच्च त्रुटि प्रतिशत ({{ $value | humanizePercentage }})"\n          description: "पिछले 2 मिनट में 5% से अधिक अनुरोध त्रुटियाँ लौटा रहे हैं।"\n\n      - alert: MemoryLeak\n        expr: predict_linear(nodejs_heap_bytes_used{space="total"}[30m], 3600) > 1e9\n        for: 5m\n        labels:\n          severity: warning\n        annotations:\n          summary: "अनुमानित मेमोरी लीक"\n          description: "एक घंटे में heap का उपयोग 1GB से अधिक हो सकता है।"
\n\n

डुप्लिकेशन और अलर्ट समूहीकरण सेट करना महत्वपूर्ण है, ताकि ड्यूटी इंजीनियर को सैकड़ों समान संदेशों से न भरा जाए। Alertmanager कॉन्फ़िगरेशन में group_wait और group_interval का उपयोग करें।

\n\n

3. उन्नत लॉगिंग: संरचित लॉग और ट्रेसिंग

\n\n

मानक console.log production के लिए उपयुक्त नहीं है। JSON प्रारूप में pino या winston लाइब्रेरी के साथ संरचित लॉगिंग का उपयोग करें। इससे लॉग को पार्स करना और उन्हें एग्रीगेशन सिस्टम (ELK, Loki) के साथ एकीकृत करना आसान हो जाता है।

\n\n

pino सेटअप का उदाहरण:

\n\n
const pino = require('pino');\nconst logger = pino({\n    level: process.env.LOG_LEVEL ||                

ब्लॉग

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