C++ में Prometheus मेट्रिक्स: prometheus-cpp लाइब्रेरी
आधुनिक सॉफ्टवेयर विकास में, मॉनिटरिंग प्रोडक्शन-सिस्टम का एक अनिवार्य हिस्सा बन गया है। Prometheus मेट्रिक्स के संग्रह और विश्लेषण के लिए सबसे लोकप्रिय समाधानों में से एक है। यदि आप C++ में कोड लिखते हैं और अपने एप्लिकेशन में मॉनिटरिंग जोड़ना चाहते हैं, तो prometheus-cpp लाइब्रेरी वही है जिसकी आपको आवश्यकता है। यह Prometheus मेट्रिक प्रकारों के लिए पूर्ण समर्थन प्रदान करती है और उन्हें HTTP के माध्यम से आसानी से निर्यात करने की अनुमति देती है।
prometheus-cpp क्या है?
prometheus-cpp C++ के लिए एक क्लाइंट लाइब्रेरी है जो Prometheus मेट्रिक निर्यात प्रोटोकॉल को लागू करती है। यह सभी मुख्य मेट्रिक प्रकारों का समर्थन करती है: Counter, Gauge, Histogram और Summary। लाइब्रेरी आधुनिक C++ (C++11 और उससे ऊपर) में लिखी गई है, इसमें कोई बाहरी निर्भरता नहीं है (मानक लाइब्रेरी और HTTP सर्वर के लिए libcurl को छोड़कर), और समुदाय द्वारा सक्रिय रूप से समर्थित है।
स्थापना
स्थापना का सबसे आसान तरीका vcpkg या Conan के माध्यम से है। vcpkg के लिए, निष्पादित करें:
vcpkg install prometheus-cppयदि आप मैन्युअल रूप से बिल्ड करना पसंद करते हैं, तो रिपॉजिटरी को क्लोन करें और CMake का उपयोग करें:
git clone https://github.com/jupp0r/prometheus-cpp.gitcd prometheus-cppmkdir build && cd buildcmake ..make -j4sudo make installमुख्य अवधारणाएँ
लाइब्रेरी निम्नलिखित घटकों के आसपास बनाई गई है:
- Registry — एक रजिस्ट्री जो एप्लिकेशन के सभी मेट्रिक्स को संग्रहीत करती है।
- Counter — एक काउंटर जो केवल बढ़ता है (उदाहरण के लिए, अनुरोधों की संख्या)।
- Gauge — एक मान जो बढ़ और घट सकता है (उदाहरण के लिए, सक्रिय कनेक्शनों की संख्या)।
- Histogram — मानों के वितरण को मापने के लिए एक हिस्टोग्राम (उदाहरण के लिए, प्रतिक्रिया समय)।
- Summary — एक क्वांटाइल अनुमान (हिस्टोग्राम के समान, लेकिन सटीक प्रतिशतक की गणना करता है)।
उदाहरण: Counter और Gauge बनाना
एक सरल उदाहरण पर विचार करें — एक HTTP सर्वर जो अनुरोधों की संख्या गिनता है और सक्रिय कनेक्शनों की संख्या को ट्रैक करता है।
#include <prometheus/counter.h>#include <prometheus/gauge.h>#include <prometheus/registry.h>#include <prometheus/exposer.h>
int main() { // मेट्रिक रजिस्ट्री बनाएँ auto registry = std::make_shared<prometheus::Registry>();
// Counter परिवार बनाएँ auto& counter_family = prometheus::BuildCounter() .Name("http_requests_total") .Help("Total number of HTTP requests") .Register(*registry);
// "method" लेबल को "GET" मान के साथ जोड़ें auto& http_requests = counter_family.Add({{"method", "GET"}});
// Gauge परिवार बनाएँ auto& gauge_family = prometheus::BuildGauge() .Name("active_connections") .Help("Number of active connections") .Register(*registry);
auto& active_connections = gauge_family.Add({});
// पोर्ट 8080 पर मेट्रिक्स निर्यात करें prometheus::Exposer exposer("0.0.0.0:8080"); exposer.RegisterCollectable(registry);
// कार्य का अनुकरण while (true) { http_requests.Increment(); // काउंटर में +1 active_connections.Set(42); // मान 42 सेट करें std::this_thread::sleep_for(std::chrono::seconds(1)); }
return 0;}उदाहरण: प्रतिक्रिया समय के लिए Histogram
हिस्टोग्राम विलंबता मापने के लिए उपयोगी होते हैं। प्रतिक्रिया समय के लिए बकेट परिभाषित करें:
#include <prometheus/histogram.h>
// बकेट के साथ हिस्टोग्राम बनाएँ: 0.1, 0.5, 1.0, 2.5, 5.0 सेकंडauto& histogram_family = prometheus::BuildHistogram() .Name("http_request_duration_seconds") .Help("Request latency in seconds") .Register(*registry);
auto& request_duration = histogram_family.Add( पुस्तकालय में भी
Go में मशीन लर्निंग: Golang के लिए ML, न्यूरल नेटवर्क और NLP लाइब्रेरी
Java में JWT टोकन: JSON Web Tokens के साथ काम करने की पूरी गाइड
PHP पर ईमेल भेजना: PHPMailer, SwiftMailer और mail() — पूर्ण गाइड
Disruptor Java: पूर्ण गाइड उदाहरणों के साथ
TypeScript में इमेज प्रोसेसिंग: Sharp और Jimp से resize और crop