-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add demo doc pages, drop tmp git submodule (#2270)
- Loading branch information
Showing
43 changed files
with
3,057 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule opentelemetry-demo
deleted from
4b8bb4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
--- | ||
title: OpenTelemetry Demo Documentation | ||
linkTitle: Demo Documentation | ||
--- | ||
|
||
Welcome to the OpenTelemetry Demo! This folder contains overall documentation | ||
for the project, how to install and run it, and some scenarios you can use to | ||
view OpenTelemetry in action. | ||
|
||
## Table of Contents | ||
|
||
- [Guided Scenarios](#scenarios) | ||
- [Language Instrumentation Examples](#language-feature-reference) | ||
- [Quick Start](#running-the-demo) | ||
- [References](#reference) | ||
- [Service Documentation](#service-documentation) | ||
|
||
### Running the Demo | ||
|
||
Want to deploy the demo and see it in action? Start here. | ||
|
||
- [Docker]({{% relref "./docker_deployment.md" %}}) | ||
- [Kubernetes]({{% relref "./kubernetes_deployment.md" %}}) | ||
|
||
### Language Feature Reference | ||
|
||
Want to understand how a particular language's instrumentation works? Start | ||
here. | ||
|
||
| Language | Auto Instrumentation | Manual Instrumentation | | ||
|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------| | ||
| .NET | [Cart Service]({{% relref "services/cartservice/" %}}) | [Cart Service]({{% relref "services/cartservice/" %}}) | | ||
| C++ | | [Currency Service]({{% relref "services/currencyservice/" %}}) | | ||
| Erlang/Elixir | [Feature Flag Service]({{% relref "services/featureflagservice/" %}}) | [Feature Flag Service]({{% relref "services/featureflagservice/" %}}) | | ||
| Go | [Accounting Service]({{% relref "services/accountingservice/" %}}), [Checkout Service]({{% relref "services/checkoutservice/" %}}), [Product Catalog Service]( services/productcatalogservice/ ) | [Checkout Service]({{% relref "services/checkoutservice/" %}}), [Product Catalog Service]( services/productcatalogservice/ ) | | ||
| Java | [Ad Service]({{% relref "services/adservice/" %}}) | [Ad Service]({{% relref "services/adservice/" %}}) | | ||
| JavaScript | [Frontend]( services/frontend/ ) | [Frontend]({{% relref "services/frontend/" %}}), [Payment Service]({{% relref "services/paymentservice/" %}}) | | ||
| Kotlin | [Fraud Detection Service]( services/frauddetectionservice/ ) | | | ||
| PHP | [Quote Service]({{% relref "services/quoteservice/" %}}) | [Quote Service]({{% relref "services/quoteservice/" %}}) | | ||
| Python | [Recommendation Service]({{% relref "services/recommendationservice/" %}}) | [Recommendation Service]({{% relref "services/recommendationservice/" %}}) | | ||
| Ruby | [Email Service]({{% relref "services/emailservice/" %}}) | [Email Service]({{% relref "services/emailservice/" %}}) | | ||
| Rust | [Shipping Service]({{% relref "services/shippingservice/" %}}) | [Shipping Service]({{% relref "services/shippingservice/" %}}) | | ||
|
||
### Service Documentation | ||
|
||
Specific information about how OpenTelemetry is deployed in each service can be | ||
found here: | ||
|
||
- [Ad Service]({{% relref "services/adservice/" %}}) | ||
- [Cart Service]({{% relref "services/cartservice/" %}}) | ||
- [Checkout Service]({{% relref "services/checkoutservice/" %}}) | ||
- [Email Service]({{% relref "services/emailservice/" %}}) | ||
- [Feature Flag Service]({{% relref "services/featureflagservice/" %}}) | ||
- [Frontend]({{% relref "services/frontend/" %}}) | ||
- [Load Generator]({{% relref "services/loadgenerator/" %}}) | ||
- [Payment Service]({{% relref "services/paymentservice/" %}}) | ||
- [Product Catalog Service]({{% relref "services/productcatalogservice/" %}}) | ||
- [Quote Service]({{% relref "services/quoteservice/" %}}) | ||
- [Recommendation Service]({{% relref "services/recommendationservice/" %}}) | ||
- [Shipping Service]({{% relref "services/shippingservice/" %}}) | ||
|
||
### Scenarios | ||
|
||
How can you solve problems with OpenTelemetry? These scenarios walk you through | ||
some pre-configured problems and show you how to interpret OpenTelemetry data to | ||
solve them. | ||
|
||
We'll be adding more scenarios over time. | ||
|
||
- Generate a [Product Catalog error]({{% relref "feature_flags.md" %}}) for `GetProduct` requests | ||
with product id: `OLJCESPC7Z` using the Feature Flag service | ||
- Discover a memory leak and diagnose it using metrics and traces. [Read more]({{% relref "./scenarios/recommendation_cache.md" %}}) | ||
|
||
### Reference | ||
|
||
Project reference documentation, like requirements and feature matrices. | ||
|
||
- [Architecture]({{% relref "./current_architecture.md" %}}) | ||
- [Development]({{% relref "./development.md" %}}) | ||
- [Feature Flags Reference]({{% relref "./feature_flags.md" %}}) | ||
- [Metric Feature Matrix]({{% relref "./metric_service_features.md" %}}) | ||
- [Requirements](./requirements/) | ||
- [Screenshots]({{% relref "./demo_screenshots.md" %}}) | ||
- [Service Roles Table]({{% relref "./service_table.md" %}}) | ||
- [Span Attributes Reference]({{% relref "./manual_span_attributes.md" %}}) | ||
- [Tests]({{% relref "./tests.md" %}}) | ||
- [Trace Feature Matrix]({{% relref "./trace_service_features.md" %}}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
--- | ||
title: 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](https://locust.io/) to fake user traffic. | ||
|
||
```mermaid | ||
graph TD | ||
subgraph Service Diagram | ||
accountingservice(Accounting Service):::golang | ||
adservice(Ad Service):::java | ||
cache[(Cache<br/>(redis))] | ||
cartservice(Cart Service):::dotnet | ||
checkoutservice(Checkout Service):::golang | ||
currencyservice(Currency Service):::cpp | ||
emailservice(Email Service):::ruby | ||
frauddetectionservice(Fraud Detection Service):::kotlin | ||
frontend(Frontend):::typescript | ||
frontendproxy(Frontend Proxy <br/>(Envoy)):::cpp | ||
loadgenerator([Load Generator]):::python | ||
paymentservice(Payment Service):::javascript | ||
productcatalogservice(Product Catalog Service):::golang | ||
quoteservice(Quote Service):::php | ||
recommendationservice(Recommendation Service):::python | ||
shippingservice(Shipping Service):::rust | ||
featureflagservice(Feature Flag Service):::erlang | ||
featureflagstore[(Feature Flag Store<br/>(PostgreSQL DB))] | ||
queue[(queue<br/>(Kafka))] | ||
Internet -->|HTTP| frontendproxy | ||
frontendproxy -->|HTTP| frontend | ||
frontendproxy -->|HTTP| featureflagservice | ||
loadgenerator -->|HTTP| frontend | ||
accountingservice -->|TCP| queue | ||
checkoutservice --->|gRPC| cartservice --> cache | ||
checkoutservice --->|gRPC| productcatalogservice | ||
checkoutservice --->|gRPC| currencyservice | ||
checkoutservice --->|HTTP| emailservice | ||
checkoutservice --->|gRPC| paymentservice | ||
checkoutservice -->|gRPC| shippingservice | ||
checkoutservice ---->|TCP| queue | ||
frontend -->|gRPC| adservice | ||
frontend -->|gRPC| cartservice | ||
frontend -->|gRPC| productcatalogservice | ||
frontend -->|gRPC| checkoutservice | ||
frontend -->|gRPC| currencyservice | ||
frontend -->|gRPC| recommendationservice -->|gRPC| productcatalogservice | ||
frontend -->|gRPC| shippingservice -->|HTTP| quoteservice | ||
frauddetectionservice -->|TCP| queue | ||
adservice -->|gRPC| featureflagservice | ||
productcatalogservice -->|gRPC| featureflagservice | ||
recommendationservice -->|gRPC| featureflagservice | ||
shippingservice -->|gRPC| featureflagservice | ||
featureflagservice --> featureflagstore | ||
end | ||
classDef dotnet fill:#178600,color:white; | ||
classDef cpp fill:#f34b7d,color:white; | ||
classDef erlang fill:#b83998,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; | ||
``` | ||
|
||
```mermaid | ||
graph TD | ||
subgraph Service Legend | ||
dotnetsvc(.NET):::dotnet | ||
cppsvc(C++):::cpp | ||
erlangsvc(Erlang/Elixir):::erlang | ||
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 erlang fill:#b83998,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](https://github.com/open-telemetry/opentelemetry-demo/blob/main/docs/metric_service_features.md) | ||
and | ||
[trace](https://github.com/open-telemetry/opentelemetry-demo/blob/main/docs/trace_service_features.md) | ||
instrumentation of the demo applications. | ||
|
||
The collector is configured in | ||
[otelcol-config.yml](https://github.com/open-telemetry/opentelemetry-demo/blob/main/src/otelcollector/otelcol-config.yml), | ||
alternative exporters can be configured here. | ||
|
||
```mermaid | ||
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[Open Telemetry 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/>http://localhost:4318/<br/>https://localhost:4318/"/] | ||
oc-proc(Processors) | ||
oc-prom[/"Prometheus Exporter<br/>listening on<br/>http://localhost:9464/"/] | ||
oc-jag[/"Jaeger Exporter"/] | ||
oc-grpc --> oc-proc | ||
oc-http --> oc-proc | ||
oc-proc --> oc-prom | ||
oc-proc --> oc-jag | ||
end | ||
oc-prom -->|"http://localhost:9464/metrics"| pr-sc | ||
oc-jag -->|gRPC| ja-col | ||
subgraph pr[Prometheus] | ||
style pr fill:#e75128,color:black; | ||
pr-sc[/"Prometheus Scraper<br/>polling every 5 seconds"/] | ||
pr-tsdb[(Prometheus TSDB)] | ||
pr-http[/"Prometheus HTTP<br/>listening on<br/>http://localhost:9090"/] | ||
pr-sc --> pr-tsdb | ||
pr-tsdb --> pr-http | ||
end | ||
pr-b{{"Browser<br/>Prometheus UI"}} | ||
pr-http ---->|"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/>http://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/>http://localhost:3000"/] | ||
gr-srv --> gr-http | ||
end | ||
pr-http --> |"http://localhost:9090/api"| gr-srv | ||
ja-http --> |"http://localhost:16686/api"| gr-srv | ||
ja-b{{"Browser<br/>Jaeger UI"}} | ||
ja-http ---->|"http://localhost:16686/search"| ja-b | ||
gr-b{{"Browser<br/>Grafana UI"}} | ||
gr-http -->|"http://localhost:3000/dashboard"| gr-b | ||
end | ||
end | ||
``` | ||
|
||
Find the **Protocol Buffer Definitions** in the `/pb/` directory. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--- | ||
title: Features | ||
--- | ||
|
||
- **[Kubernetes](https://kubernetes.io)**: the app is designed to run on | ||
Kubernetes (both locally, as well as on the cloud) using a Helm chart. | ||
- **[Docker](https://docs.docker.com)**: this forked sample can also be executed | ||
only with Docker. | ||
- **[gRPC](https://grpc.io)**: microservices use a high volume of gRPC calls to | ||
communicate to each other. | ||
- **[HTTP](https://www.rfc-editor.org/rfc/rfc9110.html)**: microservices use HTTP | ||
where gRPC is unavailable or not well supported. | ||
- **[OpenTelemetry Traces](https://opentelemetry.io)**: all services are | ||
instrumented using OpenTelemetry available instrumentation libraries. | ||
- **[OpenTelemetry Metrics](https://opentelemetry.io)**: Select services are | ||
instrumented using OpenTelemetry available instrumentation libraries. More will | ||
be added as the relevant SDKs are released. | ||
- **[OpenTelemetry | ||
Collector](/docs/collector/getting-started)**: all | ||
services are instrumented and sending the generated traces and metrics to the | ||
OpenTelemetry Collector via gRPC. The received traces are then exported to the | ||
logs and to Jaeger; received metrics and exemplars* are exported to logs and Prometheus. | ||
- **[Jaeger](https://www.jaegertracing.io)**: all generated traces are being | ||
sent to Jaeger. | ||
- **Synthetic Load Generation**: the application demo comes with a background | ||
job that creates realistic usage patterns on the website using | ||
[Locust](https://locust.io/) load generator. | ||
- **[Prometheus](https://prometheus.io/)**: all generated metrics and exemplars | ||
are scraped by Prometheus. | ||
- **[Grafana](https://grafana.com/)**: all metric dashboards are stored in | ||
Grafana. | ||
- **[Envoy](https://www.envoyproxy.io/)**: Envoy is used as a reverse proxy for | ||
user-facing web interfaces such as the frontend, load generator, and feature | ||
flag service. | ||
|
||
_\*Only exemplars attached to histograms are currently exported to Prometheus. | ||
See [issue in the collector](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/18201) | ||
for details._ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
title: Demo Screenshots | ||
--- | ||
|
||
- [Demo Screenshots](.) | ||
- [Webstore](#webstore) | ||
- [Jaeger](#jaeger) | ||
- [Prometheus](#prometheus) | ||
- [Grafana](#grafana) | ||
- [Feature Flag UI](#feature-flag-ui) | ||
- [Load Generator UI](#load-generator-ui) | ||
|
||
## Webstore | ||
|
||
| Home Page | Checkout Screen | | ||
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | ||
| ![frontend-1](https://user-images.githubusercontent.com/15364991/194416314-d8210de5-814a-45b8-a47c-9d6bace51fa5.png) | ![frontend-2](https://user-images.githubusercontent.com/15364991/194416580-7f7ac8fe-85c0-462d-a896-6e0f6c95afac.png) | | ||
|
||
## Jaeger | ||
|
||
| Jaeger UI | Trace View | | ||
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | ||
| ![jaeger-ui](https://user-images.githubusercontent.com/15364991/194417029-1e40f276-8785-47fb-b645-c90820c0ff52.png) | ![jaeger-trace-view](https://user-images.githubusercontent.com/15364991/194416769-188acc26-71c9-4611-8150-aa8639f11217.png) | | ||
|
||
| System Architecture| | ||
| --- | | ||
|![jaeger-system-architecture](https://user-images.githubusercontent.com/47896520/196496223-6d6ea729-5bea-4a8c-a2c6-cd51cce386ae.png)| | ||
|
||
## Prometheus | ||
|
||
![prometheus](https://user-images.githubusercontent.com/47896520/196564627-ba9f5e91-a0fa-4bf0-beb1-f3a79ca309b5.png) | ||
|
||
## Grafana | ||
|
||
| Prometheus Data Source |Jaeger Data Source | | ||
| --- | --- | | ||
| ![grafana-prometheus](https://user-images.githubusercontent.com/47896520/196495466-86d3ce33-def4-4808-a6d9-3e32934bbf03.png) | ![gragana-jaeger](https://user-images.githubusercontent.com/47896520/196495509-c233d0d9-5e4c-4607-b609-dbf7869298d9.png) | | ||
|
||
## Feature Flag UI | ||
|
||
![feature-flag-ui](https://user-images.githubusercontent.com/47896520/196496050-22fbbb56-9e62-46dd-a23c-c34c5566f7d2.png) | ||
|
||
## Load Generator UI | ||
|
||
![load-generator-ui](https://user-images.githubusercontent.com/47896520/196496589-bda802fc-aada-4e72-a184-93bb4711abca.png) |
Oops, something went wrong.