OpenTelemetry (OTel) เนเธเนเธเนเธเธฃเธกเนเธงเธดเธฃเนเธเนเธฅเธฐเธกเธฒเธเธฃเธเธฒเธเนเธเธ Open Source เธชเธณเธซเธฃเธฑเธเธเธฒเธฃเธชเธฑเธเนเธเธเธเธฒเธฃเธเน (Observability) เธเธญเธเธฃเธฐเธเธ เธเธตเนเธเนเธงเธขเนเธซเนเนเธฃเธฒเธชเธฒเธกเธฒเธฃเธเธเธดเธเธเธฒเธก เธงเธฑเธเธเธฅ เนเธฅเธฐเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธคเธเธดเธเธฃเธฃเธกเธเธญเธเนเธญเธเธเธฅเธดเนเธเธเธฑเธเนเธเนเธญเธขเนเธฒเธเธเธฃเธเธงเธเธเธฃ
- Traces (เธเธฒเธฃเธเธดเธเธเธฒเธก) - เธเธดเธเธเธฒเธกเธเธฒเธฃเนเธเธดเธเธเธฒเธเธเธญเธ request เธเนเธฒเธเธฃเธฐเธเธเธเนเธฒเธเน
- Metrics (เธเธฑเธงเธเธตเนเธงเธฑเธ) - เนเธเนเธเธเนเธญเธกเธนเธฅเนเธเธดเธเธเธฑเธงเนเธฅเธ เนเธเนเธ CPU, Memory, Request count
- Logs (เธเธฑเธเธเธถเธ) - เธเธฑเธเธเธถเธเนเธซเธเธธเธเธฒเธฃเธเนเธเธตเนเนเธเธดเธเธเธถเนเธเนเธเธฃเธฐเธเธ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Application Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโ--โ โ
โ โ Web App โ โ Mobile โ โ API โ โ Microserviceโ โ
โ โ โ โ App โ โ Gateway โ โ โ โ
โ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OpenTelemetry SDK/Agent โ โ
โ โ - Auto-instrumentation โ โ
โ โ - Manual instrumentation โ โ
โ โ - Context Propagation โ โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Export Telemetry Data
โ (gRPC/HTTP)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Collection Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OpenTelemetry Collector โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Receivers โ โ เธฃเธฑเธเธเนเธญเธกเธนเธฅ โ
โ โ โ - OTLP โ โ โ
โ โ โ - Jaeger โ โ โ
โ โ โ - Prometheus โ โ โ
โ โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโโโโโผโโโโโโโโโโโโโ โ โ
โ โ โ Processors โ โ เธเธฃเธฐเธกเธงเธฅเธเธฅ โ
โ โ โ - Batch โ โ โ
โ โ โ - Filter โ โ โ
โ โ โ - Attributes โ โ โ
โ โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโโโโโผโโโโโโโโโโโโโ โ โ
โ โ โ Exporters โ โ เธชเนเธเธเนเธญเธกเธนเธฅเธญเธญเธ โ
โ โ โ - Jaeger โ โ โ
โ โ โ - Prometheus โ โ โ
โ โ โ - Grafana โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Send to Backend
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Backend/Storage Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Jaeger โ โ Prometheus โ โ Grafana โ โ
โ โ (Traces) โ โ (Metrics) โ โ (Visualization)โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Loki โ โ Elasticsearchโ โ Tempo โ โ
โ โ (Logs) โ โ (Logs) โ โ (Traces) โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1. Application Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
โ Traces โ โ Metrics โ โ Logs โ
โ โ โ โ โ โ
โ - Spans โ โ - Counter โ โ - Info โ
โ - Context โ โ - Gauge โ โ - Warning โ
โ - Events โ โ - Histogramโ โ - Error โ
โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OpenTelemetry SDK โ
โ - Instrumentation โ
โ - Sampling (เธเธฒเธฃเธชเธธเนเธกเธเธฑเธงเธญเธขเนเธฒเธ) โ
โ - Context Propagation (เธเธฒเธฃเธชเนเธเธเนเธญ context) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Protocol: OTLP/gRPC or HTTP
โ Format: Protobuf/JSON
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 2. Collection Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ OpenTelemetry Collector โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 1: Receive โ โ
โ โ - เธฃเธฑเธเธเนเธญเธกเธนเธฅเธเธฒเธ SDK โ โ
โ โ - Validate format โ โ
โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโผโโโโโโโโโโโโโ โ
โ โ Step 2: Process โ โ
โ โ - Batch เธฃเธงเธกเธเนเธญเธกเธนเธฅ โ โ
โ โ - Filter เธเธฃเธญเธเธเนเธญเธกเธนเธฅ โ โ
โ โ - Enrich เนเธเธดเนเธกเธเนเธญเธกเธนเธฅ โ โ
โ โ - Sample เธชเธธเนเธกเธเธฑเธงเธญเธขเนเธฒเธ โ โ
โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโผโโโโโโโโโโโโโ โ
โ โ Step 3: Export โ โ
โ โ - เนเธเธฅเธ format โ โ
โ โ - Retry เธเนเธฒเธชเนเธเนเธกเนเธชเธณเนเธฃเนเธ โ โ
โ โ - Queue management โ โ
โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 3. Backend Storage Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Jaeger โ โ Prometheus โ โ Loki โ
โ โ โ โ โ โ
โ Store Traces โ โStore Metrics โ โ Store Logs โ
โ โ โ โ โ โ
โ - Spans โ โ - Counters โ โ - Log lines โ
โ - Services โ โ - Gauges โ โ - Timestamps โ
โ - Operations โ โ - Histograms โ โ - Labels โ
โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 4. Visualization Layer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโ
โ Grafana โ
โ โ
โ - Dashboards โ
โ - Alerts โ
โ - Query โ
โโโโโโโโโโโโโโโโโโ
- ๐ Distributed Tracing: เธเธดเธเธเธฒเธกเธเธฒเธฃเธเธณเธเธฒเธเธเธญเธ request เธเนเธฒเธเธซเธฅเธฒเธข microservices
- ๐ Unified Observability: เธฃเธงเธเธฃเธงเธก traces, metrics, เนเธฅเธฐ logs เนเธเธเธตเนเนเธเธตเธขเธง
- ๐ Vendor-Agnostic: เนเธกเนเธเธนเธเธเธฑเธ vendor เนเธเนเธเธเธฒเธฐ เธชเธฒเธกเธฒเธฃเธเนเธเธฅเธตเนเธขเธเนเธเธฃเธทเนเธญเธเธกเธทเธญเนเธเนเธเนเธฒเธข
- ๐ Performance Monitoring: เธงเธฑเธเธเธฃเธฐเธชเธดเธเธเธดเธ เธฒเธเนเธฅเธฐเธฃเธฐเธเธธเธเธธเธเธเธญเธเธงเธ
- ๐ Debugging: เนเธเนเนเธเธเธฑเธเธซเธฒเนเธเนเธฃเธงเธเนเธฃเนเธงเธเธถเนเธเธเนเธงเธขเธเนเธญเธกเธนเธฅเธเธตเนเธฅเธฐเนเธญเธตเธขเธ
- ๐ Business Insights: เธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธคเธเธดเธเธฃเธฃเธกเธเธนเนเนเธเนเนเธฅเธฐเธฃเธฐเธเธ
- Application เธชเนเธเธเนเธญเธกเธนเธฅ: เนเธญเธเธเธฅเธดเนเธเธเธฑเธเธชเธฃเนเธฒเธ telemetry data (traces/metrics/logs)
- SDK เธเธฃเธฐเธกเธงเธฅเธเธฅ: OpenTelemetry SDK เธเธฑเธเธเธฒเธฃเนเธฅเธฐเนเธเธฃเธตเธขเธกเธเนเธญเธกเธนเธฅ
- Collector เธฃเธฑเธเนเธฅเธฐเธเธฃเธฐเธกเธงเธฅเธเธฅ: OTel Collector เธฃเธฑเธเธเนเธญเธกเธนเธฅ เธเธฃเธญเธ เนเธฅเธฐเนเธเธฅเธ format
- เธชเนเธเนเธ Backend: Collector เธชเนเธเธเนเธญเธกเธนเธฅเนเธเธขเธฑเธเธฃเธฐเธเธ storage เธเนเธฒเธเน
- Visualization: เนเธชเธเธเธเธฅเธเนเธฒเธ Grafana เธซเธฃเธทเธญเนเธเธฃเธทเนเธญเธเธกเธทเธญ visualization เธญเธทเนเธเน
เธเธฑเธงเธญเธขเนเธฒเธเธเธฒเธฃเนเธเนเธเธฒเธ OpenTelemetry เธเธฑเธ Express.js เนเธเธเนเธเนเธกเธฃเธนเธเนเธเธเธเธฃเนเธญเธกเธเธฑเนเธ:
- Auto-instrumentation เธชเธณเธซเธฃเธฑเธ Express เนเธฅเธฐ HTTP
- Custom spans, attributes, เนเธฅเธฐ events
- Error tracking เนเธฅเธฐ exception handling
- Metrics collection
- Docker Compose stack เธเธฃเนเธญเธก Jaeger, Prometheus, เนเธฅเธฐ Grafana
๐ เธเธนเธเธฑเธงเธญเธขเนเธฒเธเนเธเนเธเนเธเธเนเธเนเธกเนเธเนเธเธตเน folder example/
โ
Auto-instrumentation: เธเธดเธเธเธฒเธกเธเธฒเธฃเธเธณเธเธฒเธเธเธญเธ Express เนเธฅเธฐ HTTP requests เธญเธฑเธเนเธเธกเธฑเธเธด
โ
Custom Spans: เธชเธฃเนเธฒเธ span เนเธเธดเนเธกเนเธเธดเธกเธชเธณเธซเธฃเธฑเธเธเธฒเธฃเธเธณเธเธฒเธเนเธเธเธฒเธฐ
โ
Attributes: เนเธเธดเนเธกเธเนเธญเธกเธนเธฅเนเธเธดเนเธกเนเธเธดเธกเนเธซเนเธเธฑเธ span
โ
Events: เธเธฑเธเธเธถเธเนเธซเธเธธเธเธฒเธฃเธเนเธชเธณเธเธฑเธเนเธ span
โ
Error Tracking: เธเธฑเธเนเธฅเธฐเธเธฑเธเธเธถเธ exceptions
โ
Metrics Export: เธชเนเธเธเนเธญเธกเธนเธฅ metrics เนเธเธขเธฑเธ collector
โ
Full Observability Stack: Docker Compose เธเธฃเนเธญเธก Jaeger, Prometheus, Grafana
# เนเธเนเธฒเนเธเธเธตเน folder example
cd example/
# เธเธดเธเธเธฑเนเธ dependencies
npm install
# เนเธฃเธดเนเธกเธเนเธ observability stack
docker-compose up -d
# เธฃเธฑเธเนเธญเธเธเธฅเธดเนเธเธเธฑเธ
npm start# เธเธเธชเธญเธ endpoint เธซเธฅเธฑเธ
curl http://localhost:3000/
# เธเธเธชเธญเธ endpoint เธเธตเนเธกเธต custom span
curl http://localhost:3000/api/users/123
# เธเธเธชเธญเธ POST request
curl -X POST http://localhost:3000/api/process \
-H "Content-Type: application/json" \
-d '{"data": "test data"}'- Jaeger UI (Traces): http://localhost:16686
- Prometheus (Metrics): http://localhost:9090
- Grafana (Visualization): http://localhost:3001 (admin/admin)
- เธเธณเธจเธฑเธเธเน OpenTelemetry (Vocabulary) - เธฃเธงเธกเธเธณเธจเธฑเธเธเนเธเธฃเนเธญเธกเธเธณเนเธเธฅเธ เธฒเธฉเธฒเนเธเธข เธเธฑเธเนเธฃเธตเธขเธเธเธฒเธก Layer
- เธเธฑเธงเธญเธขเนเธฒเธเธเธฒเธฃเนเธเนเธเธฒเธ Docker (Example) - เธเธฑเธงเธญเธขเนเธฒเธ Node.js Express เธเธฃเนเธญเธก Docker Compose Stack
- เธเธฑเธงเธญเธขเนเธฒเธเธเธฒเธฃเนเธเนเธเธฒเธ Kubernetes (Example K8s) - เธเธฑเธงเธญเธขเนเธฒเธเธเธฒเธฃ deploy เธเธ Kubernetes เธเธฃเนเธญเธก Helm Charts
เธชเธฃเนเธฒเธเนเธเธข: OpenTelemetry Community
เนเธเธญเธเธธเธเธฒเธ: Apache License 2.0