Demo Architecture
You are viewing the English version of this page because it has not yet been fully translated. Interested in helping out? See Contributing.
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.
graph TD subgraph Service Diagram accounting(Accounting):::dotnet ad(Ad):::java cache[(Cache<br/>(Valkey))] cart(Cart):::dotnet checkout(Checkout):::golang currency(Currency):::cpp email(Email):::ruby flagd(Flagd):::golang flagd-ui(Flagd-ui):::typescript fraud-detection(Fraud Detection):::kotlin frontend(Frontend):::typescript frontend-proxy(Frontend Proxy <br/>(Envoy)):::cpp image-provider(Image Provider <br/>(nginx)):::cpp load-generator([Load Generator]):::python payment(Payment):::javascript product-catalog(Product Catalog):::golang quote(Quote):::php recommendation(Recommendation):::python shipping(Shipping):::rust queue[(queue<br/>(Kafka))]:::java react-native-app(React Native App):::typescript ad ---->|gRPC| flagd checkout -->|gRPC| cart checkout --->|TCP| queue cart --> cache cart -->|gRPC| flagd checkout -->|gRPC| shipping checkout -->|gRPC| payment checkout --->|HTTP| email checkout -->|gRPC| currency checkout -->|gRPC| product-catalog fraud-detection -->|gRPC| flagd frontend -->|gRPC| ad frontend -->|gRPC| cart frontend -->|gRPC| checkout frontend ---->|gRPC| currency frontend ---->|gRPC| recommendation frontend -->|gRPC| product-catalog frontend-proxy -->|gRPC| flagd frontend-proxy -->|HTTP| frontend frontend-proxy -->|HTTP| flagd-ui frontend-proxy -->|HTTP| image-provider Internet -->|HTTP| frontend-proxy load-generator -->|HTTP| frontend-proxy payment -->|gRPC| flagd queue -->|TCP| accounting queue -->|TCP| fraud-detection recommendation -->|gRPC| product-catalog recommendation -->|gRPC| flagd shipping -->|HTTP| quote react-native-app -->|HTTP| frontend-proxy end classDef dotnet fill:#178600,color:white; classDef cpp fill:#f34b7d,color:white; classDef golang fill:#00add8,color:black; classDef java fill:#b07219,color:white; classDef javascript fill:#f1e05a,color:black; classDef kotlin fill:#560ba1,color:white; classDef php fill:#4f5d95,color:white; classDef python fill:#3572A5,color:white; classDef ruby fill:#701516,color:white; classDef rust fill:#dea584,color:black; classDef typescript fill:#e98516,color:black;
graph TD subgraph Service Legend dotnetsvc(.NET):::dotnet cppsvc(C++):::cpp golangsvc(Go):::golang javasvc(Java):::java javascriptsvc(JavaScript):::javascript kotlinsvc(Kotlin):::kotlin phpsvc(PHP):::php pythonsvc(Python):::python rubysvc(Ruby):::ruby rustsvc(Rust):::rust typescriptsvc(TypeScript):::typescript end classDef dotnet fill:#178600,color:white; classDef cpp fill:#f34b7d,color:white; classDef golang fill:#00add8,color:black; classDef java fill:#b07219,color:white; classDef javascript fill:#f1e05a,color:black; classDef kotlin fill:#560ba1,color:white; classDef php fill:#4f5d95,color:white; classDef python fill:#3572A5,color:white; classDef ruby fill:#701516,color:white; classDef rust fill:#dea584,color:black; classDef typescript fill:#e98516,color:black;
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.
graph TB subgraph tdf[Telemetry Data Flow] subgraph subgraph_padding [ ] style subgraph_padding fill:none,stroke:none; %% padding to stop the titles clashing subgraph od[OpenTelemetry Demo] ms(Microservice) end ms -.->|"OTLP<br/>gRPC"| oc-grpc ms -.->|"OTLP<br/>HTTP POST"| oc-http subgraph oc[OTel Collector] style oc fill:#97aef3,color:black; oc-grpc[/"OTLP Receiver<br/>listening on<br/>grpc://localhost:4317"/] oc-http[/"OTLP Receiver<br/>listening on <br/>localhost:4318<br/>"/] oc-proc(Processors) oc-prom[/"OTLP HTTP Exporter"/] oc-otlp[/"OTLP Exporter"/] oc-grpc --> oc-proc oc-http --> oc-proc oc-proc --> oc-prom oc-proc --> oc-otlp end oc-prom -->|"localhost:9090/api/v1/otlp"| pr-sc oc-otlp -->|gRPC| ja-col subgraph pr[Prometheus] style pr fill:#e75128,color:black; pr-sc[/"Prometheus OTLP Write Receiver"/] pr-tsdb[(Prometheus TSDB)] pr-http[/"Prometheus HTTP<br/>listening on<br/>localhost:9090"/] pr-sc --> pr-tsdb pr-tsdb --> pr-http end pr-b{{"Browser<br/>Prometheus UI"}} pr-http ---->|"localhost:9090/graph"| pr-b subgraph ja[Jaeger] style ja fill:#60d0e4,color:black; ja-col[/"Jaeger Collector<br/>listening on<br/>grpc://jaeger:4317"/] ja-db[(Jaeger DB)] ja-http[/"Jaeger HTTP<br/>listening on<br/>localhost:16686"/] ja-col --> ja-db ja-db --> ja-http end subgraph gr[Grafana] style gr fill:#f8b91e,color:black; gr-srv["Grafana Server"] gr-http[/"Grafana HTTP<br/>listening on<br/>localhost:3000"/] gr-srv --> gr-http end pr-http --> |"localhost:9090/api"| gr-srv ja-http --> |"localhost:16686/api"| gr-srv ja-b{{"Browser<br/>Jaeger UI"}} ja-http ---->|"localhost:16686/search"| ja-b gr-b{{"Browser<br/>Grafana UI"}} gr-http -->|"localhost:3000/dashboard"| gr-b end end
Find the Protocol Buffer Definitions in the /pb/
directory.
Comentarios
¿Fue útil esta página?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!