แชร์ผ่าน


เหตุการณ์การวัดและส่งข้อมูลทางไกลสำหรับ Microsoft Dataverse

สตรีมข้อมูลในปัจจุบันให้ข้อมูลประสิทธิภาพที่เกี่ยวข้องกับ สายเรียกเข้าของ API Dataverse การเรียกใช้งานปลั๊กอิน Dataverse และการเรียก SDK Dataverse นอกจากนี้ยังให้ข้อมูลสำหรับความล้มเหลวในปลั๊กอินและการดำเนินงาน SDK Dataverse

Dataverse สายเรียกเข้า API

เหล่านี้คือการโทรไปยัง Dataverse API โดยอาจมาจาก ส่วนติดต่อแบบรวม (UCI) เว็บไคลเอ็นต์ดั้งเดิม ไคลเอ็นต์แบบกำหนดเองที่ใช้ SDK และอื่นๆ สามารถพบได้ในตาราง คำขอ ของ Application Insights ซึ่งมีฟิลด์ดังต่อไปนี้

  • ชื่อ: ประเภทของการร้องขอ เหล่านี้แบ่งออกเป็นสองประเภท:

    • คำขอ Web API: คำขอไปยัง OData v4 ตำแหน่งข้อมูล ที่ใช้กันทั่วไปโดย ส่วนติดต่อแบบรวม และไคลเอนต์สมัยใหม่ คำขอนี้เปลี่ยนเป็นการดำเนินการที่เหมือนกันสำหรับทั้งสองอย่าง Web API เป็น "ตัวห่อหุ้ม" เพื่อเปิดใช้งานโมเดลการเขียนโปรแกรม RESTful แต่หลังจากได้รับข้อมูลแล้ว ทุกอย่างจะเหมือนกันภายในเซิร์ฟเวอร์ เมื่อการตอบกลับถูกส่งกลับ จะถูกแปลงเป็น JSON หากคำขอมาจาก Web API
    • คำขอรับบริการองค์กร: คำขอไปยัง Organization API ตำแหน่งข้อมูล ที่ใช้โดยไคลเอนต์ SDK หรือไคลเอนต์เว็บแบบดั้งเดิม
  • ระยะเวลา : จำนวนเวลาที่เซิร์ฟเวอร์ใช้ในการตอบสนองต่อคำขอ

  • Url: URL ที่ทำการโทร

  • ขนาดที่กำหนดเอง:

    • UserAgent: Application Insights เติมข้อมูลลงในฟิลด์ตัวแทนผู้ใช้โดยอัตโนมัติด้วย PC ขณะที่บันทึกเหล่านี้ถูกส่งจากเซิร์ฟเวอร์ในศูนย์ข้อมูล Application Insights ไม่อนุญาตให้แทนที่ฟิลด์ตัวแทนผู้ใช้ บางครั้ง ฟิลด์ตัวแทนผู้ใช้ไม่สามารถเติมข้อมูลได้ ตัวแทนผู้ใช้ที่ทำการโทรสามารถดูได้โดยใช้การสอบถามต่อไปนี้:

      requests
      | summarize count() by tostring(customDimensions.userAgent)
      

      Application Insights CustomDimensions UserAgent

  • Operation_Name: ชื่อที่อ่านได้ของการดำเนินการที่จะแสดงบนมุมมอง เช่น มุมมองธุรกรรมแบบครบวงจร

Dataverse บันทึกการดำเนินการปลั๊กอิน

บันทึกเหล่านี้สำหรับปลั๊กอินแบบกำหนดเองที่ทำงานสำหรับการดำเนินการที่กำหนด มีอยู่ในตาราง การขึ้นต่อกัน ต่อไปนี้เป็นการสอบถามตัวอย่าง:

dependencies
| where type == "Plugin"
| take 100

บันทึกการดำเนินการปลั๊กอิน Dataverse ของ Application Insights

  • ชื่อ/เป้าหมาย: ชื่อประเภทที่มีคุณสมบัติครบถ้วนสำหรับปลั๊กอินที่กำลังดำเนินการ
  • ระยะเวลา: จำนวนเวลาที่ใช้ในการดำเนินการปลั๊กอิน
  • ขนาดที่กำหนดเอง:
    • ความลึก: ความลึก ปัจจุบันของการดำเนินการในสแต็กการเรียก
    • EntityName: ชื่อของเอนทิตีที่กำลังดำเนินการโดยปลั๊กอิน
    • IsolationType: A ค่า ที่ระบุว่าปลั๊กอินกำลังถูกดำเนินการในแซนด์บ็อกซ์หรือไม่:
      • 1: ไม่มี
      • 2: Sandbox
      • 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: การสร้างบัญชี

การวัดและส่งข้อมูลทางไกลภายในโค้ดปลั๊กอินของคุณ

ในการทำความเข้าใจสิ่งที่เกิดขึ้น ภายใน โค้ดปลั๊กอินของคุณ คุณสามารถรวมข้อมูลระยะไกลแบบกำหนดเองจากภายในปลั๊กอินของคุณได้โดยใช้อินเทอร์เฟซ Microsoft.Xrm.Sdk.PluginTelemetry.ILogger ในโค้ดปลั๊กอินของคุณเพื่อเขียนข้อมูลระยะไกลโดยตรงไปยัง Application Insights ทรัพยากรของคุณ ข้อมูลเพิ่มเติม: เขียนการวัดและส่งข้อมูลทางไกลไปที่ ทรัพยากร Application Insights ของคุณ โดยใช้ ILogger (พรีวิว)

