Microsoft Dataverse के लिए टैलीमेट्री इवेंट
डेटा स्ट्रीम वर्तमान में Dataverse API इनकमिंग कॉल, Dataverse प्लग-इन निष्पादन कॉल और Dataverse SDK कॉल से संबंधित प्रदर्शन डेटा प्रदान करता है. यह प्लग-इन और Dataverse SDK संचालन में विफलताओं के लिए डेटा भी प्रदान करता है.
Dataverse API इनकमिंग कॉल
ये Dataverse API को की गई कॉल हैं. वे यूनिफाइड इंटरफ़ेस (UCI), लीगेसी वेब क्लायंट, SDK का उपयोग करने वाले कस्टम क्लायंट आदि से हो सकते हैं. उन्हें Application Insights की अनुरोध तालिका में पाया जा सकता है, जिसमें निम्नलिखित फ़ील्ड हैं.
नाम: अनुरोध का प्रकार. ये दो श्रेणियों में आते हैं:
- वेब API अनुरोध: OData v4 एंडपॉइंट के लिए एक अनुरोध जो सामान्यतः एकीकृत इंटरफ़ेस और आधुनिक क्लाइंट द्वारा उपयोग किया जाता है। यह अनुरोध एक ऐसे ऑपरेशन में बदल जाता है जो दोनों के लिए सामान्य है. वेब API रेस्टफुल प्रोग्रामिंग मॉडल को सक्षम करने का "रैपर" है, लेकिन डेटा प्राप्त होने के बाद, सर्वर के भीतर सब कुछ समान हो जाता है. जब प्रतिक्रिया लौटाई जाती है, तो वेब API से अनुरोध आने पर इसे JSON में बदल दिया जाता है.
- संगठन सेवा अनुरोध: SDK क्लाइंट या लीगेसी वेब क्लाइंट द्वारा उपयोग किए जाने वाले संगठन API एंडपॉइंट के लिए अनुरोध.
अवधि: सर्वर को अनुरोध का जवाब देने में लगा समय.
Url: वह URL जिस पर कॉल किया गया था.
कस्टम आयाम:
UserAgent: Application Insights स्वचालित रूप से उपयोगकर्ता एजेंट फ़ील्ड को PC के साथ पॉप्युलेट करता है क्योंकि ये लॉग डेटासेंटर में सर्वर से पुश किए जा रहे हैं। Application Insights उपयोगकर्ता एजेंट फ़ील्ड को ओवरराइड करने की अनुमति नहीं देती है. कभी-कभी, उपयोगकर्ता एजेंट फ़ील्ड पॉप्युलेट करने के लिए उपलब्ध नहीं होता है. जिस उपयोगकर्ता एजेंट से कॉल की गई थी, उसे निम्न क्वेरी का उपयोग करके देखा जा सकता है:
requests | summarize count() by tostring(customDimensions.userAgent)
Operation_Name: दृश्यों पर प्रदर्शित करने के लिए ऑपरेशन का पठनीय नाम, जैसे कि एंड-टू-एंड लेनदेन दृश्य.
Dataverse प्लग-इन निष्पादन लॉग
किसी दिए गए ऑपरेशन के लिए चल रहे कस्टम प्लग-इन के लिए ये लॉग निर्भरता तालिका में पाए जाते हैं. निम्नलिखित एक नमूना क्वेरी है:
dependencies
| where type == "Plugin"
| take 100
- नाम/लक्ष्य: निष्पादित किए जा रहे प्लग-इन के लिए पूर्णतः योग्य प्रकार का नाम.
- अवधि: प्लग-इन को निष्पादित होने में लगा समय.
- कस्टम आयाम:
- गहराई: कॉल स्टैक में निष्पादन की वर्तमान गहराई .
- EntityName: प्लग-इन द्वारा क्रियान्वित की जा रही इकाई का नाम.
- IsolationType: A मान यह इंगित करता है कि प्लग-इन सैंडबॉक्स में निष्पादित किया जा रहा है या नहीं:
- 1: कुछ नहीं
- 2: सैंडबॉक्स
- 3: बाहरी
- PluginName: प्लग-इन का उपयोगकर्ता-अनुकूल नाम.
- PluginType: निष्पादित किये जा रहे प्लग-इन के प्रकार का नाम.
- PluginVersion: प्रकाशित प्लग-इन का संस्करण. यहां इरादा इस जानकारी का उपयोग संस्करण अपडेट के समस्या निवारण के लिए करने में सक्षम होना है.
- चरण: निम्न मानों पर मैप करता है:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName: SDK संदेश प्रसंस्करण का नाम चरण. यह आमतौर पर प्लग-इन पंजीकरण टूल द्वारा PluginName, PluginType और ऑपरेशन के नाम के बारे में जानकारी का उपयोग करके उत्पन्न किया जाता है—उदाहरण के ErrorMessageTest.ThrowException: खाते का निर्माण.
आपके प्लग-इन कोड के भीतर टेलीमेट्री
यह समझने के लिए कि आपके प्लग-इन कोड के भीतर क्या हो रहा है, आप अपने प्लग-इन कोड में .Xrm.Sdk.PluginTelemetry.ILogger Interface का उपयोग करके अपने प्लग-इन के भीतर से कस्टम टेलीमेट्री शामिल कर सकते हैं, ताकि टेलीमेट्री डेटा को सीधे आपके संसाधन में लिखा जा सके। Microsoft Application Insights अधिक जानकारी: Logger (पूर्वावलोकन) का उपयोग करके अपने Application Insights संसाधन के लिए टेलीमेट्री लिखें
Dataverse SDK लॉग्स
ये आने वाले अनुरोध के हिस्से के रूप में ट्रिगर किए गए SDK संचालन के लिए लॉग हैं. इन्हें Application Insights में निर्भरता तालिका में लॉग किया जाता है, क्योंकि इन्हें निष्पादित करने के अनुरोध के लिए निर्भरता के रूप में ट्रैक किया जाता है. उन्हें प्रकार के नाम से पहचाना जाता है, जो SDK से शुरू होता है. निम्नलिखित एक नमूना क्वेरी है:
dependencies
| where type startswith "SDK"
| take 10
- प्रकार: ट्रिगर किए गए SDK अनुरोध का प्रकार. उदाहरणों में Retrieve, RetrieveMultiple, FetchXmlToQueryExpression, और WhoAmI शामिल हैं.
- नाम/लक्ष्य: यह SDK ऑपरेशन द्वारा लक्षित की जा रही इकाई का नाम है।
- कस्टम आयाम:
- ClientType: वह क्लाइंट प्रकार जिससे कॉल आ रही है. कुछ संभावित मान Web, UCIClient, और OutlookFull हैं.
- EntityId: उपयोग की जा रही इकाई का अद्वितीय पहचानकर्ता.
- EntityName: उपयोग की जा रही इकाई का नाम.
अपवाद
आपको Application Insights में प्लग-इन और SDK संचालन में विफलताओं का विवरण दिखाई देगा. Application Insights में अपवाद तालिका विफलताएं पैनल को शक्ति देती है. ये विफलता विवरण प्लग-इन में शेष इवेंट और एंड-टू-एंड दृश्य में SDK कॉल से संबंधित हैं. जब संभव हो तो सभी उपलब्ध जानकारी कॉलम में और कस्टम आयाम में जोड़ दी जाती है, जब कोई सटीक कॉलम मेल नहीं होता है.
आप देखेंगे कि अपवाद तालिका में कुछ फ़ील्ड पॉप्युलेट नहीं हैं. ऐसा इसलिए है क्योंकि इन क्षेत्रों को केवल तभी सेट किया जा सकता है जब स्रोत से लॉग निकालने के लिए Application Insights SDK का उपयोग किया जाता है. यह सुविधा प्लेटफ़ॉर्म टेलीमेट्री एकत्र करती है और फिर इसे Application Insights स्कीमा के अनुसार Application Insights में पुश करती है.
exceptions
| take 10
यह क्वेरी अपवाद तालिका से सभी विशेषता विवरण लौटाएगी.
- problemId/type: अपवाद का प्रकार.
- externalMessage: अपवाद संदेश.
- कस्टम आयाम:
- clientType: वह क्लाइंट प्रकार जिससे कॉल आ रही है. कुछ संभावित मान Web, UCIClient, और OutlookFull हैं.
- exceptionSource: वह प्लग-इन या बिंदु जहां अपवाद फेंका गया था.
- entityName: उपयोग की जा रही इकाई का नाम.
- pluginName: उस प्लग-इन का नाम जहां अपवाद फेंका गया था।
यदि कोई उपयोगकर्ता किसी त्रुटि की रिपोर्ट करता है, तो आप Microsoft Entra अपवाद तालिका से विवरण समझने के लिए उपयोगकर्ता आईडी ( आईडी आईडी) का उपयोग कर सकते हैं।
exceptions
| where user_Id == '12345678-68cd-4e73-908f-126342b36315'
निकाय ID और निकाय का नाम निर्भरता तालिका में customDimensions में उपलब्ध हैं.
dependencies
| where type == "SDK Retrieve"
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Dataverse के लिए टेलीमेट्री इवेंट से संबंधित कुछ अक्सर पूछे जाने वाले प्रश्न निम्नलिखित हैं.
मैं कैसे निर्धारित करूं कि मेरे प्लग-इन अपग्रेड के कारण प्रदर्शन में गिरावट आई है?
dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name
प्लग-इन नाम में कस्टम प्लग-इन का संस्करण भी होना चाहिए.
दिन के समय या स्थान के आधार पर किसी रिपोर्ट की गई समस्या से पहले API कैसा प्रदर्शन कर रहा था? API गिरावट धीरे-धीरे थी या अचानक?
requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart
इस चार्ट में, हम अनुरोध किए जा रहे अनुरोधों की संख्या के मुकाबले API एंडपॉइंट के प्रदर्शन को समय की अवधि में देख सकते हैं.
आप यहां Application Insights के भीतर किसी विशेष API के प्रदर्शन के आधार पर अलर्ट सेट अप भी कर सकते हैं.
क्या मैं विशिष्ट समय पर त्रुटियों या विफलताओं पर या विशिष्ट उपयोगकर्ताओं के लिए कॉल स्टैक को समझने की अनुमति दे सकता हूं?
विफलताएं पैनल को देखने से एक निश्चित समयावधि में विफलताओं का अवलोकन मिलता है. फिर आप एंड-टू-एंड दृश्य देखने के लिए API कॉल या निर्भरता प्रकार के आधार पर एक विशिष्ट विफलता तक सीमित कर सकते हैं.
क्या मैं कस्टम डैशबोर्ड बना सकता हूं?
हाँ. आप Application Insights के साथ कस्टम डैशबोर्ड बना सकते हैं.
क्या मैं अधिकतम उपयोग के दौरान प्लग-इन उपयोग प्रदर्शन (प्रतिक्रिया समय) और विफलता दर निर्धारित कर सकता हूं?
हाँ. यह समझने के लिए कि आपके प्लग-इन कैसा प्रदर्शन करते हैं, निम्न नमूना क्वेरी देखें.
dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart
क्या इस टेलीमेट्री में थ्रॉटलिंग होगी?
हाँ. मूल 429 त्रुटि विवरण वर्तमान में प्रदान किए गए हैं.
क्या मैं निष्पादन पथों को समझ सकता हूं? क्या प्लग-इन द्वारा किए गए कॉल प्लग-इन को धीमा कर रहे हैं?
हाँ. आप किसी भी अनुरोध के लिए निष्पादित सभी संदेश और प्लग-इन देख सकते हैं.
सभी संदेश और प्लग-इन निष्पादन की अवधि लॉग की गई है. यदि कोई प्लग-इन अधिक समय ले रहा है, तो आप उस प्लग-इन की पहचान कर सकते हैं. यदि प्लग-इन Dataverse को कॉलबैक कर रहा है, तो उस कॉल की अवधि लॉग की जाती है. भविष्य में परिनियोजन के लिए प्लग-इन के बारे में अधिक जानकारी की योजना है.
प्लग-इन द्वारा की गई कोई भी आउटबाउंड कॉल स्वचालित रूप से एक निर्भरता के रूप में लॉग हो जाएगी.
क्या मैं किसी विशिष्ट अनुरोध के लिए टेलीमेट्री देख सकता हूं?
Dataverse सभी अनुरोधों के लिए हेडर प्रतिक्रिया में x-ms-service-requestId लौटाता है. इस requestId का उपयोग करके, आप सभी टेलीमेट्री के लिए क्वेरी कर सकते हैं.
union *
| where operation_ParentId contains <requestId>