C++ अनुप्रयोगों की निगरानी: उत्पादन के लिए मीट्रिक और अलर्ट

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

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

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

परिचय: स्थिरता के लिए C++ अनुप्रयोगों की निगरानी क्यों महत्वपूर्ण है?



आधुनिक C++ अनुप्रयोग उच्च-लोड वातावरण में काम करते हैं: गेम सर्वर, वित्तीय प्रणाली, IoT-उपकरण और एम्बेडेड समाधान। उचित निगरानी के बिना, पूरी तरह से लिखा गया कोड भी विनाशकारी परिणाम दे सकता है - मेमोरी लीक से लेकर रात 3 बजे सेवा के पूर्ण रूप से डाउन होने तक। इस लेख में, हम C++ अनुप्रयोगों की पूर्ण निगरानी सेट करने का तरीका समझेंगे: कौन से मीट्रिक एकत्र करें, लॉगिंग कैसे व्यवस्थित करें और अलर्ट कैसे सेट करें ताकि आप चैन की नींद सो सकें।



1. C++ अनुप्रयोगों के प्रमुख मीट्रिक



C++ अनुप्रयोगों की निगरानी सही मीट्रिक चुनने से शुरू होती है। आइए उन्हें तीन समूहों में विभाजित करें:



1.1. सिस्टम मीट्रिक (OS-level)

  • CPU Usage — प्रतिशत में प्रोसेसर लोड और user/kernel mode में समय।
  • Memory Usage — RSS (Resident Set Size), Virtual Memory, page faults की संख्या।
  • Disk I/O — डिस्क पर रीड/राइट ऑपरेशन (डेटाबेस के लिए विशेष रूप से महत्वपूर्ण)।
  • Network I/O — भेजे/प्राप्त बाइट्स की संख्या, त्रुटियों की संख्या।


1.2. एप्लिकेशन मीट्रिक (Application-level)

  • Request latency — अनुरोध प्रसंस्करण समय (p50, p95, p99)।
  • Throughput — प्रति सेकंड संसाधित अनुरोधों की संख्या।
  • Error rate — त्रुटियों का प्रतिशत (अपवाद, टाइमआउट)।
  • Connection pool — सक्रिय/प्रतीक्षा कनेक्शनों की संख्या।


1.3. C++ रनटाइम मीट्रिक

  • Memory allocation — new/delete कॉल की संख्या, हीप में आवंटन।
  • Thread count — सक्रिय थ्रेड्स की संख्या, डेडलॉक डिटेक्शन।
  • Object pool utilization — पूल में व्यस्त वस्तुओं का प्रतिशत।


C++ पर Prometheus-क्लाइंट के माध्यम से मीट्रिक निर्यात का उदाहरण:



#include <prometheus/exposer.h>#include <prometheus/registry.h>#include <prometheus/counter.h>#include <prometheus/gauge.h>

using namespace prometheus;

int main() { // मीट्रिक के लिए HTTP सर्वर बनाएं Exposer exposer{"0.0.0.0:8080"}; auto registry = std::make_shared<Registry>();

// अनुरोध काउंटर auto& request_counter = BuildCounter() .Name("http_requests_total") .Help("Total number of HTTP requests") .Register(*registry);

// वर्तमान थ्रेड संख्या के लिए Gauge auto& thread_gauge = BuildGauge() .Name("app_thread_count") .Help("Current number of active threads") .Register(*registry);

// मीट्रिक पंजीकृत करें exposer.RegisterCollectable(registry);

// एप्लिकेशन कार्य का अनुकरण while (true) { request_counter.Increment(); thread_gauge.Set(5.0); // उदाहरण मान std::this_thread::sleep_for(std::chrono::seconds(1)); }}


2. मीट्रिक संग्रह उपकरण: Prometheus और Grafana



C++ इकोसिस्टम में मीट्रिक संग्रह के लिए डी-फैक्टो मानक Prometheus है जो Grafana के साथ जोड़ा जाता है। Prometheus एक pull-सिस्टम है: आपका एप्लिकेशन HTTP पर मीट्रिक प्रदान करता है, और Prometheus उन्हें निर्धारित अंतराल पर स्वयं लेता है।



2.1. C++ में मीट्रिक निर्यात सेटअप

लोकप्रिय लाइब्रेरी:

  • prometheus-cpp (आधिकारिक C++ Prometheus क्लाइंट)।
  • opentelemetry-cpp — ट्रेसिंग और मीट्रिक के लिए (अधिक आधुनिक)।
  • NanoMsg + custom exporter — एम्बेडेड सिस्टम के लिए।


Prometheus-cpp के साथ एकीकरण का उदाहरण (पूरा कोड ऊपर)। चलाने के बाद एंडपॉइंट जांचें:



curl http://localhost:8080/metrics

# HELP http_requests_total Total number of HTTP requests# TYPE http_requests_total counterhttp_reques

ब्लॉग

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