0Pricing
React Academy · บทเรียน

การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง

ส่งต่อบริบทของร่องรอยผ่านคำขอ fetch เพื่อให้ช่วงร่องรอยฝั่งส่วนหลังปรากฏในร่องรอยเดียวกับการดำเนินการบนส่วนหน้าที่เป็นต้นเหตุ

การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

เป้าหมายของแทรซแบบกระจาย

เป้าหมายสูงสุดของการสังเกตการณ์ส่วนหน้าคือการมีแทรซเดียวที่เชื่อมโยงตั้งแต่การคลิกของผู้ใช้ใน React ผ่านเครือข่าย ผ่านตัวจัดการ API และการเรียกใช้บริการต่าง ๆ ไปจนถึงคำสั่งค้นหาฐานข้อมูลที่ทำให้การตอบสนองช้าลง แทรซตั้งแต่ต้นจนจบนี้ทำให้การวิเคราะห์สาเหตุรากทำได้ทันที

มาตรฐาน W3C TraceContext

ข้อกำหนด W3C TraceContext กำหนดรูปแบบส่วนหัว traceparent ดังนี้: version-traceId-parentSpanId-flags ค่าตัวอย่างมีลักษณะดังนี้: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 รหัสแทรซจะใช้ร่วมกันตลอดแทรซแบบกระจายทั้งหมด ส่วนรหัสสแปนแม่จะเปลี่ยนไปในแต่ละจุดเชื่อมต่อ

การฉีดส่วนหัวโดยอัตโนมัติ

เครื่องมือวัดคำขอเครือข่ายของ OpenTelemetry จะฉีดส่วนหัว traceparent ลงในคำขอเครือข่ายขาออกทุกคำขอโดยอัตโนมัติ ส่วนหัวนี้มีรหัสแทรซปัจจุบันและรหัสสแปนของสแปนคำขอเครือข่ายฝั่งส่วนหน้าในฐานะสแปนแม่ ทำให้แบ็กเอนด์สร้างสแปนลูกที่เชื่อมโยงกับสแปนฝั่งส่วนหน้าได้

การดำเนินแทรซต่อที่แบ็กเอนด์

บนเซิร์ฟเวอร์ เครื่องมือวัด HTTP ของ OpenTelemetry สำหรับ Node.js/Express จะอ่านส่วนหัว traceparent ที่เข้ามา และสร้างสแปนที่เป็นสแปนลูกของสแปนคำขอเครือข่ายฝั่งส่วนหน้า รหัสแทรซจะคงเดิม ดังนั้น Jaeger หรือ Grafana Tempo จะแสดงห่วงโซ่ทั้งหมด ได้แก่ สแปนเบราว์เซอร์ → สแปน Express → สแปนฐานข้อมูล ในมุมมองแผนผังน้ำตกเดียว

การดูแทรซใน Jaeger หรือ Grafana Tempo

เมื่อวัดทั้งส่วนหน้าและแบ็กเอนด์แล้ว ให้เปิด Jaeger หรือ Grafana Tempo และค้นหาด้วยรหัสแทรซ คุณจะเห็นแผนผังน้ำตกทั้งหมด ได้แก่ สแปนคอมโพเนนต์ React ด้านบน ตามด้วยสแปนคำขอเครือข่าย สแปนตัวจัดการเส้นทาง Express และสแปนคำสั่งค้นหาฐานข้อมูล โดยแต่ละรายการจะแสดงระยะเวลาและคุณลักษณะ

การเชื่อมโยงตามผู้ใช้

กำหนด user.id เป็นคุณลักษณะในสแปนทั้งหมดของแอป React โดยใช้ span.setAttribute('user.id', userId) ทำเช่นเดียวกันที่แบ็กเอนด์ จากนั้นคุณจะกรองระบบแบ็กเอนด์ด้านการสังเกตการณ์เพื่อแสดงแทรซทั้งหมดของผู้ใช้ ID ใด ID หนึ่งได้ ทำให้วินิจฉัยปัญหาที่ลูกค้ารายใดรายหนึ่งรายงานได้

การเชื่อมโยงตามเซสชัน

สร้าง ID เซสชันที่ไม่ซ้ำกันเมื่อโหลดหน้าเว็บ และกำหนดเป็น session.id ในสแปนทั้งหมดของส่วนหน้า ส่ง ID นี้ไปในส่วนหัวคำขอเพื่อให้แบ็กเอนด์เพิ่ม ID เดียวกันลงในสแปนของแบ็กเอนด์ด้วย การเชื่อมโยงเซสชันช่วยให้สร้างลำดับการกระทำทั้งหมดที่ผู้ใช้ทำในเซสชันเดียวขึ้นใหม่ได้

