Demo Architecture

OpenTelemetry Demo is composed of microservices written in different programming languages that talk to each other over gRPC and HTTP; and a load generator which uses Locust to fake user traffic.

Service Diagram

gRPC

gRPC

gRPC

TCP

gRPC

gRPC

HTTP

gRPC

HTTP

gRPC

gRPC

gRPC

gRPC

gRPC

HTTP

gRPC

gRPC

gRPC

HTTP

HTTP

HTTP

gRPC

TCP

TCP

gRPC

gRPC

HTTP

HTTP

HTTP

HTTP

Accounting

Ad

Flagd

Checkout

Currency

Cart

queue
(Kafka)

Cache
(Valkey)

Payment

Email

Product Catalog

Shipping

Fraud Detection

Frontend

Recommendation

Frontend Proxy
(Envoy)

Flagd-ui

Image Provider
(nginx)

Quote

Internet

Load Generator

React Native App

Service Legend

.NET

C++

Go

Java

JavaScript

Kotlin

PHP

Python

Ruby

Rust

TypeScript

Follow these links for the current state of metric and trace instrumentation of the demo applications.

The collector is configured in otelcol-config.yml, alternative exporters can be configured here.

Telemetry Data Flow

Grafana

Jaeger

Prometheus

OTel Collector

OpenTelemetry Demo

OTLP
gRPC

OTLP
HTTP POST

localhost:9090/api/v1/otlp

gRPC

localhost:9090/graph

localhost:9090/api

localhost:16686/api

localhost:16686/search

localhost:3000/dashboard

Grafana Server

Microservice

OTLP Receiver
listening on
grpc://localhost:4317

OTLP Receiver
listening on
localhost:4318

Processors

OTLP HTTP Exporter

OTLP Exporter

Prometheus OTLP Write Receiver

Jaeger Collector
listening on
grpc://jaeger:4317

Prometheus TSDB

Prometheus HTTP
listening on
localhost:9090

Browser
Prometheus UI

Jaeger DB

Jaeger HTTP
listening on
localhost:16686

Grafana HTTP
listening on
localhost:3000

Browser
Jaeger UI

Browser
Grafana UI

Find the Protocol Buffer Definitions in the /pb/ directory.