Apache APISIX में Datadog के साथ Cloud Monitoring
API7.ai
November 12, 2021

जैसे-जैसे आईटी उत्पादों और उपभोक्ता-सामने वाले एप्लिकेशन विकास की जटिलता बढ़ती है, मॉनिटरिंग किसी भी एप्लिकेशन डिलीवरी का अभिन्न हिस्सा बन जाती है। इसके अलावा, स्थिरता सुनिश्चित करते हुए तेजी से अपग्रेड चक्रों की अंतहीन मांग को पूरा करने, स्ट्रीमलाइन प्रदर्शन और सेवा स्तर संकेतक (SLI) को सेवा-स्तर उद्देश्यों (SLO) और सेवा-स्तर समझौते (SLA) के साथ एक सही संतुलन बनाए रखने के लिए - प्रभावी मॉनिटरिंग अत्यंत महत्वपूर्ण है।
एक क्लाउड एपीआई प्रबंधन उत्पाद के रूप में, Apache APISIX ऑब्जर्वेबिलिटी चिंताओं को एप्लिकेशन से अलग करता है, जो डेवलपर्स को केवल व्यावसायिक तर्क पर ध्यान केंद्रित करते हुए एप्लिकेशन बनाने का लाभ देता है, जबकि Apache APISIX उनके चुने हुए प्लेटफॉर्म के लिए ऑब्जर्वेबिलिटी का ध्यान रखेगा।
Apache APISIX ने हाल ही में एक नया प्लगइन जारी किया है: APISIX-Datadog, जो Datadog के साथ गहरे एकीकरण प्रदान करता है। यह लेख APISIX-Datadog प्लगइन और इसकी क्षमताओं का परिचय देता है।
APISIX-Datadog प्लगइन कैसे काम करता है

APISIX-Datadog प्लगइन अपने कस्टम मेट्रिक्स को DogStatsD सर्वर पर पुश करता है, जो Datadog एजेंट के साथ UDP कनेक्शन पर बंडल होता है। DogStatsD मूल रूप से StatsD प्रोटोकॉल का एक कार्यान्वयन है। यह Apache APISIX एजेंट के लिए कस्टम मेट्रिक्स एकत्र करता है, इसे एक डेटा पॉइंट में समेटता है और इसे कॉन्फ़िगर किए गए Datadog सर्वर पर भेजता है। DogStatsD के बारे में अधिक जानने के लिए, कृपया DogStatsD डॉक्यूमेंटेशन पर जाएं।
जब APISIX-Datadog सक्रिय होता है, तो Apache APISIX एजेंट प्रत्येक अनुरोध प्रतिक्रिया चक्र के लिए निम्नलिखित मेट्रिक्स को DogStatsD सर्वर पर निर्यात करता है:
| मेट्रिक नाम | StatsD प्रकार | विवरण |
|---|---|---|
| अनुरोध काउंटर | काउंटर | प्राप्त अनुरोधों की संख्या। |
| अनुरोध विलंबता | हिस्टोग्राम | अनुरोध को संसाधित करने में लगा समय (मिलीसेकंड में)। |
| अपस्ट्रीम विलंबता | हिस्टोग्राम | अनुरोध को अपस्ट्रीम सर्वर पर प्रॉक्सी करने से लेकर प्रतिक्रिया प्राप्त होने तक का समय (मिलीसेकंड में)। |
| APISIX विलंबता | हिस्टोग्राम | APISIX एजेंट द्वारा अनुरोध को संसाधित करने में लगा समय (मिलीसेकंड में)। |
| इनग्रेस आकार | टाइमर | अनुरोध बॉडी का आकार बाइट्स में। |
| एग्रेस आकार | टाइमर | प्रतिक्रिया बॉडी का आकार बाइट्स में। |
मेट्रिक्स निम्नलिखित टैग्स के साथ DogStatsD एजेंट को भेजे जाएंगे। यदि किसी विशेष टैग के लिए कोई उपयुक्त मान नहीं है, तो टैग को छोड़ दिया जाएगा।
| मेट्रिक नाम | विवरण |
|---|---|
| रूट_नाम | रूट स्कीमा परिभाषा में निर्दिष्ट नाम। यदि उपलब्ध नहीं है, तो यह रूट आईडी मान पर वापस आ जाएगा। |
| सेवा_आईडी | यदि एक रूट सेवा के अमूर्तन के साथ बनाया गया है, तो विशेष सेवा आईडी का उपयोग किया जाएगा। |
| उपभोक्ता | यदि रूट में एक लिंक्ड उपभोक्ता है, तो उपभोक्ता यूजरनेम को टैग के रूप में जोड़ा जाएगा। |
| बैलेंसर_आईपी | अपस्ट्रीम बैलेंसर का आईपी जिसने वर्तमान अनुरोध को संसाधित किया है। |
| प्रतिक्रिया_स्थिति | HTTP प्रतिक्रिया स्थिति कोड। |
| स्कीम | अनुरोध करने के लिए उपयोग किया गया स्कीम, जैसे HTTP, gRPC, gRPCs आदि। |
प्लगइन एक टाइमर के साथ एक बफर बनाए रखता है। जब टाइमर समाप्त होता है, तो APISIX-Datadog प्लगइन बफर किए गए मेट्रिक्स को एक बैच के रूप में स्थानीय रूप से चल रहे dogstatsd सर्वर पर भेजता है। यह दृष्टिकोण कम संसाधन-भूखा है (हालांकि यह नगण्य हो सकता है क्योंकि UDP सॉकेट्स बहुत हल्के होते हैं) एक ही UDP सॉकेट का पुन: उपयोग करके और नेटवर्क को हर समय अधिभारित नहीं करता है क्योंकि टाइमर को कॉन्फ़िगर किया जा सकता है।
Datadog एजेंट चलाने के चरण
- यदि आप पहले से ही अपने इन्फ्रास्ट्रक्चर में Datadog का उपयोग कर रहे हैं, तो आपके सिस्टम में एक datadog एजेंट इंस्टॉल होना चाहिए। यह या तो एक डॉकर कंटेनर, पॉड या संबंधित पैकेज मैनेजर के लिए बाइनरी हो सकता है। इस मामले में, आप तैयार हैं। बस सुनिश्चित करें कि फ़ायरवॉल (यदि कोई हो) के माध्यम से पोर्ट 8125/udp की अनुमति है, अर्थात् विशेष रूप से, Apache APISIX एजेंट datadog एजेंट के पोर्ट 8125 तक पहुंच सकता है। आप इस उपभाग को छोड़ सकते हैं।
एक पूर्ण-विकसित datadog एजेंट को कैसे इंस्टॉल करें, इसके बारे में अधिक जानने के लिए, यहां पर जाएं।
- यदि आप Datadog के लिए नए हैं
- पहले www.datadoghq.com पर जाकर एक खाता बनाएं।
- एक API कुंजी उत्पन्न करें।