บันทึก Dataverse SDK

บันทึกเหล่านี้เป็นบันทึกสำหรับการดำเนินการ SDK ที่ทริกเกอร์โดยเป็นส่วนหนึ่งของคำขอที่เข้ามา สิ่งเหล่านี้ถูกบันทึกไว้ในตาราง การขึ้นต่อกัน ใน Application Insights เนื่องจากถูกติดตามเป็นการขึ้นต่อกันสำหรับคำขอที่จะดำเนินการ บันทึกจะถูกระบุด้วยชื่อชนิด ที่ขึ้นต้นด้วย SDK ต่อไปนี้เป็นการสอบถามตัวอย่าง:

dependencies
| where type startswith "SDK"
| take 10

SDK การสอบถามของ Application Insights

  • ประเภท : ประเภทของคำขอ SDK ที่ถูกเรียกใช้ ตัวอย่าง ได้แก่ Retrieve, RetrieveMultiple, FetchXmlToQueryExpression และ WhoAmI
  • ชื่อ/เป้าหมาย: นี่คือชื่อของเอนทิตีที่ถูกกำหนดเป้าหมายโดยการดำเนินการ SDK
  • ขนาดที่กำหนดเอง:
    • ClientType: ประเภทของไคลเอนต์ที่มาของการโทร ค่าที่เป็นไปได้บางค่า ได้แก่ Web, UCIClient และ OutlookFull
    • EntityId: ตัวระบุเฉพาะของเอนทิตีที่กำลังใช้
    • EntityName: ชื่อของเอนทิตีที่กำลังใช้งาน

ข้อยกเว้น

คุณจะเห็นรายละเอียดของความล้มเหลวในปลั๊กอินและการดำเนินการ SDK ใน Application Insights ตาราง ข้อยกเว้นใน ใน Application Insights ให้ความสามารถในแผง ความล้มเหลว รายละเอียดความล้มเหลวเหล่านี้สัมพันธ์กับเหตุการณ์ที่เหลือในการเรียกปลั๊กอินและ SDK ในมุมมองแบบครบวงจร ข้อมูลที่มีอยู่ทั้งหมดจะถูกเพิ่มลงในคอลัมน์เมื่อเป็นไปได้ และเพิ่มลงใน customDimensions เมื่อไม่มีคอลัมน์ที่ตรงกันทุกประการ

คุณจะสังเกตเห็นว่าบางส่วนของฟิลด์ในตาราง ข้อยกเว้น ไม่ถูกเติมข้อมูล เนื่องจากฟิลด์เหล่านี้สามารถตั้งค่าได้ก็ต่อเมื่อ Application Insights SDK ถูกใช้เพื่อปล่อยบันทึกจากแหล่งที่มา คุณลักษณะนี้รวบรวมการวัดและส่งข้อมูลทางไกลของแพลตฟอร์มแล้วส่งไปยัง Application Insights ให้สอดคล้องกับสคีมา Application Insights

ตารางข้อยกเว้นของ Application Insights

exceptions
| take 10

การสอบถามนี้จะส่งคืนรายละเอียดแอตทริบิวต์ทั้งหมดจากตาราง ข้อยกเว้น

  • problemId/type: ประเภทของข้อยกเว้น
  • outerMessage: ข้อความข้อยกเว้น
  • มิติที่กำหนดเอง:
    • clientType: ประเภทของไคลเอนต์ที่มาของการโทร ค่าที่เป็นไปได้บางค่า ได้แก่ Web, UCIClient และ OutlookFull
    • exceptionSource: ปลั๊กอินหรือจุดที่เกิดข้อยกเว้น
    • entityName: ชื่อของเอนทิตีที่กำลังใช้งาน
    • pluginName: ชื่อของปลั๊กอินที่เกิดข้อยกเว้น

รายละเอียดแอตทริบิวต์ตารางข้อยกเว้นของ Application Insights

หากผู้ใช้รายงานข้อผิดพลาด คุณสามารถใช้ รหัสผู้ใช้ (รหัสของ Microsoft Entra ID) เพื่อทำความเข้าใจรายละเอียดจากตาราง ข้อยกเว้น

exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

รหัสเอนทิตีและชื่อเอนทิตีมีอยู่ใน customDimensions ในตาราง การขึ้นต่อกัน

dependencies
| where type == "SDK Retrieve"

การสอบถามการเรียกข้อมูล SDK ของ Application Insights

คำถามที่ถามบ่อย (FAQs)

ต่อไปนี้เป็นคำถามที่พบบ่อยเกี่ยวกับเหตุการณ์การวัดและส่งข้อมูลทางไกลสำหรับ 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

ฉันสามารถดูรายละเอียดแนวลึกเกี่ยวกับข้อผิดพลาดหรือความล้มเหลวในเวลาที่กำหนด หรือสำหรับผู้ใช้เฉพาะเพื่อให้เข้าใจสแตกการเรียกได้หรือไม่

ดูที่แผง ความล้มเหลว ให้ภาพรวมของความล้มเหลวในช่วงเวลาที่กำหนด จากนั้นคุณสามารถจำกัดความล้มเหลวให้แคบลงตามการเรียก API หรือชนิดการขึ้นต่อกัน เพื่อดูมุมมองแบบครบวงจร

รายละเอียดของความล้มเหลวของ Application Insights

ฉันสามารถสร้างแดชบอร์ดแบบกำหนดเองได้หรือไม่

ใช่ คุณสามารถสร้าง แดชบอร์ดแบบกำหนดเอง ด้วย 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>