Telemetry Features

OpenTelemetry

  • OpenTelemetry Traces: all services are instrumented using OpenTelemetry available instrumentation libraries.
  • OpenTelemetry Metrics: select services are instrumented using OpenTelemetry available instrumentation libraries. More will be added as the relevant SDKs are released.
  • OpenTelemetry Logs: select services are instrumented using OpenTelemetry available instrumentation libraries. More will be added as the relevant SDKs are released.
  • OpenTelemetry Collector: 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.

Observability Solutions

  • Grafana: all metric dashboards are stored in Grafana.
  • Jaeger: all generated traces are being sent to Jaeger.
  • OpenSearch: all generated logs are sent to Data Prepper. OpenSearch will be used to centralize logging data from services.
  • Prometheus: all generated metrics and exemplars are scraped by Prometheus.

Environments

  • Docker: this forked sample can be executed with Docker.
  • Kubernetes: the app is designed to run on Kubernetes (both locally, as well as on the cloud) using a Helm chart.

Protocols

  • gRPC: microservices use a high volume of gRPC calls to communicate to each other.
  • HTTP: microservices use HTTP where gRPC is unavailable or not well supported.

Other Components

  • Envoy: Envoy is used as a reverse proxy for user-facing web interfaces such as the frontend, load generator, and feature flag service.
  • Locust: a background job that creates realistic usage patterns on the website using a synthetic load generator.
  • OpenFeature: a feature flagging API and SDK that allows for the enabling and disabling of features in the application.
  • flagd: a feature flagging daemon that is used to manage feature flags in the demo application.