แชร์ผ่าน


มีข้อมูลใดบ้างสำหรับแอปแบบจำลอง

ข้อมูลประสิทธิภาพที่เกี่ยวข้องกับการโหลดเพจและคำขอเครือข่ายขาออก ส่วนติดต่อแบบรวม (UCI) พร้อมใช้งานสำหรับแอปแบบจำลอง

มีการโหลดหน้าประเภทใดบ้าง

พิมพ์ข้อความ มีข้อมูลประสิทธิภาพและการวินิจฉัย
โหลดแดชบอร์ด (UCI) – เบราว์เซอร์ ตกลง
โหลดแดชบอร์ด (UCI) – แบบฝัง ตกลง
โหลดแดชบอร์ด (UCI) - MobileApplication ตกลง
โหลดแดชบอร์ด (UCI) – MailApp ตกลง
โหลดแดชบอร์ด (UCI) - MobileApplication ตกลง
EditForm Load (UCI) – เบราว์เซอร์ ตกลง
EditForm Load (UCI) – แบบฝัง ตกลง
EditForm Load (UCI) – MailApp ตกลง
EditForm Load (UCI) - MobileApplication ตกลง
โหลดรายการเอนทิตี (UCI) – เบราว์เซอร์ ตกลง
โหลดรายการเอนทิตี (UCI) - แบบฝัง ตกลง
โหลดรายการเอนทิตี (UCI) – MailApp ตกลง
โหลดรายการเอนทิตี (UCI) - MobileApplication ตกลง
เปิดใช้แอป - (UCI) – เบราเซอร์ ตกลง
เปิดใช้แอป - (UCI) – แบบฝัง ตกลง
เปิดใช้แอป - (UCI) – MailApp ตกลง
เปิดใช้แอป - (UCI) – MobileApplication ตกลง
QuickCreateForm Load (UCI) – เบราว์เซอร์ ตกลง
QuickCreateForm Load (UCI) – แบบฝัง ตกลง
QuickCreateForm Load (UCI) – MailApp ตกลง
QuickCreateForm Load (UCI) – MobileApplication ตกลง
SaveForm ไม่สามารถใช้งานได้ในขณะนี้
การดำเนินการของปุ่มคำสั่ง ไม่สามารถใช้งานได้ในขณะนี้

ข้อมูลการโหลดหน้าอยู่ที่ไหน

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

มีคุณสมบัติอื่นๆ ใน customDimensions ที่ให้รายละเอียดเพิ่มเติมสำหรับการโหลดหน้า ส่วนติดต่อแบบรวม ตัวอย่างเช่น การสอบถามนี้ส่งคืนค่าสำหรับแอตทริบิวต์ทั้งหมดในตาราง pageViews

pageViews
| take 1

ตาราง pageViews ของ Application Insights

