2015-03-13 2 views
20

मैं अपने ऐप के प्रत्येक अनुरोध पर एप्लिकेशन अंतर्दृष्टि द्वारा ली गई मीट्रिक में कस्टम गुण जोड़ना चाहता हूं। उदाहरण के लिए, मैं उपयोगकर्ता लॉगिन और किरायेदार कोड जोड़ना चाहता हूं, जैसे कि मैं Azure पोर्टल में मेट्रिक्स को सेगमेंट/समूह कर सकता हूं।एप्लिकेशन अंतर्दृष्टि मेट्रिक्स में प्रत्येक अनुरोध के लिए कस्टम गुण जोड़ना

प्रासंगिक दस्तावेज़ पेज इस एक लगता है: Set default property values

लेकिन उदाहरण नहीं एक HTTP अनुरोध के लिए, एक घटना (यानी gameTelemetry.TrackEvent("WinGame");) के लिए है:

var context = new TelemetryContext(); 
context.Properties["Game"] = currentGame.Name; 
var gameTelemetry = new TelemetryClient(context); 
gameTelemetry.TrackEvent("WinGame"); 

मेरे सवालों का:

  1. अनुरोध के लिए प्रासंगिक कोड क्या है, क्योंकि इस समय मेरे पास कोई विशिष्ट कोड नहीं है (ऐसा लगता है कि यह ऐप इनसाइट्स एसडीके द्वारा स्वचालित रूप से प्रबंधित किया जाता है): क्या बस 0 बना रहा हैपर्याप्त है? क्या मुझे TelemetryClient भी बनाना चाहिए और यदि ऐसा है, तो क्या मुझे इसे वर्तमान अनुरोध से लिंक करना चाहिए? कैसे ?
  2. मुझे यह कोड कहां रखना चाहिए? global.asax की Application_BeginRequest विधि में ठीक है?

उत्तर

0

उस दस्तावेज़ में, कुछ पंक्तियों को नीचे स्क्रॉल करें जहां यह आईसीएन्टेक्स्टइनइलाइज़र के कार्यान्वयन के बारे में बात करता है। आप इसे किसी भी विधि में कॉल कर सकते हैं जिसे टेलीमेट्री रोलिंग शुरू होने से पहले बुलाया जाएगा।

आपकी कस्टम संपत्तियों को सभी घटनाओं, अपवादों, मीट्रिक, अनुरोधों, सब कुछ में जोड़ा जाएगा।

+2

मैं भी जोड़ना होगा कि गुण जब ट्रैक कहा जाता है और ऐ अंत अनुरोध पर अनुरोध के लिए ट्रैक कॉल जोड़ रहे हैं। –

1

जैसा कि एलन ने बताया है, आप IContextInitializer इंटरफ़ेस को एप्लिकेशन अंतर्दृष्टि द्वारा भेजे गए सभी टेलीमेट्री में कस्टम गुण जोड़ने के लिए कार्यान्वित कर सकते हैं। हालांकि, मैं ITelemtryInitializer इंटरफ़ेस को देखने का सुझाव भी दूंगा। यह संदर्भ प्रारंभकर्ता के समान ही है, लेकिन टेलीमेट्री क्लाइंट के निर्माण के बजाए इसे टेलीमेट्री के प्रत्येक टुकड़े के लिए भेजा जाता है। यह उन संपत्ति मूल्यों को लॉग इन करने के लिए मेरे लिए अधिक उपयोगी लगता है जो आपके ऐप के जीवनकाल में बदल सकते हैं जैसे उपयोगकर्ता और किरायेदार से संबंधित जानकारी जैसे आपने उल्लेख किया था।

मुझे उम्मीद है कि आपकी मदद करता है। ITelemetryInitializer का उपयोग करने के उदाहरण के साथ यहां blog post है।

10

पहले प्रश्न से संबंधित "मेरे अनुरोध में कस्टम ईवेंट कैसे जोड़ें/अनुरोध के लिए प्रासंगिक कोड क्या है", मुझे लगता है कि यहां मुख्य भ्रम नामकरण से संबंधित है।

  1. कस्टम इवेंट
  2. अनुरोध
  3. अपवाद
  4. ट्रेस
  5. :

    पहली बात यह है कि हम बाहर बिंदु की जरूरत जानकारी के विभिन्न प्रकार है कि हम आवेदन जानकारी की सहायता से कब्जा कर सकते हैं देखते हैं कि है

  6. पृष्ठ देखें
  7. निर्भरता

एक बार जब हम इसे जानते हैं, तो हम कह सकते हैं कि TrackEvent "कस्टम ईवेंट" से संबंधित है, क्योंकि TrackRequest अनुरोधों से संबंधित है।

var request = new RequestTelemetry(); 
var client = new TelemetryClient(); 
request.Name = "My Request"; 
client.TrackRequest(countEvent); 

तो चलो मान लें कि आपकी उपयोगकर्ता लॉगिन और किरायेदार कोड दोनों तार हैं:

जब हम एक अनुरोध सहेजना चाहते, हम क्या करने की जरूरत है निम्नलिखित है। हम निम्नलिखित कोड का उपयोग कर इस जानकारी के लिए लॉग इन करने के लिए सिर्फ एक नया अनुरोध कर सकता है:

public void LogUserNameAndTenant(string userName, string tenantCode) 
    { 
     var request = new RequestTelemetry(); 

     request.Name = "My Request"; 
     request.Context.Properties["User Name"] = userName; 
     request.Context.Properties["Tenant Code"] = tenantCode; 

     var client = new TelemetryClient(); 
     client.TrackRequest(request); 
    } 

सिर्फ एक TelemetryContext कर पर्याप्त नहीं होगा, क्योंकि हम जानकारी भेजने के लिए कोई तरीका होना चाहिए, और कहा कि जहां TelemetryClient जगह में हो जाता है ।

मुझे उम्मीद है कि यह मदद करता है।

11

ऐसा लगता है कि मौजूदा अनुरोध में नए गुण जोड़ना संभव है, जैसा कि here का उल्लेख किया गया है ITETmetryInitializer का उपयोग करना संभव है।

मैंने नीचे दिए अनुसार नमूना वर्ग बनाया और टेलीमेट्री का अनुरोध करने के लिए "लॉग इनइन यूज़र" नामक नई संपत्ति को जोड़ा।

public class CustomTelemetry : ITelemetryInitializer 
{ 
    public void Initialize(ITelemetry telemetry) 
    { 
     var requestTelemetry = telemetry as RequestTelemetry; 
     if (requestTelemetry == null) return; 
     requestTelemetry.Properties.Add("LoggedInUserName", "DummyUser"); 

    } 
} 

इस कक्षा को एप्लिकेशन प्रारंभ ईवेंट पर पंजीकृत करें। उदाहरण नीचे दिए गए नमूना MVC आवेदन से अलग है मैं

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 

     TelemetryConfiguration.Active.TelemetryInitializers 
    .Add(new CustomTelemetry()); 
    } 
} 

बनाया अब आप कस्टम गुण "LoggedInUserName" देख सकते हैं अनुरोध संपत्तियों की कस्टम समूह के तहत प्रदर्शित किया जाता है। (नीचे स्क्रीन हड़पने देखें)

Appinsight with custom property

संबंधित मुद्दे