JavaScript एप्लिकेशन मॉनिटरिंग: एडवांस्ड मेट्रिक्स और अलर्ट्स

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

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

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

परिचय: Node.js के लिए एडवांस्ड मॉनिटरिंग क्यों ज़रूरी है

\n

आधुनिक वेब डेवलपमेंट में, मॉनिटरिंग सिर्फ एरर लॉग करने से कहीं आगे निकल गई है। माइक्रोसर्विसेज से लेकर हाई-लोड API तक, महत्वपूर्ण Node.js एप्लिकेशन के लिए प्रोएक्टिव मेट्रिक्स कलेक्शन, इंटेलिजेंट अलर्ट्स और डेटा विज़ुअलाइज़ेशन की आवश्यकता है। एडवांस्ड लेवल पर, हम सिर्फ "एप्लिकेशन चालू है" नहीं, बल्कि इसकी परफॉरमेंस, बाधाओं और विफलताओं की भविष्यवाणी की बात करते हैं।

\n

इस लेख में, हम JavaScript (Node.js) एप्लिकेशन के लिए एक पूर्ण मॉनिटरिंग सिस्टम बनाने पर चर्चा करेंगे: कस्टम मेट्रिक्स कलेक्शन से लेकर Prometheus और Grafana के माध्यम से अलर्ट सेटअप तक। आप सीखेंगे कि Node.js की अंतर्निहित क्षमताओं और आधुनिक लाइब्रेरीज़ का उपयोग करके सेवा की स्थिति को प्रोएक्टिव रूप से कैसे ट्रैक किया जाए।

\n\n

1. एडवांस्ड मेट्रिक्स कलेक्शन: Event Loop से कस्टम काउंटर तक

\n

बेसिक मेट्रिक सर्वर रिस्पॉन्स टाइम है। एडवांस्ड मेट्रिक Event Loop विलंब, सक्रिय डिस्क्रिप्टर की संख्या और गार्बेज कलेक्शन की आवृत्ति है। आइए देखें कि process और prom-client (Prometheus के लिए क्लाइंट) लाइब्रेरी का उपयोग करके यह डेटा कैसे एकत्र किया जाए।

\n\n

1.1. Event Loop और सिस्टम संसाधन मेट्रिक्स

\n

Node.js सिंगल-थ्रेडेड है, इसलिए Event Loop विलंब महत्वपूर्ण है। इसे process.hrtime() के माध्यम से मापें और हिस्टोग्राम के रूप में एक्सपोर्ट करें।

\n
const client = require('prom-client');\nconst eventLoopDelay = new client.Histogram({\n    name: 'nodejs_event_loop_delay_seconds',\n    help: 'Event Loop विलंब सेकंड में',\n    buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1]\n});\n\nfunction measureEventLoop() {\n    const start = process.hrtime.bigint();\n    setImmediate(() => {\n        const duration = Number(process.hrtime.bigint() - start) / 1e9;\n        eventLoopDelay.observe(duration);\n    });\n}\nsetInterval(measureEventLoop, 5000);
\n\n

1.2. बिज़नेस लॉजिक के लिए कस्टम मेट्रिक्स

\n

सिस्टम मेट्रिक्स के अलावा, बिज़नेस संकेतकों को ट्रैक करें: प्रोसेस किए गए ऑर्डर की संख्या, वैलिडेशन एरर, बाहरी अनुरोधों का निष्पादन समय।

\n
const orderCounter = new client.Counter({\n    name: 'app_orders_total',\n    help: 'प्रोसेस किए गए ऑर्डर की कुल संख्या',\n    labelNames: ['status'] // success, failed\n});\n\n// हैंडलर में उपयोग का उदाहरण\napp.post('/api/order', async (req, res) => {\n    try {\n        await processOrder(req.body);\n        orderCounter.inc({ status: 'success' });\n        res.send('OK');\n    } catch (err) {\n        orderCounter.inc({ status: 'failed' });\n        res.status(500).send('Error');\n    }\n});
\n\n

2. मेट्रिक्स एक्सपोर्ट और Prometheus के साथ इंटीग्रेशन

\n

Prometheus को मेट्रिक्स कलेक्ट करने के लिए, एक /metrics एंडपॉइंट बनाना होगा। prom-client के स्टैंडर्ड रजिस्टर का उपयोग करें।

\n\n

2.1. कलेक्शन के लिए एंडपॉइंट बनाना

\n
const express = require('express');\nconst app = express();\nconst client = require('prom-client');\n\n// Node.js के स्टैंडर्ड मेट्रिक्स कलेक्ट करें\nclient.collectDefaultMetrics({ timeout: 5000 });\n\napp.get('/metrics', async (req, res) => {\n    res.set('Content-Type', client.register.contentType);\n    res.end(await client.register.metrics());\n});\n\napp.listen(3000, () => console.log('मेट्रिक्स सर्वर :3000 पर'));
\n\n

2.2. Prometheus कॉन्फ़िगरेशन

\n

prometheus.yml फ़ाइल में अपने एप्लिकेशन के लिए टार्गेट जोड़ें:

\n
scrape_configs:\n  - job_name: 'nodejs-app'\n    static_configs:\n      - targets: ['localhost:3000']
\n

Prometheus को रीस्टार्ट करने के बाद, मेट्रिक्स डिफ़ॉल्ट रूप से हर 15 सेकंड में कलेक्ट होंगी।

\n\n

3. अलर्ट सेटअप: सरल थ्रेशोल्ड से एनोमली एनालिसिस तक

\n

अलर्ट मेट्रिक्स के सामान्य सीमा से बाहर जाने पर प्रतिक्रिया है। एडवांस्ड लेवल पर, हम जटिल शर्तों के लिए PromQL का उपयोग करते हैं और Alertmanager में नियम कॉन्फ़िगर करते हैं।

\n\n

3.1. बेसिक अलर्ट नियम

\n

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

ब्लॉग

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