ตารางแอตทริบิวต์ pageViews ประกอบด้วย:

  • appModule: ชื่อโมดูลแอป
  • entityName: แอตทริบิวต์นี้แสดงเมื่อมีความเกี่ยวข้อง มีอยู่ในชนิดหน้า เช่น EditForm, EntityList และ Dashboards เมื่อเป็น ผูกกับเอนทิตี ในบางสถานการณ์ ฟอร์มไม่ได้ผูกกับเอนทิตีและค่าจะปรากฏเป็น ไม่ได้กำหนด
  • formId: formId ระบุฟอร์มโดยไม่ซ้ำกัน และสามารถใช้เพื่อเชื่อมโยงปัญหาที่ส่งผลต่อฟอร์มเฉพาะนั้น
  • hostType: เบราว์เซอร์/MobileApplication/Embedded
  • isBoot: นี่เป็นการโหลดครั้งแรกของเซสชันหรือไม่
  • loadType
    • 0: การเข้าชมหน้าเว็บบางประเภทเป็นครั้งแรก (เช่น การเข้าชมฟอร์มครั้งแรก)
    • 1: การเข้าชมการกำหนดค่าบางประเภทเป็นครั้งแรก (เช่น การเข้าชมฟอร์มบัญชี)
    • 2: การเข้าชมเรกคอร์ดบางประเภทเป็นครั้งแรก (เช่น การเข้าชมเรกคอร์ด A2)
    • 3: มีการเยี่ยมชม URL ที่แน่นอนนี้ ก่อนหน้านี้
  • navigationOrigin: ชนิดของหน้าที่ผู้ใช้นำทางมา
  • networkConnectivityState: อุปกรณ์มีการเชื่อมต่อหรือไม่
  • pageName: ชนิดของการโหลดหน้า
  • serverConnectivityState: แอปเชื่อมต่อกับเซิร์ฟเวอร์หรือไม่
  • syncRequestTime: เวลาที่ใช้ในการรอคำขอแบบซิงโครนัส
  • coldLatency: การประมาณค่าเวลาแฝงของเครือข่ายครั้งแรก ซึ่งรวมถึงเวลาแฮนด์เชค SSL
  • warmLatency: การประมาณค่าเวลาแฝงของเครือข่ายในภายหลัง ซึ่งเป็นเวลาแฝงที่คาดหวังโดยทั่วไปสำหรับแต่ละคำขอ
  • warmThroughput: ปริมาณงานโดยประมาณของเครือข่าย หน่วยเป็น Kbps

สำหรับเหตุการณ์ Microsoft Dataverse ฟิลด์ ID หรือ operation_ParentId ใน Application Insights คือ x-ms-service-request-idoperationId แมปไปยัง activityId ที่ส่วนหลังเพื่อวัตถุประสงค์ในการแก้ไขปัญหาและการร้องขอการสนับสนุน

มีข้อมูลประเภทใดบ้างสำหรับคำขอเครือข่ายขาออกของ UCI

สิ่งเหล่านี้เป็นการเรียกไปยังการขึ้นต่อกันอื่นๆ ที่ทำโดยส่วนติดต่อแบบรวม เพื่อแสดงหน้าบางหน้า พวกเขาอาจจะโทรออกไปยัง Dataverse หรือการบูรณาการอื่นๆ เช่น Azure DevOps หรือ Office ใช้การสอบถามต่อไปนี้เพื่อรับข้อมูลนี้ ซึ่งมีอยู่ในตารางการขึ้นต่อกันของคำขอ UCI:

dependencies
| where type == "UCI REQUEST"

ตารางการขึ้นต่อกันของคำขอ UCI มีฟิลด์ต่อไปนี้:

  • ชื่อ: URL ที่เรียกใช้โดยส่วนติดต่อแบบรวม

  • เป้าหมาย: ปัจจุบันเหมือนกับ ชื่อ

  • ความสำเร็จ: ไม่ว่าการโทรจะสำเร็จหรือล้มเหลว

  • รหัสผู้ใช้: Dataverse ID ผู้ใช้ระบบของผู้ใช้ที่ลงชื่อเข้าใช้

  • Duration: ระยะเวลาของการโทร

  • customDimensions: ประกอบด้วยแอตทริบิวต์ต่อไปนี้:

    Application Insights UCI REQUEST

    • appModule: AppModule ที่กำลังโทรออก
    • bodySize: ขนาดของการตอบสนอง เข้ารหัสและถอดรหัส
    • แคช: คำขอไปที่แคชในเครื่องหรือต้องไปที่เซิร์ฟเวอร์ วิธีนี้ใช้ไม่ได้ตามที่คาดไว้ หากผู้ใช้อยู่ในเบราว์เซอร์ Internet Explorer
    • ดาวน์โหลด: เวลาที่ใช้ในการดาวน์โหลดการตอบกลับ
    • การหยุด: เวลาที่คำขอกำลังรออยู่ในคิวของเบราว์เซอร์
    • ttfb: เวลาที่ใช้ในการรอการตอบกลับเริ่มต้น หรือที่เรียกว่า "เวลาถึงไบต์แรก" เวลานี้บันทึกเวลาแฝงของการเดินทางไปยังเซิร์ฟเวอร์นอกเหนือไปจากเวลาที่ใช้รอให้เซิร์ฟเวอร์ส่งการตอบกลับ
    • coldLatency: การประมาณค่าเวลาแฝงของเครือข่ายครั้งแรก ซึ่งรวมถึงเวลาแฮนด์เชค SSL
    • warmLatency: การประมาณค่าเวลาแฝงของเครือข่ายในภายหลัง ซึ่งเป็นเวลาแฝงที่คาดหวังโดยทั่วไปสำหรับแต่ละคำขอ
    • warmThroughput: ปริมาณงานโดยประมาณของเครือข่าย หน่วยเป็น Kbps

