Jaeger คืออะไร

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

เหตุใด Jaeger จึงมีความสำคัญ

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

ไมโครเซอร์วิส

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

  • บริการระบุตำแหน่งทางภูมิศาสตร์เพื่อตรวจสอบว่าลูกค้าอยู่ที่ไหน 
  • บริการที่รวบรวมและส่งคำสั่งซื้อไปยังร้านอาหาร  
  • เกตเวย์การชำระเงินที่มีตัวเลือกการชำระเงินที่หลากหลาย

 

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

การแก้ไขปัญหาสถาปัตยกรรมไมโครเซอร์วิส

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

 

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

Jaeger ใช้ทำอะไรได้บ้าง

นักพัฒนาใช้ Jaeger เพื่อปรับปรุงประสิทธิภาพของระบบแบบกระจายในหลายวิธี เราขอยกตัวอย่างให้บางส่วนด้านล่าง

การตรวจสอบธุรกรรมแบบกระจาย

Jaeger มีคุณสมบัติที่ติดตามการเคลื่อนไหวของข้อมูลระหว่างไมโครเซอร์วิส นักพัฒนาสามารถใช้แนวทางเชิงรุกเพื่อตรวจหาและแก้ไขปัญหาก่อนที่จะรบกวนประสบการณ์ของผู้ใช้

การเพิ่มประสิทธิภาพเวลาในการตอบสนอง

การวิเคราะห์ของ Jaeger สามารถระบุจุดคอขวดในไมโครเซอร์วิสที่ทำให้แอปพลิเคชันช้าลง นักพัฒนาใช้ Jaeger เพื่อตรวจสอบพฤติกรรมของไมโครเซอร์วิสและค้นหาวิธีที่จะทำให้เร็วขึ้น

การวิเคราะห์สาเหตุของปัญหา

ในสถาปัตยกรรมไมโครเซอร์วิส ปัญหาหนึ่งอาจนำไปสู่ปัญหาอื่นๆ นักพัฒนาสามารถใช้ Jaeger เพื่อค้นหาจุดเริ่มต้นของชุดปัญหาที่เกี่ยวข้องในแอปพลิเคชัน

การวิเคราะห์การพึ่งพาบริการ

การขึ้นต่อกันของบริการหมายความว่าแอปพลิเคชันต้องอาศัยส่วนประกอบหลายอย่างในการทำงาน ตัวอย่างเช่น แอปนำทางขึ้นอยู่กับบริการระบุตำแหน่งบนแอพมือถือ นักพัฒนาใช้ Jaeger เพื่อทำความเข้าใจความสัมพันธ์ที่ซับซ้อนระหว่างไมโครเซอร์วิสต่างๆ 

การเผยแพร่บริบทแบบกระจาย

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

Jaeger ทำงานอย่างไร

Jaeger ทำงานบนหลักการของการติดตามแบบกระจายและใช้เฟรมเวิร์ก OpenTracing

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

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

OpenTracing 

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

โมเดลข้อมูล OpenTracing

โมเดลข้อมูล OpenTracing ให้คำจำกัดความพื้นฐานในการเชื่อมต่อข้อมูลจากส่วนประกอบต่างๆ คำศัพท์หลักสองคำที่ใช้คือ Span และ Trace

Span 

Span เป็นหน่วยเชิงตรรกะเดียวของงานที่ทำในระบบการติดตามแบบกระจาย แต่ละ Span มีองค์ประกอบดังนี้

  • ชื่อปฏิบัติการ
  • เวลาเริ่มต้นและเวลาหยุด
  • แท็กหรือค่าที่ช่วยนักพัฒนาในการวิเคราะห์ช่วง
  • ข้อมูลบันทึกที่เก็บข้อความใดๆ ที่ไมโครเซอร์วิสสร้างขึ้น
  • บริบทของ Span หรือคำอธิบายเพิ่มเติมของ Span

Trace

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

  • ลูกค้าส่งคำสั่งซื้อ
  • กำลังดำเนินการชำระเงิน
  • รายการสั่งซื้อถูกส่งไปยังร้านอาหาร
  • รับอาหารแล้ว
  • ส่งอาหารแล้ว

องค์ประกอบของ Jaeger มีอะไรบ้าง

Jaeger กระจายแพลตฟอร์มการติดตามประกอบด้วยองค์ประกอบต่อไปนี้ 

