デモのアーキテクチャ
OpenTelemetryデモ は、異なるプログラミング言語で書かれた複数のマイクロサービスから構成されており、gRPCとHTTPを使って相互に通信を行います。 さらに、負荷生成ツールが含まれており、Locustというツールを使用して、ユーザートラフィックを模擬的に生成します。
graph TD subgraph サービス図 accountingservice(会計サービス):::dotnet adservice(広告サービス):::java cache[(キャッシュ<br/>(Valkey))] cartservice(カートサービス):::dotnet checkoutservice(決済サービス):::golang currencyservice(通貨サービス):::cpp emailservice(メールサービス):::ruby flagd(Flagd):::golang flagdui(Flagd-ui):::typescript frauddetectionservice(不正検知サービス):::kotlin frontend(フロントエンド):::typescript frontendproxy(フロントエンドプロキシ <br/>(Envoy)):::cpp imageprovider(画像プロバイダー <br/>(nginx)):::cpp loadgenerator([負荷生成ツール]):::python paymentservice(支払いサービス):::javascript productcatalogservice(商品カタログサービス):::golang quoteservice(見積サービス):::php recommendationservice(レコメンデーションサービス):::python shippingservice(配送サービス):::rust queue[(キュー<br/>(Kafka))]:::java adservice ---->|gRPC| flagd checkoutservice -->|gRPC| cartservice checkoutservice --->|TCP| queue cartservice --> cache cartservice -->|gRPC| flagd checkoutservice -->|gRPC| shippingservice checkoutservice -->|gRPC| paymentservice checkoutservice --->|HTTP| emailservice checkoutservice -->|gRPC| currencyservice checkoutservice -->|gRPC| productcatalogservice frauddetectionservice -->|gRPC| flagd frontend -->|gRPC| adservice frontend -->|gRPC| cartservice frontend -->|gRPC| checkoutservice frontend ---->|gRPC| currencyservice frontend ---->|gRPC| recommendationservice frontend -->|gRPC| productcatalogservice frontendproxy -->|gRPC| flagd frontendproxy -->|HTTP| frontend frontendproxy -->|HTTP| flagdui frontendproxy -->|HTTP| imageprovider Internet -->|HTTP| frontendproxy loadgenerator -->|HTTP| frontendproxy paymentservice -->|gRPC| flagd queue -->|TCP| accountingservice queue -->|TCP| frauddetectionservice recommendationservice -->|gRPC| productcatalogservice recommendationservice -->|gRPC| flagd shippingservice -->|HTTP| quoteservice 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 サービスの凡例 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;
デモアプリケーションのメトリック と トレース の計装の現状については、リンクをご確認ください。
コレクターの設定は otelcol-config.yml で行われており、代替のエクスポーターをここで設定することができます。
graph TB subgraph tdf[テレメトリーデータフロー] subgraph subgraph_padding [ ] style subgraph_padding fill:none,stroke:none; %% タイトルの重複を防ぐためのパディング subgraph od[OpenTelemetryデモ] ms(マイクロサービス) end ms -.->|"OTLP<br/>gRPC"| oc-grpc ms -.->|"OTLP<br/>HTTP POST"| oc-http subgraph oc[OTelコレクター] style oc fill:#97aef3,color:black; oc-grpc[/"OTLPレシーバー<br/>リッスン先:<br/>grpc://localhost:4317"/] oc-http[/"OTLPレシーバー<br/>リッスン先:<br/>localhost:4318<br/>"/] oc-proc(プロセッサー) oc-prom[/"OTLP HTTPエクスポーター"/] oc-otlp[/"OTLPエクスポーター"/] 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書き込みレシーバー"/] pr-tsdb[(Prometheus TSDB)] pr-http[/"Prometheus HTTP<br/>リッスン先:<br/>localhost:9090"/] pr-sc --> pr-tsdb pr-tsdb --> pr-http end pr-b{{"ブラウザ<br/>Prometheus UI"}} pr-http ---->|"localhost:9090/graph"| pr-b subgraph ja[Jaeger] style ja fill:#60d0e4,color:black; ja-col[/"Jaegerコレクター<br/>リッスン先:<br/>grpc://jaeger:4317"/] ja-db[(Jaeger DB)] ja-http[/"Jaeger HTTP<br/>リッスン先:<br/>localhost:16686"/] ja-col --> ja-db ja-db --> ja-http end subgraph gr[Grafana] style gr fill:#f8b91e,color:black; gr-srv["Grafanaサーバー"] gr-http[/"Grafana HTTP<br/>リッスン先:<br/>localhost:3000"/] gr-srv --> gr-http end pr-http --> |"localhost:9090/api"| gr-srv ja-http --> |"localhost:16686/api"| gr-srv ja-b{{"ブラウザ<br/>Jaeger UI"}} ja-http ---->|"localhost:16686/search"| ja-b gr-b{{"ブラウザ<br/>Grafana UI"}} gr-http -->|"localhost:3000/dashboard"| gr-b end end
Protocol Bufferの定義は /pb/ ディレクトリにあります。
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!