
เมื่อต้นปีที่ผ่านมานั้น ทาง 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