जावास्क्रिप्ट अनुप्रयोगों की निगरानी: मेट्रिक्स और अलर्ट A से Z तक
\n\nआधुनिक विकास की दुनिया में केवल काम करने वाला कोड लिखना पर्याप्त नहीं है। यह समझना महत्वपूर्ण है कि आपका एप्लिकेशन production-वातावरण में कैसा व्यवहार करता है। जावास्क्रिप्ट अनुप्रयोगों की निगरानी (विशेष रूप से Node.js पर) सिर्फ एक ट्रेंड नहीं, बल्कि एक आवश्यकता है। यह आपको बाधाओं की पहचान करने, विफलताओं को रोकने और सेवाओं की उच्च उपलब्धता सुनिश्चित करने में सक्षम बनाता है। इस लेख में, हम पूरे चक्र को कवर करेंगे: प्रमुख मेट्रिक्स के संग्रह से लेकर अलर्ट सेट करने तक, आधुनिक टूल स्टैक का उपयोग करते हुए।
\n\nNode.js निगरानी क्यों महत्वपूर्ण है?
\nNode.js एप्लिकेशन अक्सर एसिंक्रोनस मोड में काम करते हैं, प्रति सेकंड हजारों अनुरोधों को संसाधित करते हैं। निगरानी के बिना, आप जोखिम उठाते हैं:
\n- \n
- मेमोरी लीक (memory leak) को अनदेखा करना, जो सर्वर क्रैश का कारण बनेगा। \n
- प्रतिक्रिया समय (latency) में वृद्धि को नोटिस न करना, जो उपयोगकर्ता अनुभव को खराब करेगा।
- अनहैंडल त्रुटियों के कारण डेटा खोना।
निगरानी प्रणाली आपको visibility (अवलोकनीयता) प्रदान करती है और अनुमानों के बजाय डेटा के आधार पर निर्णय लेने में सक्षम बनाती है।
\n\nजावास्क्रिप्ट अनुप्रयोगों के लिए प्रमुख मेट्रिक्स
\nसभी मेट्रिक्स को तीन समूहों में विभाजित किया जा सकता है: इन्फ्रास्ट्रक्चर मेट्रिक्स, व्यावसायिक मेट्रिक्स और एप्लिकेशन मेट्रिक्स। आइए उन्हें विस्तार से देखें।
\n\n1. इन्फ्रास्ट्रक्चर मेट्रिक्स (USE-विधि)
\nये सर्वर स्वास्थ्य के बुनियादी संकेतक हैं: CPU, मेमोरी, डिस्क, नेटवर्क। Node.js के लिए, मेमोरी (heap, non-heap) और खुले फ़ाइल डिस्क्रिप्टर की संख्या विशेष रूप से महत्वपूर्ण है।
\n\n2. एप्लिकेशन मेट्रिक्स (RED-विधि)
\nRED विधि (Rate, Errors, Duration) माइक्रोसर्विसेज के लिए स्वर्ण मानक है:
\n- \n
- Rate (दर): प्रति सेकंड अनुरोधों की संख्या (RPS)। \n
- Errors (त्रुटियाँ): त्रुटि (4xx, 5xx) में समाप्त होने वाले अनुरोधों का प्रतिशत। \n
- Duration (अवधि): अनुरोध निष्पादन समय (p50, p95, p99 प्रतिशतक)। \n
3. व्यावसायिक मेट्रिक्स
\nआपके उत्पाद के लिए विशिष्ट: पंजीकृत उपयोगकर्ताओं की संख्या, पूर्ण किए गए ऑर्डर, सक्रिय सत्र आदि।
\n\nPrometheus और Node.js के साथ मेट्रिक्स संग्रह
\nPrometheus मेट्रिक्स संग्रह के लिए डी-फैक्टो मानक है। Node.js के लिए, हम prom-client लाइब्रेरी का उपयोग करते हैं। आइए सेटअप का एक उदाहरण देखें।
स्थापना और बुनियादी सेटअप
\nnpm install prom-client express\n\nचलिए /metrics एंडपॉइंट के साथ एक सर्वर बनाते हैं:
const express = require('express');\nconst client = require('prom-client');\n\nconst app = express();\nconst port = 3000;\n\n// मेट्रिक्स रजिस्टर बनाएं\nconst register = new client.Registry();\n\n// डिफ़ॉल्ट Node.js मेट्रिक्स जोड़ें\nclient.collectDefaultMetrics({ register });\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'],\n buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5]\n});\nregister.registerMetric(httpRequestDuration);\n\n// समय मापने के लिए Middleware\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: res.statusCode });\n });\n next();\n});\n\n// मेट्रिक्स के लिए एंडपॉइंट\napp.get('/metrics', async (req, res) => {\n res.set('Content-Type', register.contentType);\n res.end(await register.metrics());\n});\n\napp.get('/', (req, res) => {\n res.send('Hello, monitoring!');\n});\n\napp.listen(port, () => {\n console.log(`App listening at http://localhost:${port}`);\n});\n\nकस्टम काउंटर
\nचलिए एक त्रुटि काउंटर जोड़ते हैं:
\nconst errorCounter = new client.Counter({\n name: 'app_errors_total',