จากที่ 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