PHP एप्लिकेशन मॉनिटरिंग: उन्नत मेट्रिक्स और अलर्ट्स

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

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

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

परिचय: बेसिक healthcheck से गहरी observability तक

\n

PHP एप्लिकेशन की बेसिक मॉनिटरिंग, जिसमें healthcheck (उपलब्धता जांच) और CPU लोड शामिल है, सबसे पहले सेट करने के लिए न्यूनतम आवश्यकता है। लेकिन हाई लोड और जटिल बिज़नेस लॉजिक वाले प्रोडक्शन सिस्टम के लिए यह पर्याप्त नहीं है। उन्नत मॉनिटरिंग फोकस को "जीवित/मृत" से हटाकर observability (अवलोकनीयता) पर ले जाती है और सवालों के जवाब देती है: "कन्वर्ज़न क्यों गिरा?", "कौन सा एंडपॉइंट धीमा हुआ?", "कितने यूज़र पेमेंट पूरा नहीं कर पाए?"।

\n

इस लेख में हम PHP एप्लिकेशन की उन्नत मॉनिटरिंग आर्किटेक्चर देखेंगे, कस्टम मेट्रिक्स (बिज़नेस मेट्रिक्स सहित) इकट्ठा करना सीखेंगे, एनोमली-आधारित अलर्ट्स सेट करेंगे और सब कुछ एक Grafana डैशबोर्ड में इंटीग्रेट करेंगे। सभी कोड उदाहरण PHP में लिखे गए हैं और तुरंत उपयोग के लिए तैयार हैं।

\n\n

1. मेट्रिक्स संग्रह की आर्किटेक्चर: Prometheus और कस्टम एक्सपोर्टर

\n

मेट्रिक्स संग्रह के लिए आधुनिक डी-फैक्टो मानक Prometheus है, जो pull मॉडल का उपयोग करता है। PHP एप्लिकेशन को सीधे /metrics पोर्ट पर मेट्रिक्स देने की आवश्यकता नहीं है। इसके बजाय हम कस्टम एक्सपोर्टर का उपयोग करते हैं - एक अलग स्क्रिप्ट जो एप्लिकेशन से (Redis, DB या फ़ाइल के माध्यम से) डेटा लेती है और Prometheus फॉर्मेट में रिस्पॉन्स बनाती है।

\n\n

1.1. PHP के लिए Prometheus क्लाइंट इंस्टॉल करना

\n

अनुशंसित लाइब्रेरी है promphp/prometheus_client_php। Composer के माध्यम से इंस्टॉल करें:

\n
composer require promphp/prometheus_client_php
\n\n

1.2. मेट्रिक्स एक्सपोर्टर का उदाहरण (metrics.php)

\n

एक स्क्रिप्ट बनाएं जो Prometheus फॉर्मेट में मेट्रिक्स लौटाती है। स्टोरेज के लिए Redis का उपयोग करें (प्रोडक्शन के लिए PERSISTENT फ्लैग)।

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Prometheus\\CollectorRegistry;\nuse Prometheus\\Storage\\Redis;\nuse Prometheus\\RenderTextFormat;\n\n// Redis से कनेक्ट करें\nRedis::setDefaultOptions(['host' => '127.0.0.1', 'port' => 6379]);\n$registry = new CollectorRegistry(new Redis());\n\n// रिस्पॉन्स टाइम के लिए हिस्टोग्राम रजिस्टर करें\n$histogram = $registry->getOrRegisterHistogram(\n    'app_http_request_duration_seconds',\n    'HTTP request duration in seconds',\n    ['method', 'endpoint', 'status']\n);\n\n// बिज़नेस मेट्रिक के लिए काउंटर रजिस्टर करें\n$counter = $registry->getOrRegisterCounter(\n    'app_orders_total',\n    'Total number of orders processed',\n    ['status'] // success, failed\n);\n\n// डेटा सिमुलेशन (असल में DB या लॉग से पढ़ें)\n$histogram->observe(0.12, ['GET', '/api/orders', '200']);\n$counter->incBy(1, ['success']);\n\n// मेट्रिक्स आउटपुट करें\n$renderer = new RenderTextFormat();\nheader('Content-Type: text/plain');\necho $renderer->render($registry->getMetricFamilySamples());\n
\n

फिर Nginx या Apache को कॉन्फ़िगर करें ताकि यह स्क्रिप्ट /metrics पथ पर उपलब्ध हो, और Prometheus में target जोड़ें।

\n\n

2. बिज़नेस मेट्रिक्स: वास्तव में महत्वपूर्ण चीज़ों की मॉनिटरिंग

\n

तकनीकी मेट्रिक्स (latency, error rate) आधार हैं, लेकिन बिज़नेस मेट्रिक्स उत्पाद के स्वास्थ्य की समझ देते हैं। ऐसी मेट्रिक्स के उदाहरण:

\n
    \n
  • प्रति मिनट सफल ऑर्डर की संख्या - गिरावट पेमेंट गेटवे में समस्या का संकेत देती है।
  • \n
  • कार्ट का औसत निष्पादन समय - बढ़ोतरी कोड में रिग्रेशन का संकेत हो सकती है।
  • \n
  • रजिस्ट्रेशन छोड़ने का प्रतिशत - अचानक बढ़ोतरी फॉर्म में खराबी का संकेत हो सकती है।
  • \n
\n\n

2.1. एप्लिकेशन कोड में बिज़नेस मेट्रिक्स का इंटीग्रेशन

\n

उसी prometheus_client_php का उपयोग करें, लेकिन कॉल को middleware या सर्विस लेयर में रैप करें। Laravel के लिए उदाहरण:

\n
<?php\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Prometheus\\CollectorRegistry;\n\nclass MetricsMiddleware\n{\n    protected $registry;\n\n    public function __construct(CollectorRegistry $registry)\n    {\n        $this->registry = $registry;\n    }\n\n    publi                

ब्लॉग

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