การเชื่อมโยงเซสชัน RUM กับแทรซ

เครื่องมือเชิงพาณิชย์อย่าง Datadog ผสานเซสชัน RUM เข้ากับแทรซ APM ได้โดยตรง SDK RUM ของ Datadog จะฉีดส่วนหัวเฉพาะ (X-Datadog-Trace-Id) ลงในคำขอเครือข่าย และ SDK APM ของ Datadog ที่แบ็กเอนด์จะอ่านส่วนหัวนี้เพื่อเชื่อมการเล่นเซสชัน RUM เข้ากับแทรซแบบกระจาย คุณจึงดูการเล่นเซสชันพร้อมกับแทรซได้ในเวลาเดียวกัน

ประโยชน์ของการเชื่อมโยงข้อมูล

ลองพิจารณาผู้ใช้ที่ร้องเรียนว่าการชำระเงินช้า เมื่อมีแทรซที่เชื่อมโยงกัน คุณจะค้นหาด้วย user.id ในระบบแบ็กเอนด์ด้านการสังเกตการณ์ พบแทรซของการชำระเงิน และเห็นได้ทันทีว่าความล่าช้าเกิดจากคำสั่งค้นหาฐานข้อมูลที่ใช้เวลา 900ms ซึ่งเชื่อมตารางขนาดใหญ่สองตารางเข้าด้วยกัน เป็นสิ่งที่มองไม่เห็นจากเมตริกส่วนหน้าเพียงอย่างเดียว

OpenTelemetry Collector ในฐานะพร็อกซี

เบราว์เซอร์ไม่สามารถส่งแทรซโดยตรงไปยัง Jaeger หรือระบบแบ็กเอนด์อื่น ๆ ได้ เนื่องจากข้อจำกัดของ CORS และความเสี่ยงที่ข้อมูลรับรองจะรั่วไหล ให้เรียกใช้ OpenTelemetry Collector เป็นพร็อกซีแทน โดยกำหนดค่า OTLPTraceExporter ให้ส่งข้อมูลไปยังจุดปลายทางของ Collector จากนั้น Collector จะกระจายข้อมูลต่อไปยัง Jaeger, Grafana Tempo หรือระบบแบ็กเอนด์อื่นใดก็ได้

ข้อควรพิจารณาด้านความเป็นส่วนตัว

แทรซจากส่วนหน้าอาจเก็บข้อมูลอ่อนไหวโดยไม่ตั้งใจ เช่น ค่าฟิลด์แบบฟอร์มใน URL, PII ในคุณลักษณะของสแปน และโทเค็นเซสชันในส่วนหัว ตรวจสอบการวัดระบบของคุณเพื่อให้แน่ใจว่าจะไม่มีข้อมูลอ่อนไหวรวมอยู่ในคุณลักษณะของสแปน ใช้ span.setAttribute เท่าที่จำเป็น และทำความสะอาดพารามิเตอร์คำค้นหาใน URL ก่อนบันทึก

รูปแบบส่วนหัว traceparent

ส่วนหัว traceparent ของ W3C TraceContext มีรูปแบบอย่างไร

ทบทวนบทเรียน

การเชื่อมโยงแทรซของส่วนหน้าและแบ็กเอนด์ทำให้มองเห็นเส้นทางคำขอของผู้ใช้ได้ตั้งแต่ต้นจนจบ ส่วนหัว traceparent ของ W3C TraceContext จะเชื่อมสแปนคำขอเครือข่ายของเบราว์เซอร์กับสแปนแบ็กเอนด์โดยอัตโนมัติผ่านเครื่องมือวัดของ OpenTelemetry เพิ่ม user.id และ session.id ลงในสแปนทั้งหมดเพื่อการแก้ไขจุดบกพร่องแบบเจาะจง ใช้ OpenTelemetry Collector เป็นพร็อกซีระหว่างเบราว์เซอร์กับแบ็กเอนด์ เพื่อหลีกเลี่ยงปัญหา CORS และการเปิดเผยข้อมูลรับรอง

คำถามที่พบบ่อย

บทเรียน “การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง”

ส่งต่อบริบทของร่องรอยผ่านคำขอ fetch เพื่อให้ช่วงร่องรอยฝั่งส่วนหลังปรากฏในร่องรอยเดียวกับการดำเนินการบนส่วนหน้าที่เป็นต้นเหตุ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสังเกตการณ์ส่วนหน้า: อะไรและเหตุใดจึงสำคัญ
  2. ร่องรอย OpenTelemetry จากเบราว์เซอร์
  3. การตรวจสอบผู้ใช้จริงและตัวชี้วัดเว็บ
  4. การเชื่อมโยงร่องรอยส่วนหน้าและส่วนหลัง
← กลับไปที่ React Academy