0Pricing
C# Academy · บทเรียน

การติดตามแบบกระจาย

ติดตามคำขอข้ามบริการด้วย Activity

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

การติดตามแบบกระจายคืออะไร

การติดตามแบบกระจายจะติดตามคำขอหนึ่งรายการขณะเดินทางผ่านบริการและส่วนประกอบต่าง ๆ หน่วยงานแต่ละหน่วยจะกลายเป็นช่วงการทำงาน และช่วงการทำงานที่เชื่อมโยงกันจะรวมเป็นร่องรอย ซึ่งแสดงเป็นเส้นเวลาของการดำเนินงานที่ซ้อนกัน

ช่วงการทำงานและร่องรอย

ช่วงการทำงานมีชื่อ เวลาเริ่มต้นและเวลาสิ้นสุด คุณลักษณะ และสถานะ ช่วงการทำงานสามารถซ้อนกันได้ โดยช่วงการทำงานแม่ (คำขอ HTTP) จะมีช่วงการทำงาน child (การค้นหาฐานข้อมูลหรือการเรียกบริการภายนอก) ต้นไม้ทั้งหมดจะใช้รหัสร่องรอยเดียวกัน

กิจกรรมคือช่วงการทำงานของ .NET

ใน .NET คลาส System.Diagnostics.Activity เป็นการนำช่วงการทำงานของ OpenTelemetry ไปใช้งาน คุณสร้างกิจกรรมจาก ActivitySource ได้

using System.Diagnostics;

private static readonly ActivitySource Source =
    new("Checkout.Orders");

เริ่มกิจกรรม

StartActivityจะเริ่มช่วงการทำงาน ให้ครอบด้วย using เพื่อให้ช่วงการทำงานสิ้นสุดและบันทึกระยะเวลาเมื่อบล็อกสิ้นสุดการทำงาน

using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposed

เพิ่มแท็กให้ช่วงการทำงาน

แท็ก (คุณลักษณะ) จะเพิ่มบริบทแบบคีย์-ค่าให้กับช่วงการทำงาน เช่น รหัสคำสั่งซื้อหรือจำนวนเงิน ทำให้ค้นหาร่องรอยและทำความเข้าใจร่องรอยได้ง่ายขึ้น

activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);

บันทึกเหตุการณ์และสถานะ

ใช้ AddEvent สำหรับคำอธิบายประกอบ ณ จุดเวลาหนึ่ง และใช้ SetStatus เพื่อระบุความสำเร็จหรือความล้มเหลว ซึ่งช่วยแสดงข้อผิดพลาดในระบบปลายทางสำหรับการติดตามของคุณ

activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");

ลงทะเบียน ActivitySource

OpenTelemetry จะรวบรวมกิจกรรมจากแหล่งที่คุณลงทะเบียนด้วย AddSource เท่านั้น ดังนั้นให้แจ้งชื่อ ActivitySource ของคุณแก่ตัวติดตาม

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddSource("Checkout.Orders"));

การติดตั้งเครื่องมือวัดอัตโนมัติ

เครื่องมือวัดในตัวจะสร้างช่วงการทำงานสำหรับคำขอขาเข้าใน ASP.NET Core และการเรียก HttpClient ขาออกโดยอัตโนมัติ ทำให้คุณได้ร่องรอยพื้นฐานโดยไม่ต้องเขียนโค้ด

tracing
    .AddAspNetCoreInstrumentation()
    .AddHttpClientInstrumentation();

การส่งต่อบริบท

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

ความสัมพันธ์ระหว่างแม่และ child

เมื่อคุณเริ่มกิจกรรมขณะที่มีกิจกรรมอื่นกำลังทำงานอยู่ กิจกรรมใหม่จะกลายเป็นกิจกรรม child ผ่านทาง Activity.Current การซ้อนกันนี้จะสร้างต้นไม้ของร่องรอยโดยไม่ต้องเชื่อมโยงด้วยตนเอง

using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automatically

การสุ่มตัวอย่าง

การติดตามคำขอทุกรายการอาจมีค่าใช้จ่ายสูง การสุ่มตัวอย่างจะบันทึกเพียงบางส่วน เช่น 10% เพื่อควบคุมค่าใช้จ่ายในขณะที่ยังคงได้ข้อมูลที่เป็นตัวแทน

ตรวจสอบอย่างรวดเร็ว

ทดสอบการติดตามแบบกระจาย

สรุปทบทวน

การติดตามแบบกระจายจะติดตามคำขอผ่านช่วงการทำงานที่เชื่อมโยงกันและใช้รหัสร่องรอยร่วมกัน ใน .NET Activity คือช่วงการทำงานที่สร้างจาก ActivitySource ซึ่งลงทะเบียนไว้ ผ่านทาง StartActivity (ใช้ using เพื่อสิ้นสุดการทำงาน) เพิ่มบริบทด้วย SetTag, AddEvent และ SetStatus การติดตั้งเครื่องมือวัดอัตโนมัติร่วมกับการส่งต่อบริบทตามมาตรฐานเว็บจะเชื่อมร่องรอยข้ามบริการ ส่วนการสุ่มตัวอย่างจะช่วยควบคุมค่าใช้จ่าย

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

บทเรียน “การติดตามแบบกระจาย” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การติดตามแบบกระจาย”

ติดตามคำขอข้ามบริการด้วย Activity คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การติดตามแบบกระจาย” ใช้เวลานานแค่ไหน

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

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

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

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

  1. สามเสาหลักของการสังเกตระบบ
  2. การติดตามแบบกระจาย
  3. การรวบรวมเมทริกซ์
  4. การส่งออกไปยังระบบปลายทาง
← กลับไปที่ C# Academy