Observability หน่วยสอดแนมที่จะช่วยชีวิต Devให้ไม่ต้องขอบตาดำ

PumsDev
odds.team
Published in
2 min readJan 15, 2024

จากงาน KubeDay Singapore มีหัวข้อนึงที่น่าสนใจมาก ๆ และอยากมาป้ายยาต่อ ก็คือหัวข้อ Distributed Tracing Integration with OpenTelemetry and Knative ซึ่งเนื้อหาหลักๆ เลยของหัวข้อนี้จะพูดถึงการทำ Observability และเครื่องมือที่เป็น opensource ที่ได้เป็นที่นิยมในช่วงนี้

ก่อนอื่นเลยมาพูดถึงเรื่องการทำ Observability กันก่อนว่าคืออะไร

นิยามของ Observability

“Observability refers to the ability to monitor, measure, and understand the state of a system or application by examining its outputs, logs, and performance metrics” (redhat)

ถ้าให้ลองจินตนาการถึงเว็บไซต์ขายสินค้าออนไลน์สักเว็บนึง เราจะรู้ได้อย่างไรว่าตอนนี้มีคนที่กำลังใช้งานอยู่ในระบบเรากี่คน แล้วกำลังใช้งานที่หน้าไหนอยู่ มีคนที่พยายามจะจ่ายเงินแต่ไม่สำเร็จไหม มีคนหยิบสินค้าใส่ตระกร้าแล้วแต่สินค้าหายไปรึเปล่า หรือ Landing page ของเราใช้เวลาในการเปิดนานเท่าไหร่ หรือลูกค้ากดจ่ายเงินไปแล้วแต่ขึ้นรายการไม่สำเร็จนั้นสาเหตุหลักของปัญหามาจากไหน ตัวอย่างทั้งหมดเหล่านี้ล้วนเป็นสิ่งที่ตัว Developer เองไม่สามารถรู้ได้เลย ถ้าเราไม่ได้ใช้เครื่องมือเพื่อคอยตรวจสอบการทำงานของระบบให้เรา และนั่นคือสิ่งที่เรียกว่า Observability

Observability Pillars

ส่วนประกอบที่สำคัญของการทำ Observability ได้แก่

Metrics

  • ข้อมูลเชิงปริมาณเปรียบเทียบในเชิงของเวลา เพื่อบอกถึงสถานะและปริมาณการใช้งานในแต่ละช่วงเวลา เช่น การใช้ CPU, Memory, Network traffic, Request latency ต่าง ๆ

Logs

  • ข้อมูลการทำงานของตัว application ส่วนใหญ่แล้วจะเป็นข้อมูลในส่วนของ error หรือ exception ที่เกิดขึ้นตอนที่ application กำลังทำงาน

Traces

  • ข้อมูลการ execution ของ request หรือ transaction ที่เข้ามาและส่งต่อกันไปในส่วนต่าง ๆ ภายใน application แบบเป็น step to step ทำให้สามารถตรวจสอบการทำงานของแต่ละ request ได้ว่าไปทำงานส่วนไหนบ้าง

OpenTelemetry

Cloud Native Landscape

ถ้าเราไปดูเครื่องมือที่เกี่ยวกับ Observability จากใน Cloud Native Landscape เราจะเจอว่ามีของอยู่เยอะแยะมากมายให้เราเลือก จนบางทีอาจจะสับสนไม่รู้จะเริ่มจากอะไร OpenTelemetry น่าจะเป็นหนึ่งในตัวเลือกที่เหมาะสมสำหรับการเริ่มต้นเพราะว่านอกจากจะเครื่องมือที่เป็น opensource แล้ว ยังเป็นเครื่องมือสำหรับการสามารถทำงานร่วมกับ tools อื่น ๆ ได้อีกมากมาย เช่น Jeager, Grafana, Prometheus โดยความสามารถหลัก ๆ ของ OpenTelemetry คือ

  • Generation telemetry
  • Collection telemetry
  • Management telemetry
  • Export telemetry

ส่วนเรื่องการจัดเก็บข้อมูล telemetry และการ render เป็น graph หรือเป็น UI Dashboard ก็จะเป็นหน้าที่ของ tools ตัวอื่น ๆ เช่น Opensearch หากใครสนใจเรื่อง opentelemetry ก็สามารถไปลองต่อได้ ที่นี่

Keyword อื่น ๆ ที่น่าสนใจจาก talk นี้

  • Knative = Open-Source Enterprise-level solution to build Serverless and Event Driven Application
  • Quarkus = Supersonic Subatomic Java

— — — — — — — — — — — — — — — — — — — — — — — — — — —

--

--