- APISIX-Datadog प्लगइन को केवल
datadog/agentके dogstatsd घटक की आवश्यकता होती है क्योंकि प्लगइन मेट्रिक्स को स्टैट्सड प्रोटोकॉल के अनुसार मानक UDP सॉकेट पर dogstatsd सर्वर पर एसिंक्रोनस रूप से भेजता है। इसलिए APISIX पूर्ण एजेंट के बजाय स्टैंडअलोनdatadog/dogstatsdइमेज का उपयोग करने की सिफारिश करता है। यह ~2.8GB केdatadog/agentइमेज की तुलना में अत्यंत हल्का है (केवल ~11 MB आकार में)।
इसे एक कंटेनर के रूप में चलाने के लिए:
# नवीनतम इमेज पुल करें docker pull datadog/dogstatsd:latest # एक डिटैच्ड कंटेनर चलाएं docker run -d --name dogstatsd-agent -e DD_API_KEY=<चरण 2 से आपकी API कुंजी> -p 8125:8125/udp datadog/dogstatsd
यदि आप अपने प्रोडक्शन वातावरण में Kubernetes का उपयोग कर रहे हैं, तो आप dogstatsd को एक Daemonset या Apache APISIX एजेंट के साथ एक मल्टी-कंटेनर पॉड के रूप में तैनात कर सकते हैं।
Apache APISIX के साथ Datadog का उपयोग कैसे करें
APISIX-Datadog प्लगइन को सक्रिय करें
निम्नलिखित एक उदाहरण है कि कैसे एक विशिष्ट रूट के लिए datadog प्लगइन को सक्रिय किया जाए। हम मान रहे हैं कि आपका dogstatsd एजेंट पहले से ही चल रहा है।
# एक विशिष्ट रूट के लिए प्लगइन सक्रिय करें curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins": { "datadog": {} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } }, "uri": "/hello" }'
अब /hello एंडपॉइंट URI पर किसी भी अनुरोध से उपरोक्त मेट्रिक्स उत्पन्न होंगे और इसे datadog एजेंट के स्थानीय DogStatsD सर्वर पर पुश किया जाएगा।
कस्टम कॉन्फ़िगरेशन
डिफ़ॉल्ट कॉन्फ़िगरेशन में, प्लगइन dogstatsd सेवा को 127.0.0.1:8125 पर उपलब्ध होने की उम्मीद करता है। यदि आप कॉन्फ़िगरेशन को अपडेट करना चाहते हैं, तो कृपया प्लगइन मेटाडेटा को अपडेट करें:
मेटाडेटा स्कीमा
| नाम | प्रकार | आवश्यक | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|
| होस्ट | स्ट्रिंग | वैकल्पिक | "127.0.0.1" | DogStatsD सर्वर होस्ट पता |
| पोर्ट | पूर्णांक | वैकल्पिक | 8125 | DogStatsD सर्वर होस्ट पोर्ट |
| नेमस्पेस | स्ट्रिंग | वैकल्पिक | "apisix" | APISIX एजेंट द्वारा भेजे गए सभी कस्टम मेट्रिक्स के लिए उपसर्ग। मेट्रिक ग्राफ के लिए इकाइयों को खोजने के लिए उपयोगी। उदाहरण के लिए (apisix.request.counter) |
| कॉन्स्टेंट_टैग्स | सरणी | वैकल्पिक | ["source"] | उत्पन्न मेट्रिक्स में एम्बेडेड स्थिर टैग्स। कुछ संकेतों पर मेट्रिक को समूहित करने के लिए उपयोगी। |
टैग्स को प्रभावी ढंग से लिखने के बारे में अधिक जानने के लिए, कृपया यहां पर जाएं
अपडेट किए गए मेटाडेटा के साथ /apisix/admin/plugin_metadata एंडपॉइंट पर एक अनुरोध करें:
curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/datadog -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "host": "127.0.0.1", "port": 8125, "constant_tags": [ "source:apisix", "service:custom" ], "namespace": "apisix" }'
प्लगइन स्कीमा
इसी तरह, प्लगइन को सक्रिय करते समय कुछ विशेषताओं को ट्वीक किया जा सकता है।
| नाम | प्रकार | आवश्यक | डिफ़ॉल्ट | वैध | विवरण |
|---|---|---|---|---|---|
| बैच_मैक्स_साइज़ | पूर्णांक | वैकल्पिक | 5000 | [1,...] | प्रत्येक बैच का अधिकतम बफर आकार |
| इनएक्टिव_टाइमआउट | पूर्णांक | वैकल्पिक | 5 | [1,...] | सेकंड में अधिकतम आयु जब बफर को फ्लश किया जाएगा यदि निष्क्रिय हो |
| बफर_ड्यूरेशन | पूर्णांक | वैकल्पिक | 60 | [1,...] | सेकंड में सबसे पुरानी प्रविष्टि की अधिकतम आयु जब बैच को संसाधित किया जाना चाहिए |
| मैक्स_रेट्री_काउंट | पूर्णांक | वैकल्पिक | 1 | [1,...] | यदि एक प्रविष्टि dogstatsd सर्वर तक पहुंचने में विफल होती है तो अधिकतम पुनः प्रयास संख्या |
चूंकि सभी फ़ील्ड वैकल्पिक हैं और यदि कोई विशेषता सेट नहीं की गई है, तो datadog प्लगइन डिफ़ॉल्ट मानों के साथ इंस्टेंट होता है। किसी भी विशेषता को अपडेट करने के लिए, बस आवश्यक रूट, सेवा या उपभोक्ता को अपडेट की गई विशेषता मान के साथ अपडेट करें। उदाहरण के लिए, नीचे दिया गया कोड प्रत्येक बैच का अधिकतम बफर आकार संशोधित करता है:
'{ ... "plugins": { "datadog": { "batch_max_size": 10 } } ... }'
APISIX-Datadog प्लगइन को निष्क्रिय करें
अब, प्लगइन को निष्क्रिय करने के लिए, बस प्लगइन कॉन्फ़िगरेशन में संबंधित json कॉन्फ़िगरेशन को हटा दें ताकि datadog को अक्षम किया जा सके। APISIX प्लगइन्स हॉट-रिलोडेड होते हैं, इसलिए APISIX को पुनः आरंभ करने की आवश्यकता नहीं है।
# एक रूट के लिए प्लगइन अक्षम करें curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": {}, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } } }'