APISIX के http-logger प्लगइन के साथ सरल लॉग संग्रह

Qi Guo

Qi Guo

April 11, 2024

Technology

परिचय

आधुनिक सॉफ्टवेयर विकास में, API कॉल लॉगिंग एक अनिवार्य हिस्सा है, जो एप्लिकेशन के प्रत्येक API कॉल के लिए विस्तृत जानकारी रिकॉर्ड करता है। प्रभावी लॉग प्रबंधन विकास टीमों को API कॉल गतिविधियों को वास्तविक समय में मॉनिटर करने में सक्षम बनाता है, जिससे समस्याओं का तुरंत पता लगाने और उन्हें हल करने में मदद मिलती है। हालांकि, उद्यमों में परिपक्व लॉगिंग सिस्टम समाधान मौजूद हैं, लेकिन डेवलपर्स को प्रारंभिक चरण के परीक्षण सेवाओं से लॉग्स को आंतरिक लॉगिंग सिस्टम में एकीकृत करने में चुनौतियों का सामना करना पड़ सकता है, जो अनुमति प्रतिबंधों और अनुमोदन प्रक्रियाओं के कारण उनकी विकास दक्षता को प्रभावित कर सकता है।

Apache APISIX द्वारा प्रदान किया गया http-logger प्लगइन HTTP सर्वर के साथ एकीकरण को सुविधाजनक बनाता है, जो लॉग प्राप्त करने के लिए व्यापक रूप से अपनाए गए HTTP प्रोटोकॉल का उपयोग करता है। यह डेवलपर्स को सीधे API कॉल लॉग्स देखने में सक्षम बनाता है, जिससे विकास दक्षता में सुधार होता है। नीचे हम इसके कार्य करने के तरीके और इसका उपयोग करने के तरीके के बारे में बताएंगे।

http-logger प्लगइन के सिद्धांत

APISIX में http-logger प्लगइन लॉग डेटा को HTTP या HTTPS सर्वर पर पुश करने का समर्थन करता है। इसका मुख्य सिद्धांत APISIX द्वारा क्लाइंट द्वारा शुरू किए गए अनुरोधों को संसाधित करना, एक्सेस लॉग उत्पन्न करना और अनुरोध संदर्भ जानकारी को एसिंक्रोनस रूप से भेजना है, जो निर्दिष्ट लॉग प्रारूप के अनुसार फॉर्मेट किया जाता है, और इसे JSON ऑब्जेक्ट के रूप में POST अनुरोध के माध्यम से कॉन्फ़िगर किए गए HTTP या HTTPS सर्वर पर भेजा जाता है। यह हमारे अपने HTTP या HTTPS सेवाओं पर API लॉग जानकारी देखने में सक्षम बनाता है, जिससे विकास दक्षता में काफी सुधार होता है। डेटा प्रवाह को समझाने के लिए नीचे एक फ्लोचार्ट प्रदान किया गया है।

डेटा प्रवाह आरेख

लॉग प्राप्त करने के लिए एक सरल HTTP सेवा बनाना

हालांकि बाजार में लॉग प्रबंधन और विश्लेषण के लिए कई SaaS उत्पाद और ओपन-सोर्स समाधान मौजूद हैं, जैसे कि Loggly, Splunk, और ELK Stack, लेकिन उद्यम नेटवर्क के भीतर बाहरी नेटवर्क तक पहुंच प्रतिबंधित हो सकती है, जो विकास और परीक्षण चरणों में चुनौतियां पैदा कर सकती है। इसलिए, लॉग एकत्र करने के लिए एक सरल HTTP सेवा को तेजी से विकसित किया जा सकता है। नीचे Node.js का उपयोग करके एक उदाहरण दिया गया है:

// httpserver.js const http = require('http'); http.createServer((req, res) => { let data = ''; req.on('data', chunk => { data += chunk; }); req.on('end', () => { console.log('APISIX Log:', data); }); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(`Hello World\n`); }).listen(3000, () => { console.log('Server running at http://localhost:3000/'); });

यह स्क्रिप्ट स्थानीय पोर्ट 3000 पर सुनती है और इस सेवा एंडपॉइंट पर आने वाले अनुरोधों के अनुरोध बॉडी को प्रिंट करती है। आप इसे चलाने और परीक्षण करने के लिए निम्नलिखित चरणों का पालन कर सकते हैं:

  1. सेवा शुरू करने के लिए node httpserver.js चलाएं।

  2. इस एंडपॉइंट तक पहुंचने के लिए curl -i http://127.0.0.1:3000/ -d '{"name": "Jack"}' कमांड का उपयोग करें।

  3. आपको इसी तरह का आउटपुट दिखाई देना चाहिए:

Server running at http://localhost:3000/ APISIX Log: {"name": "Jack"}

APISIX में Http-logger प्लगइन सक्षम करना

अगला, हम चर्चा करेंगे कि APISIX में http-logger प्लगइन को कैसे सक्षम किया जाए और लॉग्स को पिछले चरण में बनाई गई HTTP सेवा पर भेजा जाए।

  1. APISIX Admin API का उपयोग करके एक रूट बनाएं और http-logger प्लगइन सक्षम करें:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" \ -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "uri": "/get", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } }, "plugins": { "http-logger": { "uri": "http://127.0.0.1:3000/" } } }'
  1. APISIX को अनुरोध भेजने के लिए curl कमांड का उपयोग करें: curl -i http://127.0.0.1:9080/get

  2. फिर आपको अपने टर्मिनल में इसी तरह का लॉग आउटपुट दिखाई देना चाहिए।

http-logger प्लगइन सक्षम करने के लिए लॉग आउटपुट

यह देखा जा सकता है कि हमने APISIX द्वारा भेजे गए लॉग्स को सफलतापूर्वक एकत्र कर लिया है।

लॉग प्रारूप को अनुकूलित करना

http-logger प्लगइन डेवलपर्स को विभिन्न आवश्यकताओं को पूरा करने के लिए लॉग प्रारूप को अनुकूलित करने की अनुमति देता है। यदि लॉग डेटा में केवल विशिष्ट फ़ील्ड्स में रुचि है, तो APISIX लॉग प्रारूप और सामग्री की घोषणा करने का समर्थन करता है। यह APISIX द्वारा प्रदान की गई प्लगइन मेटाडेटा को सेट करके प्राप्त किया जा सकता है।

1. Admin API के माध्यम से प्लगइन मेटाडेटा कॉन्फ़िगर करें:

curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/http-logger \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "log_format": { "host": "$host", "@timestamp": "$time_iso8601", "client_ip": "$remote_addr" } }'
  1. curl कमांड को फिर से जारी करने पर, आपको इसी तरह का लॉग आउटपुट दिखाई देना चाहिए:
APISIX Log: [{"service_id":"a869a037-27df-4278-ab50-4e66d212cfc0","client_ip":"192.168.65.1","host":"127.0.0.1","route_id":"4f499953-9504-4737-9f3d-facaeda4b841","@timestamp":"2024-04-10T00:10:31+00:00"}]

निष्कर्ष

http-logger प्लगइन का उपयोग करके, डेवलपर्स न केवल लॉग देखने की प्रक्रिया को सरल बनाते हैं, बल्कि दैनिक विकास दक्षता में भी सुधार करते हैं। यह प्लगइन, APISIX द्वारा प्रदान किया गया, सबसे सरल और उपयोगकर्ता-अनुकूल लॉगिंग प्लगइन है, जो नेटवर्क ट्रांसमिशन के लिए सार्वभौमिक रूप से स्वीकृत HTTP प्रोटोकॉल पर काम करता है। यह डेवलपर्स को किसी भी HTTP सेवा के साथ सीमलेस एकीकरण करने और लॉग-प्राप्त करने वाली सेवाओं को लचीले ढंग से चुनने की अनुमति देता है।

इसके अलावा, APISIX विभिन्न परिदृश्यों में विविध आवश्यकताओं को पूरा करने के लिए दर्जनों लॉगिंग प्लगइन्स का समर्थन करता है। चाहे वह सरल HTTP लॉग संग्रह, जटिल लॉग विश्लेषण, और मॉनिटरिंग, या उच्च प्रदर्शन और स्थिरता की मांग हो, APISIX व्यापक समर्थन प्रदान करता है, जो उपयोगकर्ताओं के लिए अधिक सुविधाजनक और कुशल सिस्टम बनाता है।

Tags: