การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย
ทำให้การนำไปใช้งานสามารถสังเกตตรวจสอบได้ด้วยบันทึกแบบมีโครงสร้าง ID สำหรับเชื่อมโยง และการติดตามแบบกระจาย เพื่อแก้ไขข้อผิดพลาดข้ามบริการในไปป์ไลน์ CI/CD
การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
เสาหลักสามประการของการสังเกตระบบ
การสังเกตระบบตั้งอยู่บนเสาหลักสามประการ ได้แก่ เมตริก รายการบันทึก และ ร่องรอย
- เมตริก บอกคุณว่ามีบางอย่างผิดปกติ
- รายการบันทึก บอกคุณว่าเกิดอะไรขึ้น
- ร่องรอย บอกคุณว่าเหตุการณ์นั้นเกิดขึ้นที่ใดในลำดับการไหลของคำขอ
โดยทั่วไปการตรวจสอบไปป์ไลน์จะเริ่มจากเมตริก บทเรียนนี้จะเจาะลึกรายการบันทึกและร่องรอยมากขึ้น
เหตุใดจึงควรใช้การบันทึกแบบมีโครงสร้าง
บรรทัดรายการบันทึกข้อความธรรมดาค้นหาได้ยาก ส่วน รายการบันทึกแบบมีโครงสร้าง คือระเบียนที่เครื่องอ่านได้ ซึ่งโดยทั่วไปอยู่ในรูปแบบ JSON และมีฟิลด์ที่มีชื่อกำกับ
เครื่องมืออย่าง Loki, Elasticsearch หรือ Datadog สามารถกรอง รวมกลุ่ม และตั้งการแจ้งเตือนจากรายการบันทึกแบบมีโครงสร้างได้
แบบธรรมดากับแบบมีโครงสร้าง
ลองเปรียบเทียบบรรทัดที่ไม่มีโครงสร้างกับบรรทัดที่มีโครงสร้าง เวอร์ชันที่มีโครงสร้างช่วยให้คุณค้นหา status=500 ได้โดยตรง
// Unstructured
Deploy failed for service api at 12:01
// Structured (JSON)
{"level":"error","event":"deploy_failed","service":"api","status":500}การส่งออกรายการบันทึก JSON
ภาษาส่วนใหญ่มีตัวบันทึกแบบมีโครงสร้าง แนวคิดสำคัญคือให้บันทึกออบเจ็กต์ ไม่ใช่สตริงที่นำมาต่อกัน
const log = (level, event, fields) =>
console.log(JSON.stringify({ level, event, ...fields }));
log('info', 'deploy_started', { service: 'api', version: '1.4.2' });รหัสเชื่อมโยง
การปรับใช้ครั้งเดียวอาจเกี่ยวข้องกับหลายขั้นตอนและบริการ รหัสเชื่อมโยง (หรือรหัสการติดตาม) คือค่าที่ไม่ซ้ำกันซึ่งแนบกับรายการบันทึกทุกบรรทัดของการดำเนินการเชิงตรรกะหนึ่งรายการ
การค้นหาด้วยรหัสดังกล่าวจะช่วยสร้างเรื่องราวทั้งหมดขึ้นใหม่จากส่วนประกอบต่าง ๆ
- name: Set correlation id
run: echo "TRACE_ID=$(uuidgen)" >> $GITHUB_ENVระดับรายการบันทึก
ใช้ ระดับรายการบันทึก ให้สอดคล้องกัน เพื่อให้คุณปรับระดับรายละเอียดและการแจ้งเตือนได้:
debug— ข้อมูลวินิจฉัยโดยละเอียดinfo— เหตุการณ์ปกติwarn— ปัญหาที่กู้คืนได้error— ความล้มเหลวที่ต้องให้ความสนใจ
ตั้งการแจ้งเตือนสำหรับ error เก็บตัวอย่างจาก info และปิด debug ในระบบจริง
การติดตามแบบกระจายคืออะไร
การติดตามแบบกระจายติดตามคำขอขณะที่คำขอเดินทางผ่านบริการหลายรายการ แต่ละขั้นตอนคือ span และ span จะเชื่อมต่อกันเป็นร่องรอย
ร่องรอยจะแสดงลำดับเวลา รวมถึงระบุว่า span ใดทำงานช้าหรือเกิดข้อผิดพลาด ซึ่งมีประโยชน์อย่างยิ่งในการปรับใช้ไมโครเซอร์วิส
OpenTelemetry
OpenTelemetry (OTel) คือมาตรฐานที่ไม่ขึ้นกับผู้จำหน่ายสำหรับสร้างร่องรอย เมตริก และรายการบันทึก
เพิ่มเครื่องมือให้แอปของคุณด้วย OTel SDK แล้วส่งออกไปยังแบ็กเอนด์อย่าง Jaeger, Tempo หรือ APM บนคลาวด์
import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('deploy-service');
const span = tracer.startSpan('deploy');
// ... do work
span.end();การติดตามตัวไปป์ไลน์เอง
คุณสามารถติดตามได้ไม่เพียงแค่แอปของคุณ แต่รวมถึงไปป์ไลน์ด้วย เครื่องมือจะสร้าง span สำหรับแต่ละงานและขั้นตอน เพื่อให้คุณเห็นว่าขั้นตอนใดของ CI/CD เป็นคอขวด
วิธีนี้เปลี่ยนเวิร์กโฟลว์ที่ยาวให้กลายเป็นแผนภาพลำดับเวลาที่มองเห็นได้ว่าใช้เวลาไปกับส่วนใด
การรวมข้อมูลไว้ที่ศูนย์กลาง
ส่งรายการบันทึกและร่องรอยจากทุกงานและบริการไปยัง แพลตฟอร์มส่วนกลาง ตัวเรียกใช้งาน CI มีอายุการใช้งานชั่วคราว ดังนั้นรายการบันทึกที่เก็บไว้บนตัวเรียกใช้งานจะหายไปหลังการทำงานเสร็จสิ้น
ส่งต่อไปยังจุดรับรายการบันทึกระหว่างการทำงาน เพื่อให้สามารถวิเคราะห์หลังเหตุการณ์ได้แม้ตัวเรียกใช้งานจะหายไปแล้ว
จากสัญญาณสู่การลงมือทำ
การสังเกตระบบจะมีประโยชน์ก็ต่อเมื่อช่วยให้เกิดการลงมือทำ สร้างแดชบอร์ดที่แสดงอัตราข้อผิดพลาดและร่องรอยที่ทำงานช้า แล้วเชื่อมรูปแบบที่สำคัญเข้ากับการแจ้งเตือนที่คุณกำหนดค่าไว้แล้ว
เป้าหมายคือ จากการแจ้งเตือนเพียงครั้งเดียว ให้ไปยังร่องรอยและบรรทัดรายการบันทึกแบบมีโครงสร้างที่อธิบายสาเหตุได้โดยตรง
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับรายการบันทึกและร่องรอย
ทบทวน
คุณได้พัฒนาความสามารถในการสังเกตระบบด้วย รายการบันทึกและร่องรอย
- ส่งออก รายการบันทึกแบบมีโครงสร้าง (JSON) ด้วยระดับที่สอดคล้องกัน
- แนบ รหัสเชื่อมโยง เพื่อติดตามการดำเนินการหนึ่งรายการ
- ใช้การติดตามแบบกระจายและ OpenTelemetry เพื่อค้นหา span ที่ทำงานช้าหรือล้มเหลว
- รวมข้อมูลทั้งหมดไว้ที่ศูนย์กลางก่อนที่ตัวเรียกใช้งานชั่วคราวจะหายไป
สิ่งนี้ช่วยเสริมเมตริกและการแจ้งเตือน เพื่อให้มองเห็นไปป์ไลน์ได้อย่างครบถ้วน
คำถามที่พบบ่อย
บทเรียน “การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย”
ทำให้การนำไปใช้งานสามารถสังเกตตรวจสอบได้ด้วยบันทึกแบบมีโครงสร้าง ID สำหรับเชื่อมโยง และการติดตามแบบกระจาย เพื่อแก้ไขข้อผิดพลาดข้ามบริการในไปป์ไลน์ CI/CD คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กลยุทธ์การติดตามไปป์ไลน์
- การผสานรวมกับบริการภายนอก
- การตั้งค่าการแจ้งเตือน
- การบันทึกแบบมีโครงสร้างและการติดตามแบบกระจาย