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