บทนำ
เมื่อระบบของเรากลายเป็นระบบแบบ Microservices ที่มีหลายบริการทำงานร่วมกัน การติดตามว่า request ใดผ่านบริการใดบ้างในแต่ละช่วงเวลานั้นกลายเป็นเรื่องท้าทายมากขึ้น นี่คือจุดที่ “Distributed Tracing” เข้ามามีบทบาท และหนึ่งในเครื่องมือมาตรฐานที่ได้รับความนิยมสูงสุดในปัจจุบันก็คือ OpenTelemetry
Distributed Tracing คืออะไร?
Distributed Tracing คือกระบวนการในการติดตามและวิเคราะห์ flow ของ request ที่ไหลผ่านหลายบริการในระบบแบบกระจาย (distributed system) ซึ่งช่วยให้เราสามารถตอบคำถามได้ว่า:
- Request ใช้เวลานานเท่าไหร่?
- Service ใดเป็นคอขวดของระบบ?
- เกิด error ที่ service ใด?

OpenTelemetry คืออะไร?
OpenTelemetry (OTel) คือ framework แบบ open-source ที่ใช้สำหรับการเก็บข้อมูลเกี่ยวกับ observability ได้แก่:
- Trace
- Metrics
- Logs
โดยมีเป้าหมายเพื่อเป็นมาตรฐานกลางที่สามารถใช้กับเครื่องมืออื่น ๆ เช่น Jaeger, Zipkin, Prometheus, Grafana และ Datadog ได้อย่างยืดหยุ่น
องค์ประกอบของ Trace
- Trace: เส้นทางของ request หนึ่งรายการ
- Span: หน่วยย่อยของ trace เช่น การเรียก service, function หรือ query
- Context: ข้อมูลที่ใช้เชื่อมโยง spans เข้าด้วยกัน

วิธีใช้งาน OpenTelemetry
1. ติดตั้ง SDK
ตัวอย่างใน Node.js:
npm install @opentelemetry/api @opentelemetry/sdk-node \ @opentelemetry/auto-instrumentations-node
2. ตั้งค่า SDK
const { NodeSDK } = require('@opentelemetry/sdk-node'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()], }); sdk.start();
3. ส่งข้อมูลไปยัง Exporter
เช่น Jaeger, OTLP หรือ Console
npm install @opentelemetry/exporter-jaeger
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const exporter = new JaegerExporter({ serviceName: 'my-service', endpoint: 'http://localhost:14268/api/traces', });
ทำงานร่วมกับ Jaeger
- ใช้สำหรับแสดงผล trace ด้วย UI ที่เข้าใจง่าย
- สามารถติดตั้งผ่าน Docker ได้อย่างรวดเร็ว
docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp -p 6831:6831/udp -p 16686:16686 \ jaegertracing/all-in-one
เข้าดู Dashboard ได้ที่ http://localhost:16686
ประโยชน์ของ Distributed Tracing
- ติดตาม root cause ได้เร็วขึ้น
- เข้าใจ performance bottlenecks
- วิเคราะห์ระบบได้แบบ end-to-end
- เพิ่มความมั่นใจในระบบเมื่อทำการ deploy
สรุป
OpenTelemetry เป็นเครื่องมือมาตรฐานใหม่ที่ช่วยให้นักพัฒนาและทีม DevOps สามารถทำ Distributed Tracing ได้อย่างมีประสิทธิภาพ รองรับระบบขนาดใหญ่และทำงานร่วมกับเครื่องมืออื่นได้หลากหลาย ทำให้คุณเข้าใจระบบของคุณได้ลึกขึ้นและแก้ปัญหาได้เร็วขึ้น
บทความนี้ใช้เวลาอ่านประมาณ 10 – 15 นาที จัดทำโดยทีมงาน poolsawat.com