PHP में Observability: ट्रेसिंग, मेट्रिक्स और लॉग्स - संपूर्ण गाइड

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

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

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

PHP में Observability: अनुमान लगाना बंद करें और पूरी तस्वीर देखें

\n\n

जब आपका PHP एप्लीकेशन धीमा होने लगे, 500 एरर देने लगे या अजीब व्यवहार करने लगे, तो सबसे पहले लॉग्स चेक करना आम बात है। लेकिन लॉग्स (चाहे कितने भी स्ट्रक्चर्ड हों) पहेली का सिर्फ एक हिस्सा हैं। आधुनिक डेवलपमेंट में और भी बहुत कुछ चाहिए: आपको जानना होगा कि हर रिक्वेस्ट कितनी देर चली, कौन से बाहरी सर्विसेज सिस्टम को धीमा कर रही हैं, और किसी खास एंडपॉइंट ने कितनी मेमोरी खाई।

\n\n

यह सब है observability (अवलोकनीयता)। इस आर्टिकल में हम PHP में observability के तीन स्तंभों को समझेंगे: ट्रेसिंग, मेट्रिक्स और लॉग्स। आप कोड उदाहरणों के साथ रियल मॉनिटरिंग सेट करना सीखेंगे, और ऐसे रेडी-टू-यूज़ समाधान पाएंगे जिन्हें आज ही लागू किया जा सकता है।

\n\n

Observability क्या है और PHP डेवलपर को इसकी आवश्यकता क्यों है?

\n\n

Observability (O11y) — यह सिस्टम के बाहरी आउटपुट डेटा से उसकी आंतरिक स्थिति को समझने की क्षमता है। PHP की दुनिया में इसका मतलब है कि आप इन सवालों के जवाब दे सकते हैं:

\n\n
    \n
  • एक खास API रिक्वेस्ट में 5 सेकंड क्यों लगे?
  • \n
  • पिछले एक घंटे में सबसे धीमा SQL क्वेरी कौन सा था?
  • \n
  • अभी आपका सर्वर प्रति सेकंड कितनी रिक्वेस्ट प्रोसेस कर रहा है?
  • \n
  • मेमोरी कहाँ लीक हो रही है?
  • \n
\n\n

Observability के बिना आप अंधों की तरह काम कर रहे हैं। इसके साथ, आप अपने एप्लीकेशन की हर हरकत देख सकते हैं। और हाँ, यह सिर्फ Go या Java के माइक्रोसर्विसेज के लिए नहीं है। PHP मोनोलिथ को भी "अवलोकनीय" बनाया जा सकता है और बनाना चाहिए।

\n\n

PHP में ट्रेसिंग: OpenTelemetry के साथ डिस्ट्रीब्यूटेड ट्रेसिंग

\n\n

ट्रेसिंग (ट्रेसिंग) — यह एक रिक्वेस्ट की पूरी कहानी है। आप देख सकते हैं कि रिक्वेस्ट आपके एप्लीकेशन से कैसे गुज़री, कौन से फंक्शन कॉल हुए, कौन से बाहरी API को हिट किया गया, और हर स्टेप पर कितना समय लगा। PHP में इसके लिए OpenTelemetry स्टैंडर्ड का उपयोग किया जाता है।

\n\n

PHP के लिए OpenTelemetry इंस्टॉल करना

\n\n

सबसे पहले Composer के ज़रिए ज़रूरी पैकेज इंस्टॉल करें:

\n\n
composer require open-telemetry/opentelemetry\ncomposer require open-telemetry/transport-grpc\ncomposer require open-telemetry/exporter-otlp\n
\n\n

अब बेसिक ट्रेसर सेट करते हैं। tracing.php फ़ाइल बनाएँ:

\n\n
// tracing.php\nuse OpenTelemetry\\API\\Globals;\nuse OpenTelemetry\\SDK\\Trace\\TracerProvider;\nuse OpenTelemetry\\SDK\\Trace\\SpanProcessor\\BatchSpanProcessor;\nuse OpenTelemetry\\SDK\\Trace\\Exporter\\ConsoleSpanExporter;\n\nrequire 'vendor/autoload.php';\n\n// एक्सपोर्टर बनाएँ (फिलहाल कंसोल में)\n$exporter = new ConsoleSpanExporter();\n$processor = new BatchSpanProcessor($exporter);\n$tracerProvider = new TracerProvider($processor);\n\n// ग्लोबल ट्रेसर रजिस्टर करें\nGlobals::setTracerProvider($tracerProvider);\n\n// अपने एप्लीकेशन के नाम से ट्रेसर प्राप्त करें\n$tracer = Globals::tracerProvider()->getTracer('my-php-app');\n
\n\n

रियल कोड में स्पैन (spans) बनाना

\n\n

मान लीजिए आपके पास एक कंट्रोलर है जो ऑर्डर प्रोसेस करता है। मुख्य ऑपरेशन को स्पैन में लपेटें:

\n\n
// OrderController.php\nclass OrderController {\n    public function createOrder(array $data) {\n        $tracer = Globals::tracerProvider()->getTracer('order-service');\n        \n        // मुख्य स्पैन — पूरी रिक्वेस्ट\n        $span = $tracer->spanBuilder('POST /orders')->startSpan();\n        $span->setAttribute('order.id', $data['id'] ?? 'unknown');\n        \n        try {\n            // यूज़र वैलिडेशन के लिए स्पैन\n            $userSpan = $tracer->spanBuilder('validate.user')->startSpan();\n            $user = $this->validateUser($data['user_id']);\n            $userSpan->end();\n            \n            // DB में सेव करने के लिए स्पैन\n            $dbSpan = $tracer->spanBuilder('save.order')->startSpan();\n            $order = $this->saveOrder($data);\n            $dbSpan->end();\n            \n            // ईमेल भेजने के लिए स्पैन\n            $emailSpan = $tracer->spanBuilder('send.email')                

ब्लॉग

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