- Published on
Observability Series ตอนที่ 1 — Observability คืออะไร ทำไมต้องทำ?
- Authors
- Name
- Somprasong Damyos
- @somprasongd
ซีรีส์นี้: สอนทำ Observability ครบ 3 มิติ (Logs, Traces, Metrics) ด้วยภาษา Go, Framework Fiber, เครื่องมือ OpenTelemetry, และ Stack ยอดนิยมอย่าง Grafana, Loki, Tempo, Prometheus
ทำไม Observability ถึงสำคัญ?
ทุกวันนี้ระบบ Software ไม่ได้รันอยู่บนเครื่องเดียวหรือ Server เดียวอีกต่อไป เรามี
- ระบบกระจาย (Distributed System)
- Microservices หลายตัว
- Cloud Infrastructure ที่ Dynamic
คำถาม: ถ้า Service หนึ่งพัง หรือข้อมูลผิด จะหาต้นเหตุยังไง?
ถ้าไม่มี Observability คุณอาจต้อง ssh
เข้าเครื่องไปไล่ดู log มือ หรือ debug โค้ดสด ๆ ซึ่งไม่ทันกินอีกต่อไป เพราะระบบสมัยนี้ซับซ้อนและเปลี่ยนแปลงตลอดเวลา
Monitoring vs Observability
ก่อนอื่นต้องแยกให้ออกระหว่าง Monitoring และ Observability
Monitoring | Observability |
---|---|
ตั้งค่าตรวจจับ (Alert) ว่ามีอะไรผิดปกติ เช่น CPU สูง | ตอบคำถามได้ ทำไม มันถึงสูง |
รู้อย่างเดียวว่าเกิดเหตุผิดปกติ | รู้ว่าเกิดที่ไหน เกิดยังไง และต้องแก้ตรงไหน |
ตัวอย่าง: มี Dashboard แสดง Error Rate | ตัวอย่าง: มี Trace และ Log เชื่อมโยงถึงกัน |
พูดง่าย ๆ คือ Monitoring = What, Observability = Why
สามองค์ประกอบของ Observability
Observability ที่ดีต้องครอบคลุม 3 สิ่งนี้
- Logs — ข้อความบันทึกเหตุการณ์ เช่น error, debug, info
- Metrics — ตัวเลขที่สรุปสถานะ เช่น Request/sec, CPU, Memory
- Traces — ร่องรอยการเดินทางของ Request ข้าม Services
เมื่อมีทั้งสาม คุณจะ
- เห็นภาพรวม
- เจาะลงไปดูรายละเอียดได้
- หาสาเหตุได้เร็ว
- แก้ไขปัญหาได้ไว
ทำไมต้องใช้ OpenTelemetry + Grafana Stack?
OpenTelemetry (OTel) เป็นมาตรฐานเปิดสำหรับเก็บ Logs, Metrics, Traces ในรูปแบบเดียวกัน
Grafana เป็น Visualization Tool ที่ครองตลาด
- Loki เก็บ Logs
- Tempo เก็บ Traces
- Prometheus หรือ Mimir เก็บ Metrics
ทั้งหมด Integrate กันได้ดี ใช้ง่าย มี Community ใหญ่ และฟรี!
สรุป
- Observability ช่วยให้เข้าใจ ทำไม ระบบทำงานผิดปกติ
- ครอบคลุม Logs + Metrics + Traces
- Stack ที่เราจะใช้ คือ Go + Fiber + OpenTelemetry + Loki + Tempo + Prometheus + Grafana
- ตอนถัดไป เราจะเริ่ม เก็บ Logs ด้วย Loki และดูผ่าน Grafana
- ตัวอย่างโค้ด: https://github.com/somprasongd/observability-demo-go
ตอนต่อไป
- ตอนที่ 2 — ส่ง Log เข้า Grafana ด้วย Loki
- ตอนที่ 3 — ทำ Tracing ด้วย OpenTelemetry และ Tempo
- ตอนที่ 4 — เก็บ Metrics ด้วย OpenTelemetry + OTLP Metric (gRPC)