PHP में Prometheus मेट्रिक्स का एकीकरण: लाइब्रेरी और उदाहरण

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

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

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

PHP में Prometheus मेट्रिक्स: अनुप्रयोग प्रदर्शन की निगरानी



Prometheus एक शक्तिशाली ओपन-सोर्स मॉनिटरिंग और अलर्टिंग सिस्टम है, जो Cloud Native दुनिया में डी-फैक्टो मानक बन गया है। PHP अनुप्रयोगों के साथ Prometheus को एकीकृत करने के लिए कई परिपक्व लाइब्रेरी मौजूद हैं। इस लेख में, हम दो मुख्य लाइब्रेरी देखेंगे: promphp/prometheus_client_php और artisanphpex/prometheus, और दिखाएंगे कि अपने PHP प्रोजेक्ट में मेट्रिक्स कैसे जोड़ें।



PHP में मेट्रिक्स की आवश्यकता क्यों है?

PHP अनुप्रयोगों की निगरानी से निम्नलिखित को ट्रैक करने में मदद मिलती है:

  • अनुरोधों की संख्या और उनका निष्पादन समय
  • त्रुटियाँ और अपवाद
  • मेमोरी और CPU का उपयोग
  • कतारों और बाहरी सेवाओं की स्थिति
  • व्यावसायिक मेट्रिक्स (ऑर्डर की संख्या, पंजीकरण आदि)


इन आंकड़ों को एकत्र करने से समस्याओं की शीघ्र पहचान, स्केलिंग की योजना बनाने और उपयोगकर्ता अनुभव को बेहतर बनाने में मदद मिलती है।



लाइब्रेरी promphp/prometheus_client_php

यह सबसे लोकप्रिय और सक्रिय रूप से समर्थित लाइब्रेरी है। यह PHP के लिए आधिकारिक Prometheus क्लाइंट को लागू करती है और सभी प्रकार के मेट्रिक्स का समर्थन करती है:

  • Counter — एक काउंटर जो केवल बढ़ता है (जैसे, अनुरोधों की संख्या)
  • Gauge — एक मान जो बढ़ और घट सकता है (वर्तमान मेमोरी, सक्रिय उपयोगकर्ताओं की संख्या)
  • Histogram — मानों के वितरण को मापने के लिए हिस्टोग्राम (प्रतिक्रिया समय, अनुरोध का आकार)
  • Summary — क्वांटाइल वितरण (Histogram के समान, लेकिन क्लाइंट पक्ष पर क्वांटाइल की गणना के साथ)


स्थापना

composer require promphp/prometheus_client_php


उपयोग का उदाहरण

<?phprequire 'vendor/autoload.php';

use Prometheus\\CollectorRegistry;use Prometheus\\Storage\\InMemory;use Prometheus\\RenderTextFormat;

// स्टोरेज बनाएं (Redis, APC, InMemory हो सकता है)$adapter = new InMemory();$registry = new CollectorRegistry($adapter);

// काउंटर बनाएं$counter = $registry->registerCounter( 'app', 'requests_total', 'Total number of HTTP requests', ['method', 'endpoint']);

// प्रत्येक अनुरोध पर वृद्धि करें$counter->incBy(1, ['GET', '/api/users']);

// प्रतिक्रिया समय के लिए हिस्टोग्राम बनाएं$histogram = $registry->registerHistogram( 'app', 'response_time_seconds', 'Response time in seconds', ['method', 'endpoint'], [0.1, 0.5, 1, 2, 5] // buckets);

// अनुरोध निष्पादन समय का निरीक्षण करें$histogram->observe(0.234, ['GET', '/api/users']);

// Prometheus प्रारूप में मेट्रिक्स प्रस्तुत करें$renderer = new RenderTextFormat();$result = $renderer->render($registry->getMetricFamilySamples());

header('Content-Type: ' . RenderTextFormat::MIME_TYPE);echo $result;


लाइब्रेरी artisanphpex/prometheus

यह एक हल्का विकल्प है, जो उपयोग में आसानी पर केंद्रित है। यह Counter, Gauge, Histogram और Summary का भी समर्थन करता है।



स्थापना

composer require artisanphpex/prometheus


उपयोग का उदाहरण

<?phprequire 'vendor/autoload.php';

use ArtisanPhp\\Prometheus\\CollectorRegistry;use ArtisanPhp\\Prometheus\\Storage\\InMemory;use ArtisanPhp\\Prometheus\\RenderTextFormat;

$adapter = new InMemory();$registry = new CollectorRegistry($adapter);

// Gauge बनाएं$gauge = $registry->registerGauge( 'app', 'memory_usage_bytes', 'Current memory usage in bytes', ['process']);

$gauge->set(memory_get_usage(true), ['main']);

// Summary बनाएं$summary = $registry->registerSummary( 'app', 'request_duration_milliseconds', 'Request duration in ms', ['method'], 0.95, // quantile 0.01 // error);

$summary->observe(150, ['GET']);

// आउटपुट m

अनुशंसाएँ