เมื่อต้นปีที่ผ่านมานั้น ทาง OpenTelemetry ได้ปล่อย Go Auto-Instrumentation using eBPF ออกมา
ซึ่งเป็น beta version ให้ลองใช้งานกันดู
ช่วยให้นักพัฒนาไม่ต้องเป็นเขียน code เพิ่มเติม
สำหรับจัดการพวก log, trace และ metric เอง
ซึ่งช่วยอำนวยความสะดวกขึ้นเยอะมาก ๆ
โดย library สำหรับภาษา Java, Java และ Python ก็ทำได้แล้ว
ดังนั้นมาดูกันว่าเป็นอย่างไร และใช้งานอย่างไรบ้าง ?

เป้าหมายของ Go Auto instrumentation ประกอบไปด้วย

  • ใช้งานโดยไม่ต้องแก้ไข หรือ เพิ่ม code ให้น้อยที่สุด
  • สนับสนุน Go 1.12 ขึ้นไป
  • สามารถ config ผ่าน environment variable ของ OTEL* ได้เลย

โดยการทำงานภายในนั้น จะใช้งาน eBPF

มาลองใช้งานกันดู เป็นการดู distributed tracing กันหน่อย

ในการทดลองนั้นใช้ environment ดังนี้

  • Linux
  • Docker

การทดสอบทำแบบง่าย ๆ ดังนี้

ขั้นตอนที่ 1 สร้าง REST API ง่าย ๆ ด้วย Go + Echo ปกติ

โดยทำการ build และ run ด้วย Docker

ขั้นตอนที่ 2 ทำการสร้าง Go-Auto Instrumentation ขึ้นมา

โดยทำการระบบสิ่งต่าง ๆ ผ่าน environment variable ดังนี้

ขั้นตอนที่ 3 ทำการสร้าง LGTM stack ขึ้นมา เพื่อจัดเก็บและแสดงข้อมูล

ผลการทำงานใน Tempo เป็นดังนี้

ลองเล่นกันดูครับ น่าสนใจมาก ๆ
เพิ่มเติมใน GitHub :: opentelemetry-go-instrumentation