Grafana Beyla เป็นเครื่องมือสำหรับจัดการข้อมูล observability ของ application แบบง่าย ๆ
เช่น application metric และ distributed tracing
ด้วยการสร้าง auto-instrumentation เพื่อดึงข้อมูลจาก eBPF (Extended Berkeley Packet Filter) ได้เลย
ทำให้ในฝั่ง application ไม่ต้องเพิ่ม code ใด ๆ เข้าไป
โดยใน Grafana Beyla นั้นสนับสนุน multi-process
จึงส่งผลให้ดึงข้อมูลของแต่ละ process ที่อยู่บนเครื่องเดียวกันได้
แสดงดังรูป
ดังนั้นเพิ่มความเข้าใจ จึงลองเขียน code และใช้งานกันหน่อย
โดยตัวอย่างของ application ที่สร้างมานั้น ประกอบไปด้วย
- พัฒนา web application ด้วยภาษา go
- ทำการ build และ run ตัวอย่างด้วย Docker compose
มาเริ่มกันเลย
ขั้นตอนที่ 1 สร้าง web application ด้วยภาษา go แบบปกติ
[gist id="e03aa89268366320f6295a2d2a443cab" file="main.go"]ขั้นตอนที่ 2 ทำการ build และ run ด้วย Docker compose
โดยทำการ config เพื่อใช้งาน Grafana Beyla
เพื่อดึงข้อมูล metric และ trace ของระบบงาน
ผ่านด้วยการระบุชื่อ container ไปได้เลยแบบง่าย ๆ ดังนี้
ขั้นตอนที่ 3 ทำการ run และดูผล
[gist id="e03aa89268366320f6295a2d2a443cab" file="1.txt"]รวมทั้งข้อมูลของ trace ที่พ่นออกมาเป็น text ใน log อีกด้วย
เป็นไปตามมาตฐานของ W3C Trace Context
ถ้า request ที่เรียกไม่มีข้อมูลการ trace ก็จะสร้างให้ใหม่นั่นเอง
เพียงเท่านี้ก็ได้ข้อมูล metric และ trace ของ web application มาแบบง่าย ๆ แล้ว
ไม่ต้องมาเขียน code เพิ่มแต่อย่างใด
ลองใช้งานกันดูครับ น่าสนใจดี
เพิ่มเติมรูปการทำงานนิดหน่อย
Reference Websites