Arquitetura do Demo
O OpenTelemetry Demo é composto por microsserviços escritos em diferentes linguagens de programação que se comunicam entre si via gRPC e HTTP, além de um gerador de carga que usa o Locust para simular tráfego de usuários.
graph TD subgraph Diagrama de serviços accounting(Accounting):::dotnet ad(Ad):::java agent(Agent):::python cache[(Cache<br/>Valkey)] cart(Cart):::dotnet chatbot(Chatbot):::python checkout(Checkout):::golang currency(Currency):::cpp email(Email):::ruby flagd(Flagd):::golang flagd-ui(Flagd-ui):::elixir fraud-detection(Fraud Detection):::kotlin frontend(Frontend):::typescript frontend-proxy(Frontend Proxy <br/>Envoy):::cpp image-provider(Image Provider <br/>nginx):::cpp load-generator([Gerador de carga]):::python mcp(MCP):::python payment(Payment):::javascript product-catalog(Product Catalog):::golang quote(Quote):::php recommendation(Recommendation):::python shipping(Shipping):::rust queue[(fila<br/>Kafka)]:::java react-native-app(React Native App):::typescript postgresql[(astronomy-db<br/>PostgreSQL)] chatbot -->|HTTP| agent agent -.->|HTTP| frontend agent -.->|HTTP| mcp ad --->|gRPC| flagd checkout -->|gRPC| currency checkout -->|gRPC| cart cart --> cache cart --->|gRPC| flagd checkout --->|gRPC| payment checkout --->|HTTP| email checkout -->|TCP| queue checkout ---->|gRPC| product-catalog checkout -->|HTTP| shipping shipping -->|HTTP| quote fraud-detection --->|gRPC| flagd frontend -->|gRPC| ad frontend ---->|gRPC| cart frontend -->|gRPC| currency frontend -->|gRPC| checkout frontend -->|HTTP| shipping frontend -->|gRPC| product-catalog frontend --->|gRPC| recommendation frontend-proxy -->|gRPC| flagd frontend-proxy -->|HTTP| flagd-ui frontend-proxy -->|HTTP| image-provider frontend-proxy -->|HTTP| frontend frontend-proxy -->|HTTP| chatbot mcp -->|HTTP| frontend payment --->|gRPC| flagd queue -->|TCP| fraud-detection recommendation -->|gRPC| product-catalog recommendation ----->|gRPC| flagd product-catalog --> postgresql Internet -->|HTTP| frontend-proxy load-generator -->|HTTP| frontend-proxy react-native-app -->|HTTP| frontend-proxy accounting --> postgresql queue -->|TCP| accounting end classDef dotnet fill:#311a7f,color:white; classDef cpp fill:#f34b7d,color:white; classDef elixir fill:#b294bb,color:black; classDef golang fill:#00add8,color:black; classDef java fill:#b07219,color:white; classDef javascript fill:#f1e05a,color:black; classDef kotlin fill:#6b57ff,color:white; classDef php fill:#4F5B93,color:white; classDef python fill:#82b043,color:white; classDef ruby fill:#701516,color:white; classDef rust fill:#dea584,color:black; classDef typescript fill:#e98516,color:black;
graph LR subgraph Legenda de serviços dotnetsvc(.NET):::dotnet cppsvc(C++):::cpp elixirsvc(Elixir):::elixir 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:#311a7f,color:white; classDef cpp fill:#f34b7d,color:white; classDef elixir fill:#b294bb,color:black; classDef golang fill:#00add8,color:black; classDef java fill:#b07219,color:white; classDef javascript fill:#f1e05a,color:black; classDef kotlin fill:#6b57ff,color:white; classDef php fill:#4F5B93,color:white; classDef python fill:#82b043,color:white; classDef ruby fill:#701516,color:white; classDef rust fill:#dea584,color:black; classDef typescript fill:#e98516,color:black;
Acesse estes links para ver o estado atual da instrumentação de logs, métricas e rastros das aplicações do demo.
O Collector é configurado no arquivo otelcol-config.yml, onde exporters alternativos podem ser configurados.
Ao executar com a pilha de observabilidade, o Collector também se conecta ao servidor OpAMP do demo por meio da extensão OpAMP e reporta sua integridade, versão, atributos e configuração efetiva. Abra a interface do OpAMP em http://localhost:8080/opamp/ e selecione a instância do Collector para ver o estado reportado.
graph TB
subgraph tdf[Fluxo de dados de telemetria]
subgraph subgraph_padding [ ]
style subgraph_padding fill:none,stroke:none;
%% padding to stop the titles clashing
subgraph od[OpenTelemetry Demo]
ms(Microsserviço)
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/>escutando em<br/>grpc://localhost:4317"/]
oc-http[/"OTLP Receiver<br/>escutando em <br/>localhost:4318<br/>"/]
oc-proc(Processors)
oc-spanmetrics[/"Span Metrics Connector"/]
oc-prom[/"OTLP HTTP Exporter"/]
oc-otlp[/"OTLP Exporter"/]
oc-opensearch[/"OpenSearch Exporter"/]
oc-grpc --> oc-proc
oc-http --> oc-proc
oc-proc --> oc-prom
oc-proc --> oc-otlp
oc-proc --> oc-opensearch
oc-proc --> oc-spanmetrics
oc-spanmetrics --> oc-prom
oc-opamp[/"OpAMP Extension"/]
end
oc-prom -->|"localhost:9090/api/v1/otlp"| pr-sc
oc-otlp -->|gRPC| ja-col
oc-opensearch -->|HTTP| os-http
subgraph op[Servidor OpAMP]
style op fill:#a6ce39,color:black;
op-srv["Servidor OpAMP"]
op-http[/"OpAMP HTTP<br/>escutando em<br/>localhost:8080/opamp/"/]
op-srv --> op-http
end
oc-opamp -->|"reporta o estado<br/>via WebSocket"| op-srv
op-b{{"Navegador<br/>Interface do OpAMP"}}
op-http -->|"localhost:8080/opamp/"| op-b
subgraph pr[Prometheus]
style pr fill:#e75128,color:black;
pr-sc[/"Prometheus OTLP Write Receiver"/]
pr-tsdb[(Prometheus TSDB)]
pr-http[/"Prometheus HTTP<br/>escutando em<br/>localhost:9090"/]
pr-sc --> pr-tsdb
pr-tsdb --> pr-http
end
pr-b{{"Navegador<br/>Interface do Prometheus"}}
pr-http ---->|"localhost:9090/graph"| pr-b
subgraph ja[Jaeger]
style ja fill:#60d0e4,color:black;
ja-col[/"Jaeger Collector<br/>escutando em<br/>grpc://jaeger:4317"/]
ja-db[(Jaeger DB)]
ja-http[/"Jaeger HTTP<br/>escutando em<br/>localhost:16686"/]
ja-col --> ja-db
ja-db --> ja-http
end
subgraph os[OpenSearch]
style os fill:#005eb8,color:black;
os-http[/"OpenSearch<br/>escutando em<br/>localhost:9200"/]
os-db[(Índice do OpenSearch)]
os-http ---> os-db
end
subgraph gr[Grafana]
style gr fill:#f8b91e,color:black;
gr-srv["Servidor Grafana"]
gr-http[/"Grafana HTTP<br/>escutando em<br/>localhost:3000"/]
gr-srv --> gr-http
end
pr-http --> |"localhost:9090/api"| gr-srv
ja-http --> |"localhost:16686/api"| gr-srv
os-http --> |"localhost:9200/api"| gr-srv
ja-b{{"Navegador<br/>Interface do Jaeger"}}
ja-http ---->|"localhost:16686/search"| ja-b
gr-b{{"Navegador<br/>Interface do Grafana"}}
gr-http -->|"localhost:3000/dashboard"| gr-b
end
endAs definições de Protocol Buffers estão no diretório /pb/.
Feedback
Esta página foi útil?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!