ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~12 นาที· อัปเดตล่าสุด

Observability — มองเห็นสิ่งที่เกิดในคลัสเตอร์

logs, events, metrics และเครื่องมือที่ใช้จริง

พื้นฐานที่ควรรู้: เมื่อมีปัญหาเกิดขึ้นในระบบ เราต้องการข้อมูลเพื่อหาสาเหตุ "ความสามารถในการสังเกตเห็น" (Observability) เป็นหลักการสำคัญที่บอกว่าเราควรเก็บข้อมูล Logs (บันทึกเหตุการณ์), Metrics (ตัวเลขสถิติ) และ Traces (เส้นทางการทำงาน) ให้พร้อมเสมอ

ขับรถโดยมีแผงหน้าปัด

รันระบบโดยไม่มี observability เหมือนขับรถหลับตา · logs = เสียงเครื่องยนต์, metrics = หน้าปัดวัดความเร็ว/น้ำมัน, events = ไฟเตือนบนแผงหน้าปัด

สามเสาหลักที่ต้องดูเป็น

  • Logskubectl logs <pod> (เติม -f ตามสด, --previous ดู log ก่อน crash)
  • Eventskubectl get events หรือท้าย kubectl describe บอกว่า K8s ทำอะไร/ทำไมล้มเหลว (Pending, OOMKilled, ImagePullBackOff)
  • Metricskubectl top pods/nodes (ต้องมี metrics-server) ดู CPU/RAM ใช้จริง

สรุป Key Takeaways

  • สามเสา: logs (kubectl logs), events (describe/get events), metrics (kubectl top)
  • อ่าน Pod STATUS ให้ออก: ImagePullBackOff / CrashLoopBackOff / OOMKilled / Pending
  • งานจริงใช้ Prometheus+Grafana, Loki/ELK, OpenTelemetry รวมศูนย์

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

เริ่มต้น observability ใน K8s ควรมีอะไรบ้าง

สามขา: Metrics (Prometheus + Grafana — มาตรฐานโดยพฤตินัย), Logs (รวมศูนย์ด้วย Loki/Fluent Bit — เพราะ log ใน pod หายตาม pod), Traces (เมื่อมี microservices หลายตัว — OpenTelemetry) — เริ่มจาก metrics+logs ก่อน traces ค่อยตามเมื่อระบบซับซ้อนขึ้น

kubectl logs ไม่พอตรงไหน ทำไมต้องมีระบบ log กลาง

สามเหตุผล: pod ถูกลบ/ย้ายเครื่อง log หายทันที, ค้นข้าม pod หลายตัวพร้อมกันไม่ได้, และเก็บย้อนหลังไม่ได้ — ระบบ log กลางเก็บทุกอย่างไว้ค้น/ทำ alert ได้แม้ pod ต้นทางตายไปแล้ว ซึ่งจำเป็นตอนสืบ incident เสมอ

อ่านจบแล้วอย่าลืมทำเครื่องหมาย