Skip to content

issarapong/OpenTelemetry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

10 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

OpenTelemetry Overview

๐Ÿ“š OpenTelemetry เธ„เธทเธญเธญเธฐเน„เธฃ?

OpenTelemetry (OTel) เน€เธ›เน‡เธ™เน€เธŸเธฃเธกเน€เธงเธดเธฃเนŒเธเนเธฅเธฐเธกเธฒเธ•เธฃเธเธฒเธ™เนเธšเธš Open Source เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธชเธฑเธ‡เน€เธเธ•เธเธฒเธฃเธ“เนŒ (Observability) เธ‚เธญเธ‡เธฃเธฐเธšเธš เธ—เธตเนˆเธŠเนˆเธงเธขเนƒเธซเน‰เน€เธฃเธฒเธชเธฒเธกเธฒเธฃเธ–เธ•เธดเธ”เธ•เธฒเธก เธงเธฑเธ”เธœเธฅ เนเธฅเธฐเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเธžเธคเธ•เธดเธเธฃเธฃเธกเธ‚เธญเธ‡เนเธญเธ›เธžเธฅเธดเน€เธ„เธŠเธฑเธ™เน„เธ”เน‰เธญเธขเนˆเธฒเธ‡เธ„เธฃเธšเธงเธ‡เธˆเธฃ

๐ŸŽฏ เธญเธ‡เธ„เนŒเธ›เธฃเธฐเธเธญเธšเธซเธฅเธฑเธเธ‚เธญเธ‡ OpenTelemetry

  1. Traces (เธเธฒเธฃเธ•เธดเธ”เธ•เธฒเธก) - เธ•เธดเธ”เธ•เธฒเธกเธเธฒเธฃเน€เธ”เธดเธ™เธ—เธฒเธ‡เธ‚เธญเธ‡ request เธœเนˆเธฒเธ™เธฃเธฐเธšเธšเธ•เนˆเธฒเธ‡เน†
  2. Metrics (เธ•เธฑเธงเธŠเธตเน‰เธงเธฑเธ”) - เน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเน€เธŠเธดเธ‡เธ•เธฑเธงเน€เธฅเธ‚ เน€เธŠเนˆเธ™ CPU, Memory, Request count
  3. Logs (เธšเธฑเธ™เธ—เธถเธ) - เธšเธฑเธ™เธ—เธถเธเน€เธซเธ•เธธเธเธฒเธฃเธ“เนŒเธ—เธตเนˆเน€เธเธดเธ”เธ‚เธถเน‰เธ™เนƒเธ™เธฃเธฐเธšเธš

๐Ÿ—๏ธ เธชเธ–เธฒเธ›เธฑเธ•เธขเธเธฃเธฃเธก OpenTelemetry

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           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)    โ”‚               โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ”‚
โ”‚                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”„ Data Flow Diagram: Application โ†’ Backend

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         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        โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŒŸ เธ›เธฃเธฐเน‚เธขเธŠเธ™เนŒเธ‚เธญเธ‡ OpenTelemetry

  • ๐Ÿ” Distributed Tracing: เธ•เธดเธ”เธ•เธฒเธกเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ‚เธญเธ‡ request เธœเนˆเธฒเธ™เธซเธฅเธฒเธข microservices
  • ๐Ÿ“Š Unified Observability: เธฃเธงเธšเธฃเธงเธก traces, metrics, เนเธฅเธฐ logs เนƒเธ™เธ—เธตเนˆเน€เธ”เธตเธขเธง
  • ๐Ÿ”Œ Vendor-Agnostic: เน„เธกเนˆเธœเธนเธเธเธฑเธš vendor เนƒเธ”เน€เธ‰เธžเธฒเธฐ เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญเน„เธ”เน‰เธ‡เนˆเธฒเธข
  • ๐Ÿš€ Performance Monitoring: เธงเธฑเธ”เธ›เธฃเธฐเธชเธดเธ—เธ˜เธดเธ เธฒเธžเนเธฅเธฐเธฃเธฐเธšเธธเธˆเธธเธ”เธ„เธญเธ‚เธงเธ”
  • ๐Ÿ› Debugging: เนเธเน‰เน„เธ‚เธ›เธฑเธเธซเธฒเน„เธ”เน‰เธฃเธงเธ”เน€เธฃเน‡เธงเธ‚เธถเน‰เธ™เธ”เน‰เธงเธขเธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเธฅเธฐเน€เธญเธตเธขเธ”
  • ๐Ÿ“ˆ Business Insights: เธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเธžเธคเธ•เธดเธเธฃเธฃเธกเธœเธนเน‰เนƒเธŠเน‰เนเธฅเธฐเธฃเธฐเธšเธš

๐Ÿ› ๏ธ เธเธฒเธฃเธ—เธณเธ‡เธฒเธ™เธ—เธตเธฅเธฐเธ‚เธฑเน‰เธ™เธ•เธญเธ™

  1. Application เธชเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅ: เนเธญเธ›เธžเธฅเธดเน€เธ„เธŠเธฑเธ™เธชเธฃเน‰เธฒเธ‡ telemetry data (traces/metrics/logs)
  2. SDK เธ›เธฃเธฐเธกเธงเธฅเธœเธฅ: OpenTelemetry SDK เธˆเธฑเธ”เธเธฒเธฃเนเธฅเธฐเน€เธ•เธฃเธตเธขเธกเธ‚เน‰เธญเธกเธนเธฅ
  3. Collector เธฃเธฑเธšเนเธฅเธฐเธ›เธฃเธฐเธกเธงเธฅเธœเธฅ: OTel Collector เธฃเธฑเธšเธ‚เน‰เธญเธกเธนเธฅ เธเธฃเธญเธ‡ เนเธฅเธฐเนเธ›เธฅเธ‡ format
  4. เธชเนˆเธ‡เน„เธ› Backend: Collector เธชเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเน„เธ›เธขเธฑเธ‡เธฃเธฐเธšเธš storage เธ•เนˆเธฒเธ‡เน†
  5. Visualization: เนเธชเธ”เธ‡เธœเธฅเธœเนˆเธฒเธ™ Grafana เธซเธฃเธทเธญเน€เธ„เธฃเธทเนˆเธญเธ‡เธกเธทเธญ visualization เธญเธทเนˆเธ™เน†

๐Ÿ“ฆ เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™

Node.js Express Application

เธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™ 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

เธ—เธ”เธชเธญเธš API

# เธ—เธ”เธชเธญเธš 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"}'

เน€เธ‚เน‰เธฒเธ–เธถเธ‡ UI

๐Ÿ“– เน€เธญเธเธชเธฒเธฃเน€เธžเธดเนˆเธกเน€เธ•เธดเธก

๐Ÿ”— เนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเน€เธžเธดเนˆเธกเน€เธ•เธดเธก


เธชเธฃเน‰เธฒเธ‡เน‚เธ”เธข: OpenTelemetry Community
เนƒเธšเธญเธ™เธธเธเธฒเธ•: Apache License 2.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors