PHP अनुप्रयोगों की निगरानी: उन्नत मीट्रिक और अलर्ट

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

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

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

परिचय: बुनियादी निगरानी पर्याप्त क्यों नहीं है?

\n

PHP अनुप्रयोगों की बुनियादी निगरानी ("जीवित/मृत" जांच और CPU लोड) उच्च भार पर काम करना बंद कर देती है। जब आपका एप्लिकेशन प्रति सेकंड हजारों अनुरोधों को संसाधित करता है, तो मानक मीट्रिक बाधाओं को नहीं दिखाते: डेटाबेस के धीमे अनुरोध, लंबी प्रक्रियाओं में मेमोरी लीक, या विलंबता (latency) में अचानक स्पाइक्स।

\n

इस लेख में, हम निगरानी के उन्नत स्तर पर चर्चा करेंगे: व्यावसायिक मीट्रिक का संग्रह, रीयल-टाइम प्रोफाइलिंग, प्रतिशतक (percentiles) के आधार पर अलर्ट कॉन्फ़िगरेशन, और आधुनिक अवलोकनीयता स्टैक (Prometheus + Grafana) के साथ एकीकरण। आप ऐसे उपकरण लागू करना सीखेंगे जो न केवल यह देखने में मदद करेंगे कि एप्लिकेशन "डाउन" हो गया है, बल्कि समस्याओं के उत्पन्न होने से पहले उनकी भविष्यवाणी भी करेंगे।

\n\n

1. उन्नत मीट्रिक: HTTP कोड से व्यावसायिक संकेतकों तक

\n

मानक काउंटर (अनुरोधों की संख्या, 200/500 स्थितियाँ) न्यूनतम हैं। गहन विश्लेषण के लिए, आपको निम्नलिखित एकत्र करने की आवश्यकता है:

\n
    \n
  • विलंबता (Latency): p50, p95, p99 प्रतिक्रिया समय। p99 में विसंगतियाँ कार्य में "आउटलायर्स" को इंगित करती हैं।
  • \n
  • मेमोरी खपत: केवल पीक मान नहीं, बल्कि एक अनुरोध के दौरान वृद्धि की दर भी।
  • \n
  • बाहरी कॉल का निष्पादन समय: Redis, MySQL, RabbitMQ - प्रत्येक सेवा का अपना मीट्रिक होना चाहिए।
  • \n
  • व्यावसायिक मीट्रिक: ऑर्डर की संख्या, सत्यापन त्रुटियाँ, कतारों की गति।
  • \n
\n

promphp/prometheus_client_php का उपयोग करके मीट्रिक संग्रह का उदाहरण:

\n
use Prometheus\\CollectorRegistry;\nuse Prometheus\\RenderTextFormat;\nuse Prometheus\\Storage\\InMemory;\n\n$registry = new CollectorRegistry(new InMemory());\n\n// अनुरोध निष्पादन समय के लिए हिस्टोग्राम\n$histogram = $registry->registerHistogram(\n    'app', 'request_duration_seconds', 'HTTP request duration',\n    ['method', 'endpoint'],\n    [0.1, 0.5, 1.0, 2.0, 5.0]\n);\n\n// व्यावसायिक घटनाओं का काउंटर\n$counter = $registry->registerCounter(\n    'business', 'orders_total', 'Total orders created',\n    ['status'] // success/failed\n);\n\n// मिडलवेयर में समय मापें\n$start = microtime(true);\n// ... अनुरोध निष्पादन ...\n$duration = microtime(true) - $start;\n$histogram->observe($duration, ['GET', '/api/orders']);
\n\n

2. स्वास्थ्य जांच और गहन जांच: निर्भरताओं की जाँच

\n

एक सरल ping एंडपॉइंट डेटाबेस, कैश या कतारों की उपलब्धता की जाँच नहीं करता है। एक व्यापक स्वास्थ्य जांच बनाएँ जो वास्तविक अनुरोधों का अनुकरण करता है:

\n
// health.php\n$checks = [\n    'database' => function () {\n        $db = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');\n        $db->query('SELECT 1');\n        return true;\n    },\n    'redis' => function () {\n        $redis = new Redis();\n        $redis->connect('127.0.0.1', 6379);\n        $redis->ping();\n        return true;\n    },\n    'queue' => function () {\n        // जाँचें कि RabbitMQ ओवरफ्लो नहीं हुआ है\n        $channel = new AMQPChannel(new AMQPConnection());\n        $queue = new AMQPQueue($channel);\n        return $queue->declareQueue() !== false;\n    }\n];\n\n$results = [];\n$healthy = true;\nforeach ($checks as $name => $check) {\n    try {\n        $check();\n        $results[$name] = 'ok';\n    } catch (\\Throwable $e) {\n        $results[$name] = 'failed: ' . $e->getMessage();\n        $healthy = false;\n    }\n}\n\nheader('Content-Type: application/json');\nhttp_response_code($healthy ? 200 : 503);\necho json_encode(['status' => $healthy ? 'healthy' : 'unhealthy', 'checks' => $results]);
\n

इस तरह के एंडपॉइंट को Kubernetes liveness/readiness probes या बाहरी निगरानी (जैसे UptimeRobot) से जोड़ा जा सकता है, जो न केवल उपलब्धता बल्कि सभी निर्भरताओं की कार्यक्षमता की भी जाँच करेगा।

\n\n

3. प्रतिशतक और विसंगतियों पर आधारित अलर्ट

\n

"औसत प्रतिक्रिया समय" पर अलर्ट अक्सर छूट जाते हैं

ब्लॉग

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