ค้นหาและวิเคราะห์สถานการณ์

เหตุใดผู้ใช้ของฉันบางคนจึงประสบกับความช้าในส่วนติดต่อแบบรวม

สถานการณ์หนึ่งที่การค้นหาและการวิเคราะห์มีค่าคือเมื่อผู้ใช้จากภูมิภาค (เช่น เอเชีย) รายงานว่าฟอร์มทำงานช้า ผู้ใช้รายนี้ที่อยู่ในเอเชีย อาจกำลังเข้าถึงสภาพแวดล้อมหรือองค์กรในอเมริกาเหนือ รายละเอียดแสดงเวลาโหลดรวมเพิ่มเติมจากระยะเวลาที่เกี่ยวข้องกับเครือข่าย เป็นไปได้ว่านี่เป็นสาเหตุของประสิทธิภาพที่ช้า ซึ่งผู้ใช้ได้รับ

คุณสามารถใช้แอตทริบิวต์ warmLatencywarmThroughput และ coldLatency เพื่อทำความเข้าใจการแบ่งเวลาที่ใช้ในการโหลดหน้าเว็บ และคำขอส่วนติดต่อแบบรวมอื่นๆ ตามที่แสดงในภาพต่อไปนี้

ความช้าของ Application Insights UCI

ในคำขอข้างต้น คำขอส่วนติดต่อแบบรวม ใช้เวลานานกว่าคำขอ Dataverse API (เว็บ API) จริง รายละเอียดในกรณีนี้คือ ระยะเวลาของการเรียก Dataverse API (56 ms) บวกกับค่าของ CustomDimensions.warmLatency (89 ms) ซึ่งรวมกันเกือบเท่าระยะเวลาของการดำเนินการทั้งหมด (144 ms) ค่า warmLatency บ่งบอกถึงความช้าสำหรับไคลเอ็นต์นั้นๆ และอาจเป็นปัญหาที่คุณสามารถวิเคราะห์ได้ที่ระดับผู้ใช้ โดยใช้การสอบถามต่อไปนี้:

dependencies
| where ['type'] == "UCI REQUEST"
| summarize avg(toint(customDimensions.warmLatency)), avg(toint(customDimensions.coldLatency)), avg(toint(customDimensions.warmThroughput)) by user_Id

pageViews
| summarize avg(toint(customDimensions.warmLatency)), avg(toint(customDimensions.coldLatency)), avg(toint(customDimensions.warmThroughput)) by user_Id

ฉันสามารถระบุได้ว่าผู้ใช้เข้าถึงระบบอย่างไร

แอตทริบิวต์ userAgent ในฟิลด์ customDimensions ในตาราง Application Insights คำขอ มีข้อมูลนี้ คุณสามารถใช้การสอบถามต่อไปนี้เพื่อดูภาพรวมของแหล่งที่มาต่างๆ ที่ผู้ใช้เข้าถึงระบบ:

pageViews
| summarize count() by tostring(customDimensions.userAgent), user_Id

