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 โดยการเพิ่มโค้ดลงในโปรแกรมเพื่อสร้างข้อมูลการติดตาม พวกเขาสร้างสิ่งที่เรียกว่าแอปพลิเคชันที่ใช้เครื่องมือ แอปพลิเคชันที่ใช้เครื่องมือสร้างสิ่งต่อไปนี้โดยอัตโนมัติ
- มี Span ID Trace ID แท็ก ข้อมูลบันทึก และ Span Context
- ติดตามทุกคำขอ
นักพัฒนาซอฟต์แวร์ใช้ 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 ได้แล้ววันนี้