
จากที่ Deno 2.2 ปล่อยออกมานั้น
หนึ่งในความสามารถที่น่าสนใจคือ สนับสนุน OpenTelemetry แล้ว
ทำให้การจัดการ log, trace และ metric ของระบบงานง่ายขึ้น
โดยจะทำงานแบบ auto instrumentation หรือแบบอัตโนมัติโดยที่ไม่ต้องเขียน code เลย
แต่ถ้าต้องการ custom หรือสร้าง span ต่าง ๆ ก็ได้อีกด้วย
ดังนั้นมาลองใช้งานกัน
เริ่มด้วยการติดตั้งหรือ upgrade Deno ก่อน
ในการทดลองจะใช้งานร่วมกัน LGTM stack ผ่าน Docker

จากนั้นทำการสร้าง server.ts เป็น web server
และทำการเรียกใช้งาน service 2 ผ่าน fetch()
code ตัวอย่างเป็นดังนี้
คำอธิบาย
- ทำการสร้าง span ใหม่ขึ้นมาจาก current trace (active) สำหรับการทำงานของ function doWork()
จากนั้นในการ run ต้องเปิดใช้งาน OpenTelemetry ใน Deno ก่อน
ด้วยการกำหนด OTEL_DEMO=true
และ feature นี้ยังคงพัฒนาอยู่ท่านั้น อย่าใช้งานจริงนะครับ !!
ดังนั้นในการ run ให้ใส่ flag –unstable-otel เข้าไปด้วย
ตัวอย่างของ Dockerfile ของการ run server
ทำการ run ทั้งหมดด้วย Docker compose
โดยทำการกำหนดชื่อ service, url ที่จัดเก็บข้อมูลต่าง ๆ ใน LGTM stack
ผลการทำงานจะมี trace เข้ามาใน LGTM stack ดังนี้

เพียงเท่านี้ก็สามารถลองใช้งานแบบง่าย ๆ ได้แล้ว
แต่ยังมีข้อจำกัดพอสมควร เช่น
- ยังไม่สนับสนุน auto propagation ของ Deno.serve() และ fetch() ทำให้เมื่อเมื่อการเรียกข้าม service จะทำให้ trace ไม่เชื่อมต่อกัน
Code ตัวอย่างอยู่ที่ GitHub:Up1
Reference websites