dependencies
| where ['type'] == "UCI REQUEST"
เมื่อค่า customDimensions.userAgent เริ่มต้นด้วย ผู้ใช้เข้าใช้ระบบจากที่ไหน
Mozilla ชนิดเบราว์เซอร์ เวอร์ชัน
azure-logic-apps Azure Logic Apps
PowerApps Power Apps
Microsoft Office Excel Office Excel
พอร์ทัล พอร์ทัล
DynamicsDataIntegration การรวมข้อมูล Dynamics
XrmToolBox.exe XrmToolBox
PluginRegistration การลงทะเบียนปลั๊กอิน
LogicAppsDesigner ตัวออกแบบแอปเชิงตรรกะ
Apache-HttpClient ไคลเอ็นต์ Apache HTTP
Microsoft Flow Power Automate
UnifiedServiceDesk Unified Service Desk
PostmanRuntime Postman
OfficeGroupsConnector ตัวเชื่อมต่อกลุ่ม Office
Microsoft.Data.Mashup Power Query
Apache-Olingo Apache Olingo
Dalvik Android
จาการ์ตา Commons-Http จาการ์ต้า
Informatica Informatica
axios Axios
node-fetch NodeJS
LinkedInBot LinkedInBot

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

pageViews
| summarize count() by tostring(customDimensions.hostType)

รูปภาพต่อไปนี้แสดงตัวอย่างชุดผลลัพธ์จากการสอบถามนี้

ชุดผลลัพธ์ตัวอย่างของ Application Insights

ฉันจะจำกัดผู้ใช้ให้แคบลงได้อย่างไร

pageViews
| where user_Id == "[userid]"
| summarize count() by tostring(customDimensions.hostType)

ฉันจะใช้ Application Insights กับ Monitor ได้อย่างไร

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

union *
| where operation_Id contains "[ActivityIdHere]"

การตรวจสอบเป็นเครื่องมือแก้ไขข้อบกพร่องแบบเรียลไทม์ อย่างไรก็ตาม ข้อมูลอาจไม่พร้อมใช้งานภายในสองสามชั่วโมง

เหตุใดผู้ใช้จึงประสบปัญหากับฟอร์มเฉพาะ

ผู้ใช้สามารถแบ่งปัน ID เซสชันของพวกเขาจากส่วน เกี่ยวกับ ในส่วนติดต่อแบบรวมสำหรับองค์กรเฉพาะ

การตั้งค่า > เกี่ยวกับ

การตั้งค่า > เกี่ยวกับรหัสของเซสชัน

จากนั้นคุณสามารถใช้ ID นี้เพื่อค้นหาปัญหาโดยดูจากกิจกรรมทั้งหมดในเซสชันนั้น ใช้การสอบถามต่อไปนี้:

union *
| where session_Id == '[sessionIdHere]'

ฟอร์มใดที่ใช้ในตำแหน่งที่ตั้งต่างกัน และประสิทธิภาพการโหลดของฟอร์มในตำแหน่งที่ตั้งเหล่านี้เป็นอย่างไร

pageViews
| summarize avg(duration) by name, client_City, client_CountryOrRegion

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

มุมมอง เบราว์เซอร์ ของแผง ความล้มเหลว มีคำขอขาออกของส่วนติดต่อแบบรวม คำขอไปที่ Dataverse หรือองค์กรที่มี URL องค์กร อาจมีคำขออื่นๆ ที่ส่งไปยัง URL อื่น (สำหรับอินสแตนซ์ ในภาพต่อไปนี้ องค์กรมีการแก้ไข/ปรับปรุงตามคำสั่งงที่เรียกใช้ dc.services.visualstudio.com) คุณสามารถดูธุรกรรมแบบครบวงจร เพื่อตรวจสอบความล้มเหลวเพิ่มเติมสำหรับการโทรออกภายนอกเหล่านี้

เรียกดูแผงความล้มเหลว

ฉันสามารถตั้งค่าการแจ้งเตือนเกี่ยวกับเกณฑ์ประสิทธิภาพสำหรับการดำเนินการในฟอร์มบางอย่างได้หรือไม่ เมื่อได้รับการแจ้งเตือน จะอนุญาตให้ผู้สร้างวินิจฉัยและแก้ไขปัญหาได้หรือไม่

ใช่ คุณสามารถตั้งค่า การแจ้งเตือน ใน Application Insights เพื่อตรวจสอบความสมบูรณ์ของแอพพลิเคชันของคุณ