ลูกค้า Jaeger

ไคลเอนต์ Jaeger มีการใช้งานเฉพาะภาษาของ OpenTracing API ในภาษาการเขียนโปรแกรมเช่น Go, JavaScript, Java, Python, Ruby และ PHP

นักพัฒนาใช้ API เหล่านี้เพื่อสร้าง Jaeger span โดยไม่ต้องเขียนซอร์สโค้ดสำหรับการติดตามแบบกระจาย 

Jaeger เจ้าหน้าที่

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

เจ้าหน้าที่เชื่อมต่อกับไคลเอ็นต์ในสภาพแวดล้อมคอนเทนเนอร์ เช่น Amazon Elastic Kubernetes Service กลุ่มเจ้าหน้าที่สร้างช่วงเป็นแบทช์และส่งไปยังตัวรวบรวม ซึ่งช่วยให้แอปพลิเคชันทำงานโดยไม่ต้องส่งข้อมูลการติดตามไปยังแบ็กเอนด์ Jaeger 

Jaeger collector 

Jaeger collector เป็นส่วนประกอบซอฟต์แวร์ที่ดึงข้อมูลการติดตามจากตัวรวบรวม Jaeger จะตรวจสอบ ประมวลผล และจัดเก็บการสืบค้นกลับในฐานข้อมูล

พื้นที่จัดเก็บ

ระบบติดตาม Jaeger รับช่วงและเก็บไว้ในแบ็กเอนด์หน่วยเก็บข้อมูลถาวรหรือฐานข้อมูล ที่เก็บข้อมูลถาวรหมายความว่าข้อมูลที่เก็บไว้จะยังคงไม่เสียหายแม้ว่าคอมพิวเตอร์จะปิดอยู่ ตัวอย่างเช่น นักพัฒนาใช้ AWS OpenSearch Service เป็นที่เก็บข้อมูลถาวรสำหรับการจัดเก็บและการรับช่วง

Ingester

วิธีหนึ่งในการปรับใช้ Jaeger คือการส่งข้อมูลการติดตามไปยัง Kafka ซึ่งเป็นระบบแบบกระจายสำหรับแอปพลิเคชันเพื่อจัดเก็บและเรียกข้อมูลสตรีม การนำเข้าคือโมดูลที่อ่านข้อมูลการติดตามจาก Kafka และจัดเก็บแยกไว้ต่างหาก 

การสืบค้น

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

คอนโซล Jaeger

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

นักพัฒนาใช้ Jaeger อย่างไร

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

 

  1. มี Span ID Trace ID แท็ก ข้อมูลบันทึก และ Span Context 
  2. ติดตามทุกคำขอ

 

นักพัฒนาซอฟต์แวร์ใช้ Jaeger Console เพื่อค้นหา กรอง แสดงภาพ และวิเคราะห์ข้อมูลการติดตามแบบกระจายนี้ พวกเขาสามารถใช้ซอฟต์แวร์ Jaeger UI เพื่อดูข้อมูลโดยละเอียด เช่น ระยะเวลาของกระบวนการ ข้อผิดพลาด และข้อมูลบันทึกจากไมโครเซอร์วิส 

กลยุทธ์การสุ่มตัวอย่าง Jaeger คืออะไร

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

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

AWS App Mesh คืออะไร

AWS App Mesh เป็นโครงข่ายบริการหรือโครงสร้างพื้นฐานของซอฟต์แวร์ที่จัดการภาระงานหนัก เพื่อให้คุณจัดการระบบแบบกระจายตามไมโครเซอร์วิสได้ง่ายขึ้น AWS App Mesh ทำสิ่งต่อไปนี้: 

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

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

เริ่มต้นใช้งาน Jaeger บน AWS โดยสร้างบัญชี AWS ได้แล้ววันนี้

ขั้นตอนถัดไปของ Jaeger บน AWS

ดูแหล่งข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์
เรียนรู้เพิ่มเติมเกี่ยวกับ AWS App Mesh 
ลงชื่อสมัครใช้บัญชีฟรี

รับสิทธิ์การเข้าถึง AWS Free Tier ได้ทันที 

ลงชื่อสมัครใช้งาน 
เริ่มต้นการสร้างใน Console

เริ่มต้นสร้างด้วย AWS ใน AWS Management Console

ลงชื่อเข้าใช้