Node.js में Prometheus मेट्रिक्स: prom-client लाइब्रेरी
Prometheus एक शक्तिशाली ओपन-सोर्स मॉनिटरिंग और अलर्टिंग सिस्टम है जो आपके ऐप्लिकेशन और इंफ्रास्ट्रक्चर से मेट्रिक्स इकट्ठा करता है। Node.js ऐप्लिकेशन के साथ Prometheus को इंटीग्रेट करने के लिए सबसे लोकप्रिय और आधिकारिक लाइब्रेरी prom-client है। यह मेट्रिक्स बनाने, रजिस्टर करने और Prometheus-समझने योग्य फॉर्मेट में एक्सपोर्ट करने के लिए तैयार टूल्स प्रदान करती है।
इस आर्टिकल में हम विस्तार से जानेंगे कि prom-client को कैसे इंस्टॉल करें, कौन से मेट्रिक टाइप उपलब्ध हैं, और डेटा कलेक्ट करने के लिए एंडपॉइंट कैसे सेट करें।
prom-client इंस्टॉल करना
लाइब्रेरी को npm पैकेज मैनेजर से इंस्टॉल करें:
npm install prom-client
इंस्टॉल करने के बाद इसे अपने प्रोजेक्ट में इम्पोर्ट करें:
const client = require('prom-client');
Prometheus के मुख्य मेट्रिक प्रकार
Prometheus चार मुख्य मेट्रिक प्रकार सपोर्ट करता है, हर एक का अपना उपयोग है:
- Counter — एक काउंटर जो केवल बढ़ सकता है (जैसे, रिक्वेस्ट या एरर की संख्या)।
- Gauge — एक मान जो बढ़ और घट सकता है (जैसे, एक्टिव यूज़र्स या मेमोरी उपयोग)।
- Histogram — वैल्यू के डिस्ट्रीब्यूशन को मापने के लिए हिस्टोग्राम (जैसे, रिक्वेस्ट रिस्पॉन्स टाइम)।
- Summary — हिस्टोग्राम के समान, लेकिन ऐप्लिकेशन साइड पर क्वांटाइल कैलकुलेट करता है।
prom-client के उपयोग के उदाहरण
एक सरल Express ऐप्लिकेशन के साथ हर मेट्रिक प्रकार बनाने का तरीका देखें।
1. Counter (काउंटर)
काउंटर HTTP रिक्वेस्ट या एरर जैसी घटनाओं की गिनती के लिए सबसे उपयुक्त है।
const httpRequestsCounter = new client.Counter({
name: 'http_requests_total',
help: 'कुल HTTP रिक्वेस्ट की संख्या',
labelNames: ['method', 'status']
});
// उपयोग:
httpRequestsCounter.inc({ method: 'GET', status: 200 });
httpRequestsCounter.inc({ method: 'POST', status: 500 });
2. Gauge (गेज)
Gauge से आप वर्तमान मान ट्रैक कर सकते हैं जो दोनों दिशाओं में बदल सकता है।
const activeUsersGauge = new client.Gauge({
name: 'active_users',
help: 'एक्टिव यूज़र्स की संख्या'
});
// 1 बढ़ाएं:
activeUsersGauge.inc();
// 1 घटाएं:
activeUsersGauge.dec();
// विशिष्ट मान सेट करें:
activeUsersGauge.set(42);
3. Histogram (हिस्टोग्राम)
हिस्टोग्राम ऑपरेशन के समय के डिस्ट्रीब्यूशन का विश्लेषण करने में मदद करता है।
const requestDurationHistogram = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'HTTP रिक्वेस्ट की अवधि सेकंड में',
labelNames: ['method', 'route'],
buckets: [0.1, 0.5, 1, 2, 5] // बकेट की सीमाएं (सेकंड में)
});
// समय मापें:
const end = requestDurationHistogram.startTimer();
// ... रिक्वेस्ट प्रोसेस करें ...
end({ method: 'GET', route: '/api/users' });
4. Summary (समरी)
Summary हिस्टोग्राम जैसा है, लेकिन सटीक क्वांटाइल प्रदान करता है (जैसे, मीडियन, 95वां परसेंटाइल)।
const requestDurationSummary = new client.Summary({
name: 'http_request_duration_summary_seconds',
help: 'HTTP रिक्वेस्ट अवधि का समरी सेकंड में',
labelNames: ['method', 'route'],
percentiles: [0.5, 0.9, 0.99] // क्वांटाइल गणना के लिए
});
// हिस्टोग्राम जैसा उपयोग:
const endSummary = requestDurationSummary.startTimer();
// ... रिक्वेस्ट प्रोसेस करें ...
endSummary({ method: 'GET', route: '/api/data' });
Prometheus के लिए एंडपॉइंट सेट करना
Prometheus को मेट्रिक्स कलेक्ट करने के लिए, एक अलग HTTP एंडपॉइंट (आमतौर पर /metrics) बनाएं जो Prometheus-समझने योग्य फॉर्मेट में डेटा लौटाए।
const express = require('express');
const